Open your project in the Neon Console, click Connect on the Project Dashboard, and turn the Connection pooling toggle on. The hostname in the connection string gains a -pooler suffix, which routes traffic through Neon's PgBouncer pool. The toggle is on by default for new projects.
Get the pooled string
- Sign in to the Neon Console and select your project.
- On the Project Dashboard, click Connect.
- Pick a Branch, Compute, Database, and Role.
- Make sure Connection pooling is on.
- Copy the connection string.
A pooled URL looks like:
postgresql://alex:AbC123dEf@ep-cool-darkness-a1b2c3d4-pooler.us-east-2.aws.neon.tech/dbname?sslmode=require&channel_binding=requireThe direct URL for the same compute is identical except the hostname has no -pooler:
postgresql://alex:AbC123dEf@ep-cool-darkness-a1b2c3d4.us-east-2.aws.neon.tech/dbname?sslmode=require&channel_binding=requireSee Connect from any app for the field-by-field breakdown.
Pooled vs direct: which one to use
Neon's pooled endpoint supports up to 10,000 concurrent client connections by multiplexing them over a smaller pool of real Postgres connections. Use it when you'd otherwise exhaust max_connections (104 on a 0.25 CU compute, 419 on a 1 CU compute).
| Use case | Use this |
|---|---|
| Serverless functions (Vercel, AWS Lambda, Cloudflare Workers) | Pooled |
| Web apps with many short-lived connections | Pooled |
| ORMs (Prisma, Drizzle) in production | Pooled |
Schema migrations and pg_dump | Direct |
LISTEN/NOTIFY | Direct |
| Logical replication | Direct |
| Long-running analytics or session-level features | Direct |
The pooled endpoint runs PgBouncer in transaction mode, which means session-level features like SET, LISTEN/NOTIFY, and SQL PREPARE aren't available. Use a direct connection for those.
See Connection pooling for the full guidance, including the connection limits per compute size.
You can use both
A common pattern is to use the pooled URL for runtime queries and the direct URL for migrations. Most app frameworks let you set two environment variables (for example, DATABASE_URL for pooled, DIRECT_URL for direct). Prisma's directUrl field is one such example.

Pool sizes by compute, transaction-mode caveats, and monitoring pooler activity.








