Neon's branches are copy-on-write clones of your database. Creating a branch copies no data. The branch shares storage with its parent, and you pay for the changes the branch writes. Ten engineers with their own copy of a 50 GB database don't cost you 500 GB of storage.
How the storage math works
Storage on Neon's paid plans is billed at $0.35/GB-month, metered hourly. Root and child branches are billed differently:
- Root branches (such as your default
productionormainbranch) are billed on the logical size of the data they hold. - Child branches are billed on the lower of two numbers: the changes written since the branch was created, or the logical size of the data. A child branch never costs more than a full copy, and a branch with light writes costs a small fraction of one.
For example, a 50 GB production database with 10 developer branches that each write 200 MB of test data comes to about 50 GB (root) + 10 × 0.2 GB (children) = 52 GB-month, or about $18.20/month for storage. The change history for instant restore is billed on root branches only, at $0.20/GB-month, so child branches don't add to it.
# Each engineer gets their own branch off the default branch
neon branches create --name alex-dev
neon branches create --name dana-devA child branch's delta grows as it diverges from its parent, up to the logical data size. For long-lived developer branches, reset the branch to its parent's latest data with neon branches reset <name> --parent, or set an expiration so it deletes itself.
Plan limits to know
The Free plan includes 10 branches per project and 1 GB of storage per project, enough to try the workflow on a small database. The Launch plan includes 10 branches per project and the Scale plan includes 25. On both paid plans, extra branches cost $1.50/branch-month (metered hourly), up to 5,000 branches per project. Extra branches aren't available on the Free plan. See Neon plans.
How other managed Postgres services handle per-engineer copies
| Provider | Per-copy storage | Practical limit |
|---|---|---|
| Neon | Copy-on-write delta only, billed at $0.35/GB-month | Up to 5,000 branches per project on Launch and Scale plans |
| Aurora Postgres | Copy-on-write at the storage layer (clones share pages until divergence) | Up to 15 copy-on-write clones; after that, the next clone is a full copy |
| Supabase | Separate instance per preview branch (database, Auth, Storage) | Each branch bills compute, disk size, egress, and storage |
| RDS for Postgres | Full duplicate via pg_dump or snapshot restore | Each copy uses the full provisioned disk |
Aurora clones share storage pages with the source through copy-on-write, so a new clone uses minimal additional space, and pages identical to the source are charged only to the source cluster. Storage grows as the clone diverges. After 15 copy-on-write clones, the next clone is a full copy. See Aurora cloning.
Supabase preview branches are separate instances, not storage clones. Preview branches start from migrations and seed data (Supabase branching), and dashboard branches (public alpha) can copy production data with the PITR add-on. Each branch bills compute, disk size, egress, and storage like the project it came from. A branch on the default Micro size starts at $0.01344 per hour, and Compute Credits don't apply to branching compute. See Supabase branching usage.
RDS for Postgres doesn't offer copy-on-write at the storage layer. Per-engineer copies mean restoring a snapshot to a new instance or loading a pg_dump, and each copy has its own provisioned storage.
Vendor details verified on 2026-09-23 against the linked pages.

Create a project, load your schema and some data, and create a branch for each engineer. Branches share storage with their parent.








