fshy / Compute / Databases and KV / Storage
Neon
neon.com · Compute, Databases and KV, Storage · 3 records · JSON
- Neon Computecaveatemailno cardR
- Neon (Lakebase Postgres) Databases and KVcaveatemailno cardMrequest-rate
- Neon (Object Storage + Postgres) Storagefails: quotainstitutionno cardRper-object-cap
Neon Compute
caveatemailno cardR
| Free tier | a free plan with 100 compute unit-hours a month per project and 1 GB of storage per project, no time limit and no credit card unit hours; metered on wall-clock; the free plan does not auto-delete, but 100 CU-hours is exhaustible |
|---|---|
| Price | none stated |
| Per-object cap | not applicable |
| Retention | data is retained; the compute allowance, not the data, is the limit |
| Egress | not published on the page read |
| Identity | email 'no credit card required' on the free plan, quoted |
| Limits |
scale-to-zero is what makes the allowance last; a database kept awake consumes the whole month |
| Binding | compute suspends on exhausting 100 CU-hours or 5 GB of transfer in a project-month, and the suspension lasts until the period resets |
| Interface | ssh a PostgreSQL connection string; scale-to-zero and autosuspend |
| Tooling | any Postgres client; the Neon API and CLI; branching |
| Composes with | 100 CU-hours a month is the clock, and a database that never sleeps exhausts it |
| Reliability | no reliability event recorded |
| Notes | The census demoted this from always-on and the demotion is right: an always-on database burns 730 hours against a 100 CU-hour allowance, so it exhausts in about four days. Corrected 2026-10-22: fails-quota treated 100 CU-hours as an account ceiling. The quota is per project and the plan is permanent, so the aggregate is 100 CU-hours per project. The suspension on exhaustion is persistent until the next billing period. |
| Evidence rung | reported re-read live on 2026-10-22 for the free-tier and limit figures |
| Checked | 2026-10-22 (live); stale on 2026-11-05 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-06 | neon.com/pricing | free plan: 100 CU-hours a month per project, 1 GB storage per project, no time limit, no credit card |
| 2026-10-22 | neon.com/pricing | read live: 100 CU-hours a month per project, permanent free plan |
| 2026-10-22 | neon.com/faqs/free-plan-limits-and-quotas | '100 CU-hours of compute per project per month, 1 GB of Postgres storage per project (up to 20 GB total across all projects), and 5 GB of public network transfer per project per month', with 'Compute quotas are measured per project, so 100 projects each get their own 100 CU-hour bucket' and 'Running out of CU-hours or egress (5 GB) suspends compute until the next billing period', quoted |
More fields (9)
{
"shape": null,
"billing_model": "wall-clock",
"session_cap": {
"wall_clock_min": null,
"idle_reap_s": null,
"restart_required": false,
"note": "scales to zero when idle"
},
"keep_rate": null,
"persistent_storage": {
"included_gib": 1,
"price_gib_month": "1 GB included",
"durability": "Postgres",
"survives_stop": true,
"survives_destroy": false,
"max_retention": "while the project exists"
},
"network_out": {
"allow_outbound": true,
"allow_inbound_listen": true,
"ports": "the Postgres port",
"static_ip": null,
"ipv6": true,
"per_session_bytes": null
},
"free_tier_kind": "allowance",
"census_rows": [
"neon-free"
],
"wave2": {
"verdict_change": "fails-quota -> qualifies-with-caveat on 2026-10-22"
}
}Unknown or withheld values (4)
$.egress.meteredegress-unknown$.per_object_cap.notesprocess$.per_object_cap.statednot-applicable$.reliability_notenone-observed
Corrections
- 2026-10-22 Neon's 100 CU-hours are per project, not per account
Neon (Lakebase Postgres) Databases and KV
caveatemailno cardMrequest-rate
| Free tier | 100 projects; 100 CU-hours per project; 1 GB Postgres storage per project and 20 GB per account; 10 branches per project; 5 GB public network transfer per project per month; 5 GB object storage unit mixed; metered on wall-clock; Free autoscales to 2 CU (8 GB RAM); scale-to-zero after 5 min is always on and cannot be disabled |
|---|---|
| Price | none stated |
| Per-object cap | 1 GB of Postgres storage per project; exceeding it blocks writes rather than billing |
| Retention | no deletion on free. Exceeding CU-hours or the 5 GB transfer suspends compute until the next billing period; exceeding storage blocks writes. 'None of these limits delete your data' |
| Egress | 5 GB public network transfer per project per month included; exceeding it suspends compute until the next billing period free_allowance: 5 GB per project per month price_per_tb: USD 0.10/GB on Launch and Scale after 500 GB |
| Identity | email email signup for a normal account; the Claimable path provisions a project with no signup, no card and no email, and the project expires in 72 hours unless claimed |
| Limits |
connection pooling accepts up to 10,000 client connections in transaction mode; max_connections was 450 on the observed compute and is capped at 4,000 above 9 CU |
| Binding | request-rate |
| Interface | rest, cli Postgres wire protocol over TLS on a -pooler or direct host; a Management API and the Neon CLI; a Data API for HTTP queries |
| Tooling | any Postgres client (psql, psycopg, pg8000, Prisma, Drizzle); rclone does not apply |
| Composes with | a free Postgres behind a free Worker or a tunnel gives a public endpoint with no card |
| Reliability | the unclaimed path is a 72-hour demo: 100 MB storage, 1 GB transfer, then the project expires; commit latency on a cold anonymous project measured 1,750 ms |
| Notes | Storage is generous and compute is not. 100 projects x 1 GB is 100 GB nominal, but each project also gets 100 CU-hours, so the shape is 100 small workloads and not one 100 GB database. The free tier does not delete data; it suspends compute or blocks writes. The measured 100 MB cap belongs to the anonymous Claimable path, not the free plan, and conflating them is the easy error. The vector extension was installed and queried, not merely listed as available, so pgvector on a free Postgres is a working chain and not an inference. |
| Evidence rung | measured the 100 MB cap was reached and its SQLSTATE recorded. The free-plan figures are a first-party page. |
| Checked | 2026-10-23 (live); stale on 2026-12-22 |
| Parsed numbers |
|
Evidence (12)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | probe:https://claimable.neon.tech/v1/agent/identity | POST with type anonymous returned 201 in 4.5 s, provisioning project lucky-queen-53359445 in aws-us-east-2 with expires_at 2026-10-25T02:41:43Z; 1480 bytes; no signup, no card, no email |
| 2026-10-22 | probe:https://claimable.neon.tech/v1/oauth2/token | grant_type urn:ietf:params:oauth:grant-type:jwt-bearer with the identity assertion returned 200 and a 3600-second bearer token; the token-exchange grant type is rejected with a 400 |
| 2026-10-22 | probe:https://claimable.neon.tech/v1/projects/lucky-queen-53359445/connection_uri | 200 with a working postgresql:// URI only when database_name and role_name are supplied; without them the proxy returns 502 with an upstream decode error |
| 2026-10-22 | probe:postgresql://ep-old-hall-b4ghd096-pooler.c-6.us-east-2.aws.neon.tech/neondb | PostgreSQL 17.11 connected in 2619 ms over TLS; create table, insert and select returned hello-f-research; max_connections 450; idle_in_transaction_session_timeout 5min; vector 0.8.0, postgis 3.5.7, timescaledb 2.17.1 and pg_trgm available |
| 2026-10-22 | probe:neon.max_cluster_size | SHOW returns 100MB; filling with 500 kB rows failed at SQLSTATE 53100 with 'could not extend file because project size limit (100 MB) has been exceeded', hint naming neon.max_cluster_size and pagestore_smgr.c:throttle_or_fail_extension, after 70 rows and 78 MB of reported database size |
| 2026-10-22 | probe:neon commit latency | ten single-row autocommit inserts averaged 1,750.6 ms each on a cold anonymous project; 35 MB of bulk insert took 21.8 s, or 1.61 MB/s |
| 2026-10-22 | neon.com/pricing | 100 projects, 100 CU-hours/project, 1 GB/project and 20 GB/account storage, 5 GB egress/project, scale-to-zero after 5 min on Free, and the sentence that none of the limits delete data |
| 2026-10-22 | neon.com/docs/introduction/network-transfer | 5 GB per project per month included on Free; exceeding it suspends compute until the next billing cycle |
| 2026-10-22 | neon.com/docs/connect/connection-pooling | PgBouncer transaction mode accepts up to 10,000 client connections, pools sized at 0.9 x max_connections |
| 2026-10-22 | neon.com/docs/reference/claimable-neon | unclaimed projects expire in 72 hours and are capped at 100 MB storage and 1 GB transfer; claim codes expire in 15 minutes |
| 2026-10-22 | probe:create extension vector on the claimable project | CREATE EXTENSION vector succeeded in 1.1 s and pg_extension reported version 0.8.0; a vector(3) column, an insert of two rows and an ORDER BY e <-> '[1,2,3]' KNN query returned distances 0.0 and 5.196 in order; run after dropping the fill, bulk and lat tables from the cap probe, at which point the database was 7440 kB |
| 2026-10-22 | neon.com/docs/connect/connection-pooling | PgBouncer transaction mode accepts up to 10,000 client connections; pool size defaults to 90% of max_connections |
Unknown or withheld values (1)
$.confidence_notepartly-held
Neon (Object Storage + Postgres) Storage
fails: quotainstitutionno cardRper-object-cap
| Free tier | 5 GB object storage per project + 1 GB Postgres per project (20 GB account total); 100 projects on Free unit objects; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | object size 5 GiB (5368709120 bytes) |
| Retention | not stated |
| Egress | 5 GB/month public network transfer per project, shared across Postgres, object storage and functions; then $0.10/GB on paid only — Free is a hard 5 GB. free_allowance: 5 GB per month |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: ttling returns 503 SlowDown under load; path-style only, no virtual-host buckets; ACL/policy must be set via Console/API, not S3 wire. 5 GB egress/project/month is the real wall for ser |
| Limits |
Max object size 5 GiB; throttling returns 503 SlowDown under load; path-style only, no virtual-host buckets; ACL/policy must be set via Console/API, not S3 wire. 5 GB egress/project/month is the real wall for serving. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | s3-compatible, cli s3 |
| Tooling | Real S3 API (forcePathStyle: true, path-style only), AWS SDK/boto3/aws CLI, neon buckets CLI, files-sdk.dev neon adapter. Endpoint is per-branch: https://br-<name>.storage.<cell>.<region>.aws.neon.tech |
| Composes with | 100 projects/org (Free) x 5 GB object storage = 500 GB; x 20 GB Postgres cap = only 20 GB of DB storage, but object storage is NOT under that 20 GB cap — it is per project. Add branches: 10 branches/project, objects branch without copying. Multiple orgs per account are allowed ('one Neon account can belong to multiple orgs on different plans'). |
| Reliability | Compute scale-to-zero after 5 min (Free, cannot disable); project data persists. Rate limiting is documented and retryable. |
| Notes | 5 GB object storage per project + 1 GB Postgres per project (20 GB account total); 100 projects on Free |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | neon.com/docs/introduction/plans | 'Storage 1 GB/project, 20 GB account total | Object Storage 5 GB per project included | Public network transfer (egress) 5 GB per project included | Projects 100' |
| 2026-10-21 | neon.com/docs/storage/overview | 'Free plan object storage 5 GB per project' |
| 2026-10-21 | neon.com/docs/storage/s3-compatibility | 'compatible with the AWS SDK..., forcePathStyle: true, path-style addressing only' |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "5 GB object storage per project + 1 GB Postgres per project (20 GB account total); 100 projects on Free",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (5)
$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted