StitchDB vs Neon: Always-On Backend or Serverless Postgres

Neon vs StitchDB is a choice between two models. Neon is serverless Postgres: compute scales to zero when idle and you pay per CU-hour, with very fast branching. StitchDB is an always-on Postgres per project on flat monthly plans, bundled with Auth, REST and GraphQL APIs, Realtime, Storage and Edge Functions. Neon tends to be cheaper for spiky or mostly idle databases and better for many short-lived branches; StitchDB is more predictable for steady traffic and includes the backend around the database.

We build StitchDB. Neon facts are from neon.com/pricing and Neon's plans docs, as of November 2026.

#Two pricing models

Neon charges for what runs:

  • Free: 100 CU-hours per project per month, 1 GB of storage per project.
  • Launch: $0.106 per CU-hour, $0.35 per GB-month of storage, restore history at $0.20 per GB-month (up to 7 days).
  • Scale: $0.222 per CU-hour, restore history up to 30 days.
  • No monthly minimum. A CU is roughly 4 GB of RAM (2 CU = 8 GB on Neon's pages).

StitchDB charges a plan price with included amounts:

  • Free: $0, 2 projects, 500 MB database, 24 hours of point-in-time recovery.
  • Pro: $15.99, 10 GB database per project, 7 days of PITR, 1 TB egress, 100,000 MAU.
  • Scale: $49, 20 GB per project, 14 days of PITR.
  • Usage above the included amounts only applies if you turn the spend cap off.

#Cost for three traffic patterns

Rough monthly costs on Launch versus Pro, as of November 2026. Neon numbers count compute and storage only.

PatternNeon LaunchStitchDB Pro
Internal tool: 0.25 CU active 4 hours a day on weekdays (~22 CU-hours), 2 GB~$2.33 + $0.70 = ~$3$15.99
Small SaaS: 0.5 CU active 12 hours a day (~180 CU-hours), 5 GB~$19.08 + $1.75 = ~$21$15.99
Steady API: 1 CU around the clock (~730 CU-hours), 10 GB~$77.38 + $3.50 = ~$81$15.99 on shared compute

The first row is Neon's sweet spot: you pay for 22 hours, not 730. The last row is where a flat plan wins, with an important caveat: a StitchDB Pro project shares a server and has plan limits (1,000 API requests per second, 100 direct connections, a 30-second API statement timeout), while Neon's 1 CU is compute reserved for you. A heavy workload on StitchDB eventually belongs on a dedicated server (Scale and Enterprise), which costs more. Measure your own load before deciding.

#Feature comparison

NeonStitchDB
Scale to zeroYes (5 min on Free; configurable on paid)No; DB always on. Free REST/Auth sleep after 60 min idle
BranchingInstant branches, 10 per project on Free/LaunchPreview branches from migrations: Pro 3, Scale 5
Restore history6 h Free, up to 7 d Launch, up to 30 d Scale (paid per GB-month)24 h Free, 7 d Pro, 14 d Scale, 30 d Enterprise (included)
Read replicasAll plansPro and up, $0.01/replica-hour
PoolingPgBouncer, up to 10,000 connectionsPooler on 5432 (session) and 6543 (transaction)
HTTP driver@neondatabase/serverlessstitchdb-js/sql
AuthManaged Better Auth (up to 60k MAU/project Free)Built-in Auth (50k MAU Free, 100k Pro)
HTTP API from schemaData APIREST and GraphQL
FilesObject StorageStorage with image resizing and S3 endpoint
RealtimeBetaPostgres changes, broadcast, presence
Spend controlSpending notificationsSpend cap (hard stop) on by default
RegionsAWS: US, EU (Frankfurt, London), APAC, SAEU (Germany, Finland)

#Branching: different jobs

Neon branches are copies of your database state, created quickly and cheaply, which makes "a database per preview deploy, with real data" easy. This is Neon's best feature, and StitchDB doesn't match its speed or count.

StitchDB preview branches are separate projects that replay production's migrations and seed.sql. They test the migrations themselves, and they come with their own Auth users, storage and functions. You can opt into a copy of production data with personal data masked by column name and type:

SQL
-- add your own masking rules next to the schema, in a migration
comment on column public.tickets.body is '@mask text';
comment on column public.orders.gift_note is '@mask null';

Pick by job: Neon for many quick data copies, StitchDB for full-stack preview environments tied to migrations.

#Cold starts vs sleeping services

On Neon, an idle compute suspends and the next query waits for it to start. On paid plans you can turn this off (Launch) or tune it (Scale).

On StitchDB, the database never stops. On Free only, the Auth and REST services sleep after 60 minutes without requests and wake within a few seconds on the next one; direct Postgres connections are unaffected. Paid projects don't sleep.

#Code: the same query, two ways

Neon, from an edge function:

TypeScript
import { neon } from '@neondatabase/serverless'

const sql = neon(process.env.DATABASE_URL!)
const rows = await sql`select id, title from posts where published = true limit 10`

StitchDB, the same with its serverless driver (docs):

TypeScript
import { createSql } from 'stitchdb-js/sql'

const sql = createSql(process.env.STITCHDB_SQL_URL!)
const rows = await sql`select id, title from posts where published = ${true} limit 10`

Or from the browser, with Row Level Security instead of a server:

TypeScript
const { data } = await stitchdb.from('posts').select('id, title').eq('published', true).limit(10)

#Who should pick which

Pick Neon if your databases are idle most of the time, you want many branches with real data, you need US or Asian regions, or you only need Postgres.

Pick StitchDB if you want one flat bill with a hard cap, PITR included, the database always warm, and Auth, Storage, Realtime and functions in the same project, and your users are in Europe.

#Moving from Neon to StitchDB

Use the direct (non-pooled) Neon connection string. If logical replication is enabled on the Neon project, StitchDB's Import from Postgres does a live copy and switches over in seconds; otherwise a one-time copy. Guide: Move a Neon database to StitchDB. Or keep reading: Neon alternatives.

#Limits to compare before you commit

Neon's free plan limits compute time (100 CU-hours per project) and storage (1 GB per project). When CU-hours run out, compute is suspended until the next billing period or an upgrade. On paid plans the main limit is what you are willing to spend.

StitchDB's limits are per project and per plan instead (plans and limits):

LimitFreeProScale
Database size500 MB10 GB20 GB
API requests per second501,0002,000
API statement timeout8 s30 s60 s
Direct connections20100160
Pooled client connections1,00010,00015,000

At the database size limit, a StitchDB database becomes read-only (writes fail with error code 25006) until you free space or upgrade; nothing is deleted. With the spend cap off, it can grow beyond the limit at $0.12 per GB-month on Pro. Above the request rate, extra requests get 429.

The practical question: does your heaviest workload fit inside a fixed box (StitchDB) or do you want it to stretch and bill for the stretch (Neon)?

#FAQ

#Is Neon cheaper than StitchDB?

For databases that are idle most of the day, usually yes. For steady traffic around the clock, a flat StitchDB plan is usually cheaper, within its plan limits.

#Does StitchDB scale to zero?

No. The database stays on. On the Free plan, the REST and Auth services sleep after 60 minutes idle.

#Does Neon have a spending cap?

Neon documents spending notifications at 80% and 100% of a threshold. StitchDB's spend cap stops usage at the plan's included amounts.

#Can I use both?

Yes. Some teams use Neon branches for CI data tests and StitchDB for the production app. Both are standard Postgres, so pg_dump moves data either way.

Want a flat-priced Postgres backend? See pricing or sign up free.