Supabase database client for Mac and Windows
Every Supabase project is a PostgreSQL database. plainDB connects to that database with the connection details Supabase already gives you, so you can browse tables, filter records, review staged grid edits and write SQL in a desktop workspace.
Choose the right connection for desktop work
These are the connection types Supabase publishes. Start with the session pooler for desktop browsing. Paste the exact connection string from your dashboard to keep the host, port and username together.
| Mode | Host | Port | User | When to use it |
|---|---|---|---|---|
| Direct | db.<project-ref>.supabase.co | 5432 | postgres | Networks with IPv6, or projects with the IPv4 add-on. |
| Session pooler default | <pooler-host-from-dashboard> | 5432 | postgres.<project-ref> | IPv4-only networks. Behaves like a normal Postgres session, so it is the right choice for a desktop client. |
| Transaction pooler | <pooler-host-from-dashboard> | 6543 | postgres.<project-ref> | Serverless apps. No prepared statements and no session state between transactions, so it is not the default choice for a desktop session. |
When a direct endpoint is unreachable
Supabase's direct connections are on IPv6. The IPv4 add-on is not dual-stack: enabling it swaps the project's IPv6 DNS record for an IPv4 one. If your network is IPv4-only and the project has no add-on, Supabase's own advice is to use session mode instead.
A failed connection does not identify the cause by itself. Check project status, endpoint details and network restrictions as well as IPv4/IPv6 reachability. The session pooler is a practical starting point for a desktop client on an IPv4 network.
What it does, and what it deliberately does not
Connecting to your project's Postgres
- Paste the dashboard's connection string; the app recognises Supabase hosts, sets the mode and region, and drops the [YOUR-PASSWORD] placeholder
- Keep the exact pooler endpoint from the dashboard instead of assembling a hostname by hand
- The preset selects require; add the CA certificate from your Database settings for verify-full
- Browse tables, filter rows, review staged grid edits, run SQL and export results with the permissions of your database role
Not part of this app
- Supabase Auth: users, providers, sessions
- Storage buckets and files
- Realtime channels, Edge Functions, the REST and GraphQL APIs
- Anon and service keys. They are API credentials, not database logins, and the app never asks for them
Supabase specifics
Which mode should I pick?
Session pooler, unless you know your network has IPv6 or your project has the IPv4 add-on, in which case direct works too. Leave the transaction pooler to applications.
Do I need the IPv4 add-on to use plainDB?
No. The session pooler is reachable over IPv4 without it.
Where does the region come from?
It is in the pooler host your dashboard shows, for example aws-0-ap-south-1.pooler.supabase.com. Paste the whole string to retain the exact endpoint. A region name alone is not enough to reconstruct the pooler hostname.
Which password?
The database password you set when creating the project, or reset under Project Settings, Database. Not the anon key, not the service role key, not your Supabase account password.
The connection says "Tenant or user not found".
The pooler could not match the user to a project. Check that the user is postgres.<project-ref> with your exact ref, and that the complete pooler host matches your dashboard. Pasting the dashboard string again is the quickest fix.
Connect with the right endpoint.
Connect to Supabase covers copying the string, the password, SSL, and what each failure message means.