Reproducing a production bug usually means running the bad request against the same data that caused it. Neon's branching gives you a full copy of your production data in seconds, on its own compute, so you can poke at it freely without affecting the live database.

Branch from now, or from when the bug happened

If you can still see the bad state in production, branch from main:

neon branches create --name repro-bug-1234 --parent main
neon connection-string repro-bug-1234

If the bug only existed for a window, branch from a point in time inside your history window (6 hours on Free, up to 7 days on Launch, up to 30 days on Scale):

neon branches create --name repro-pre-deploy \
  --parent 2026-04-25T09:00:00Z

Branch creation is copy-on-write: no data is copied at creation time, and the branch only diverges as you write. Reads pull from shared storage, so a 200 GB production database makes a 200 GB-equivalent test branch with no upfront storage cost.

Run the failing request against the branch

Point your local app or staging environment at the branch's connection string and replay the failing request. Because the branch has its own compute, an expensive EXPLAIN ANALYZE or a forced full table scan won't slow down production.

When you're done, delete the branch:

neon branches delete repro-bug-1234

What it costs

Branches included in your plan: 10 on Free and Launch, 25 on Scale. Extra branches are $1.50/branch-month, prorated hourly to roughly $0.002/hour. A two-hour debugging branch on a 0.25–1 CU autoscaling compute typically costs a few cents, plus storage for whatever it writes.

tip

For sensitive data, use schema-only branches or pair branching with data anonymization to keep PII out of dev environments.

How other providers compare

  • AWS RDS / Aurora: to reproduce a bug against real data, you restore from a snapshot or PITR into a new DB instance. Restore time scales with database size, and the new instance has its own full storage and instance-hour bill until you delete it.
  • Supabase: preview branches ship with no data from your main project by design, so reproducing a bug "against real data" means either seeding the branch from a seed.sql file or restoring PITR into a new project (PITR is a paid add-on).
  • Neon: branches share storage with the parent at creation time, so a 200 GB production database creates a 200 GB-equivalent branch in seconds with no upfront storage cost, only the writes diverge.

This is why Neon branches are particularly good for "branch from now, debug, throw away" workflows: the cost of trying something is essentially the cost of the writes you make.

Reproduce bugs on a Neon branch

Free plan, 10 branches per project, no credit card.