Free PostgreSQL Connection String Validator & Troubleshooter

Validate and parse your PostgreSQL connection string, detect your provider, and fix the connection that won't connect — pooler vs direct, Supabase IPv6, SSL, and the most common error messages. Free and 100% client-side — your credentials never leave your browser.

Validate Your Connection String
Paste your PostgreSQL connection string below to validate the format, parse components, detect your database provider, and get troubleshooting tips for common connection problems.

Try an example:

Pooler vs. Direct Connection (Supabase)
Supabase exposes three connection options. The host and port decide which one you get — and whether it works on an IPv4-only network.
ConnectionHostPortIPBest for
Directdb.<ref>.supabase.co5432IPv6 (IPv4 add-on)Migrations & long-lived persistent servers
Session pooleraws-<region>.pooler.supabase.com5432IPv4Persistent backends on IPv4-only networks
Transaction pooleraws-<region>.pooler.supabase.com6543IPv4Serverless / edge functions

Pooler connections require the username format postgres.<project-ref> — the plain postgres user only works on the direct connection. The transaction pooler (6543) doesn't support prepared statements, so Prisma needs ?pgbouncer=true.

Connection String Formats & ORM Presets
The same database can be addressed with different connection-string formats. Replace the placeholders with your own values.

URI (standard)

postgresql://user:password@host:5432/database?sslmode=require

Key-value (libpq DSN)

host=host port=5432 dbname=database user=user password=password sslmode=require

JDBC

jdbc:postgresql://host:5432/database?user=user&password=password&sslmode=require

Prisma (pooled + direct)

DATABASE_URL="postgresql://user:password@host:6543/database?pgbouncer=true"
DIRECT_URL="postgresql://user:password@host:5432/database"

Use the pooled URL (transaction pooler) for Prisma Client and a direct URL for migrations. On Supabase serverless deployments (Vercel, Lambda), start with connection_limit=1 — it is Supabase guidance, not a universal requirement.

node-postgres / Drizzle

postgresql://user:password@host:5432/database?sslmode=require

In node-postgres, sslmode=require does NOT relax certificate checks like libpq — managed hosts (AWS RDS, Supabase) may throw "self-signed certificate". Pass ssl: { rejectUnauthorized: false } in the client config if you are not validating the CA.

Common Connection Errors & Fixes
The most frequent PostgreSQL connection errors, what causes them, and how to fix each one.
ErrorCauseFix
password authentication failed for user "…"Wrong username/password, or special characters in the password are not URL-encoded in a URI connection string.Re-check the credentials and URL-encode special characters in the password — @ becomes %40, # becomes %23, / becomes %2F, : becomes %3A.
could not translate host name "…" to addressDNS resolution failure — commonly a Supabase direct host (IPv6-only) reached from an IPv4-only network, or a typo in the hostname.Use the Supabase session (5432) or transaction (6543) pooler on aws-<region>.pooler.supabase.com (IPv4), enable the IPv4 add-on, or correct the hostname.
no pg_hba.conf entry for host "…", … no encryption (SSL off)The server only accepts SSL connections but the client connected without TLS.Add ?sslmode=require to the connection string. Managed hosts (Neon, AWS RDS 15+, DigitalOcean, Azure) enforce SSL by default.
server does not support SSL, but SSL was requiredThe client demanded SSL (e.g. sslmode=require) but the server has SSL turned off — common with a local Postgres.Enable SSL on the server, or set sslmode=disable when connecting to a trusted local/non-TLS server.
Connection refused — is the server running on host "…" port 5432?Nothing is listening on that host:port — server down, wrong port, or a firewall/security group is blocking it.Verify the host and port (DigitalOcean uses 25060, not 5432), confirm the server is running, and open the port in the firewall/security group.
FATAL: Tenant or user not found (Supabase)Connecting to the Supabase pooler with the plain "postgres" username.Use the pooler username format postgres.<project-ref> (e.g. postgres.abcdefgh).

Want the full walkthrough for each error? Read: How to Fix a PostgreSQL Connection String That Won't Connect.

Frequently Asked Questions

What is a PostgreSQL connection string?

A PostgreSQL connection string (also called a database URL or DSN) is a single URI that contains all the information needed to connect to a PostgreSQL database — the username, password, host, port, and database name.

Most database platforms like Supabase, Neon, AWS RDS, and Railway provide this string in their dashboard. It's the standard way to configure database connections in web applications, ORMs, and tools.

What is the format of a PostgreSQL connection string?

The standard format is:

postgresql://user:password@host:port/database?sslmode=require
user — database username
password — database password
host — server address
port — default 5432
database — database name
sslmode — SSL connection mode

Both postgresql:// and postgres:// prefixes are accepted.

Why won't my PostgreSQL connection string connect?

The most common causes are: special characters in the password that aren't URL-encoded (causing "password authentication failed"), a missing sslmode=require on a host that enforces SSL (causing "no pg_hba.conf entry … no encryption"), the wrong port, or a Supabase direct host that is IPv6-only on an IPv4-only network (causing "could not translate host name").

Paste your string above — the validator flags the missing or malformed parts, and the Common Connection Errors table lists the fix for each error message.

What is the difference between a pooler and a direct connection?

A direct connection opens a dedicated connection straight to Postgres — best for migrations and long-lived servers. A pooler (like Supabase's Supavisor or PgBouncer) sits in front of the database and reuses a small set of connections, which is essential for serverless and edge functions that open many short-lived connections.

On Supabase, the direct host db.<ref>.supabase.co:5432 is IPv6 by default, while the pooler host aws-<region>.pooler.supabase.com is IPv4 — port 5432 is session mode and 6543 is transaction mode.

Where do I find my PostgreSQL connection string?

  1. Go to your database provider's dashboard
  2. Navigate to the connection settings or database configuration section
  3. Look for "Connection string", "Database URL", or "Connection pooling URL"
  4. Copy the full connection string (starts with postgresql:// or postgres://)
  5. Make sure the string includes your password (may need to reveal or replace placeholder)

Need to sync API data to PostgreSQL?

Codeless Sync automatically syncs Stripe, QuickBooks, Xero & Paddle data to your PostgreSQL database. No code required — set up in 5 minutes.