Neon's branches are copy-on-write clones of your database. When you create a branch, no data is copied. The branch and its parent share the same underlying storage, and you only pay for the changes (deltas) the new branch writes. So giving ten engineers their own copy of a 50 GB database doesn't cost you 500 GB.

How the storage math works

Storage on Neon's paid plans is billed at $0.35/GB-month, metered hourly. Branches are billed in two ways:

  • Root branches (your main/production branch) are billed on the logical size of the data they hold.
  • Child branches are billed on the minimum of the changes since the branch was created, or the logical size of the data. So a child branch never costs more than a full copy would, but in practice it costs much less.

Concretely: a 50 GB production database with 10 developer branches that each write 200 MB of test data costs roughly 50 GB (root) + 10 × 0.2 GB (children) = 52 GB-month, or about $18.20/month for storage. The point-in-time restore (PITR) change history is also billed on root branches only, at $0.20/GB-month.

# Each engineer gets their own branch off main
neon branches create --name alex-dev --parent main
neon branches create --name dana-dev --parent main
One caveat

A branch's storage is capped at the logical size of its data, but the delta does grow as the branch diverges from its parent. For long-lived developer branches, reset the branch periodically with neon branches reset <name> --parent or set an expiration to keep things tidy.

Plan limits to know

The Free plan includes 10 branches per project and 0.5 GB of total storage per project, which is enough to prototype the workflow. The Launch and Scale plans include 10 and 25 branches per project respectively, and you can create extra branches at $1.50/branch-month (prorated hourly). For larger teams, Scale supports up to 5,000 branches per project.

See the full breakdown in the Neon plans page.

How other managed Postgres services handle per-engineer copies

ProviderPer-copy storagePractical limit
NeonCopy-on-write delta only, billed at $0.35/GB-monthUp to 5,000 branches per project on Scale
Aurora PostgreSQLCopy-on-write at the storage layer (clones share pages until divergence)Up to 15 copy-on-write clones per source cluster before the next is a full copy
SupabaseFull project per preview branch (dedicated DB, Auth, Storage)Each preview branch incurs its own compute and disk size charges
RDS for PostgreSQLFull duplicate via pg_dump or snapshot restoreEach copy uses the full provisioned disk

Aurora clones share storage pages with the source via copy-on-write, so the initial clone uses minimal additional space. Storage grows only as the clone diverges. Aurora caps copy-on-write clones at 15 per source cluster before the next clone becomes a full copy. See Aurora cloning.

Supabase preview branches are full projects, not storage clones. Each branch runs its own compute and incurs its own disk size charges; a Micro branch starts at $0.01344 per hour. See Supabase branching usage.

RDS for PostgreSQL doesn't offer copy-on-write at the storage layer. Per-engineer copies require restoring a snapshot to a new instance or replaying a pg_dump, and each copy occupies its own provisioned disk.

See it in your own database

Create a project, push a snapshot of your production schema, and branch it ten times. The bill won't surprise you.