Short answer

Neon clones a Postgres database in seconds by creating a branch. A branch is a writable copy of your data at a specific point in time, but no data is physically copied at creation. Storage diverges only as you write to the branch, so you pay for the delta, not a full duplicate.

How instant cloning works

In a typical setup, cloning a production database means running pg_dump, transferring the file, and restoring it onto another instance. For a 100 GB database, that can take hours and doubles your storage cost.

Neon separates storage from compute and treats storage like a versioned filesystem. When you create a branch, Neon records a pointer to the parent's state. The new branch gets its own compute and connection string, but reads from the same underlying data pages. Only the pages your branch writes are stored separately. The child branch storage section in the pricing docs explains the billing math: you pay for the smaller of the delta or your logical data size.

Creating a branch

Three ways to clone:

neon branches create --name dev/feature-x --parent main

The new branch has its own connection string and a time-to-live you can set to 1 hour, 1 day, or 7 days so test branches auto-delete.

Plan limits

  • Free: 10 branches per project, 0.5 GB storage cap
  • Launch: 10 branches included, extra branches at $1.50/branch-month (prorated hourly)
  • Scale: 25 branches included, same overage rate

How other Postgres options compare

  • Amazon Aurora. Aurora cloning is the closest analog. It uses a copy-on-write protocol on Aurora's distributed storage, so cloning a large database doesn't duplicate the data up front. Clones are cluster-level objects, billed as full Aurora clusters, and limited to the same AWS Region.

  • Amazon RDS for PostgreSQL. No native instant clone. The standard workflow is to take a snapshot and restore it to a new DB instance, which copies the full dataset and runs at instance-pricing rates from minute one.

  • Supabase. Supabase Branching creates a fresh Postgres environment per branch and runs your migrations on it, but no production data is copied to the preview branch. Branches are seeded from a seed.sql file instead. That's a deliberate choice for security; it also means a branch isn't a clone of production data.

Neon's branches are copy-on-write at the storage layer and include the parent's data by default. You can also create a branch without data when that fits your workflow.

Branch a database in seconds

Free plan includes 10 branches per project.