A single-node PlanetScale Postgres database costs $5 a month. A high-availability three-node cluster starts at $15, Metal (local NVMe storage, unlimited IOPS) starts at $50, and a Vitess MySQL cluster starts at $39. Those are AWS us-east-1 prices — everything PlanetScale publishes is region-dependent, and every number on this page is us-east-1 unless it says otherwise. There's no free plan. The Hobby tier stopped taking new databases on March 6, 2024 and was retired on April 8, 2024.
Last verified: 16 August 2026.
I re-check this page monthly against PlanetScale's own pricing pages and changelog, not against other people's summaries. Database pricing rots slower than per-token AI pricing, but PlanetScale cut two prices in November 2025 and shipped $50 Metal in December, so "slower" is not "never."
One more thing before the tables. An earlier page on this site described PlanetScale as MySQL-only at $39 a month. It was built on a tool dataset that had gone out of date. PlanetScale flagged it publicly, and they were right. PlanetScale has shipped Postgres since it went GA on September 22, 2025, and $39 is the entry price for one product line, not for PlanetScale. This page is the replacement, checked by hand against planetscale.com/pricing, pricing.md, and the docs on 16 August 2026 — thoroughly enough that I can tell you about a $1 discrepancy in PlanetScale's own numbers further down.
How the billing works
There are no plan tiers on the self-serve side. You sign up, you're on the Base plan, and pricing is resource-based: you pay for the instances you run, the storage you use, and any add-ons, prorated to the millisecond. No contract, no sales call. PlanetScale's own summary of what a bill is made of:
- Postgres: cluster size + storage (EBS) + backups + egress + optional dedicated PgBouncer + optional additional replicas
- Vitess: cluster size + storage (non-Metal) + optional VTGates + replicas and sharding configuration
A detail I like: PlanetScale publishes a machine-readable pricing page at planetscale.com/pricing.md specifically for AI agents, regenerated on request and stamped with a generation time. It even takes a ?region= query parameter, with 19 region identifiers supported (12 AWS, 7 GCP). It also has a gap you should know about, covered in the discrepancies section below.
Postgres: every cluster size, single node and HA
These are the network-attached (EBS) storage clusters, AWS us-east-1, straight from pricing.md. A single node is one instance, no replicas, no high availability. HA is three nodes — one primary plus two replicas across three availability zones, with a 99.99% SLA. Architecture matters: arm64 is cheaper than x86-64 at most sizes.
| SKU | Architecture | vCPU | Memory | Single node | HA (3 nodes) |
|---|---|---|---|---|---|
| PS-5 | x86-64 | 1/16 | 512 MiB | $5 | $15 |
| PS-5 | arm64 | 1/16 | 512 MiB | $5 | $15 |
| PS-10 | arm64 | 1/8 | 1 GiB | $10 | $30 |
| PS-10 | x86-64 | 1/8 | 1 GiB | $13 | $39 |
| PS-20 | arm64 | 1/4 | 2 GiB | $17 | $50 |
| PS-20 | x86-64 | 1/4 | 2 GiB | $20 | $59 |
| PS-40 | arm64 | 1/2 | 4 GiB | $28 | $83 |
| PS-40 | x86-64 | 1/2 | 4 GiB | $33 | $99 |
| PS-80 | arm64 | 1 | 8 GiB | $50 | $148 |
| PS-80 | x86-64 | 1 | 8 GiB | $60 | $179 |
| PS-160 | arm64 | 2 | 16 GiB | $96 | $286 |
| PS-160 | x86-64 | 2 | 16 GiB | $117 | $349 |
| PS-320 | arm64 | 4 | 32 GiB | $190 | $570 |
| PS-320 | x86-64 | 4 | 32 GiB | $233 | $699 |
| PS-640 | arm64 | 8 | 64 GiB | $379 | $1,135 |
| PS-640 | x86-64 | 8 | 64 GiB | $467 | $1,399 |
| PS-1280 | arm64 | 16 | 128 GiB | $755 | $2,265 |
| PS-1280 | x86-64 | 16 | 128 GiB | $933 | $2,799 |
| PS-2560 | arm64 | 32 | 256 GiB | $1,510 | $4,529 |
| PS-2560 | x86-64 | 32 | 256 GiB | $1,867 | $5,599 |
Monthly USD, AWS us-east-1, from pricing.md (fetched 2026-08-16). The $5 single node went live on November 14, 2025; the same announcement cut Postgres development branches from $10 to $5 a month.
Metal: prices are banded three ways
Metal clusters run on locally attached NVMe with unlimited IOPS, and the storage is included in the cluster price. That last part changes the shape of the table: every Metal SKU is sold at several storage capacities, each with its own price. There is no such thing as "the M-10 price" — M-10 on arm64 runs from $50 with 10 GiB of storage up to $180 with 200 GiB. Quoting one row as the SKU's price is exactly the kind of error this page exists to avoid.
Here are the entry configurations (the smallest included storage per SKU), AWS us-east-1, from pricing.md:
| SKU | vCPU | Memory | Included storage | arm64 | x86-64 |
|---|---|---|---|---|---|
| M-10 | 1/8 | 1 GiB | 10 GiB | $50 | $60 |
| M-20 | 1/4 | 2 GiB | 10 GiB | $80 | $90 |
| M-40 | 1/2 | 4 GiB | 10 GiB | $150 | $160 |
| M-80 | 1 | 8 GiB | 100 GiB | $320 | $340 |
| M-160 | 2 | 16 GiB | 100 GiB | $570 | $580 |
All Metal clusters are three-node. The $50 floor is recent: PlanetScale made Metal for Postgres GA at small sizes on December 15, 2025, dropping the minimum from 16 GiB of RAM down to 1 GiB, with storage capacities from 10 GB to 1.2 TB on the new sizes. The pricing.md table runs 95 rows deep and tops out at M-7680 on x86-64 with 61,440 GiB of storage for $47,229 a month. The docs go further still — their largest published Postgres Metal cluster is 192 vCPUs, 1 TB of RAM, and 122,880 GB of storage at $94,429 a month.
Two operational facts that belong next to any Metal price: the storage does not autoscale (you pick a fixed drive up front), and when the disk has 6 GiB or less free, PlanetScale automatically switches it to read-only until you resize.
Vitess: the MySQL side
Vitess is where the old $39 number comes from. It's the entry price of a Vitess cluster — three production nodes (one primary, two replicas) plus roughly 1,440 hours of development branch time per month, which PlanetScale describes as the equivalent of five always-on instances. There is no single-node option for Vitess and no PS-5 tier; on pricing.md, Vitess clusters are x86-64 only.
| SKU | vCPU | Memory | Monthly price |
|---|---|---|---|
| PS-10 | 1/8 | 1 GiB | $39 |
| PS-20 | 1/4 | 2 GiB | $59 |
| PS-40 | 1/2 | 4 GiB | $99 |
| PS-80 | 1 | 8 GiB | $179 |
| PS-160 | 2 | 16 GiB | $349 |
| PS-320 | 4 | 32 GiB | $699 |
| PS-400 | 8 | 32 GiB | $999 |
| PS-640 | 8 | 64 GiB | $1,399 |
| PS-700 | 16 | 32 GiB | $1,799 |
| PS-900 | 16 | 64 GiB | $1,999 |
| PS-1280 | 16 | 128 GiB | $2,799 |
| PS-1400 | 32 | 64 GiB | $3,599 |
| PS-1800 | 32 | 128 GiB | $3,999 |
| PS-2100 | 48 | 96 GiB | $5,399 |
| PS-2560 | 32 | 256 GiB | $5,599 |
| PS-2700 | 48 | 192 GiB | $5,999 |
| PS-2800 | 64 | 128 GiB | $7,199 |
Three-node Vitess clusters, x86-64, AWS us-east-1, from pricing.md. Vitess Metal exists too, from $609 a month (M-160 with 110 GiB included) up to $23,979 (M-5120 with 14,992 GiB), same region. Horizontal sharding is included with Vitess; for Postgres it's listed as coming soon, under a project PlanetScale calls Neki.
Storage, egress, and backups
Compute is the number on the pricing page. These are the numbers on the invoice. All Postgres figures, us-east-1, from the docs' regional tables:
| Line item | Included | Overage, us-east-1 |
|---|---|---|
| Network-attached storage | 10 GB per cluster | $0.125 per GB/month |
| IOPS (AWS gp3) | 3,000 | $0.009 per IOPS/month |
| Throughput (AWS gp3) | 125 MiB/s | $0.073 per MiB/s/month |
| Egress, production branch | 100 GB/month | $0.06 per GB |
| Egress, PS-5 non-HA and dev branches | 10 GB/month | $0.06 per GB |
| Backup storage | 2x your disk size | $0.023 per GB/month |
| Private connection traffic | 100 GB/month (production) | $0.01 per GB, both directions |
Ingress is free. Backups run automatically every 12 hours at no cost, and overage is billed on the compressed size. The private-connection rate (AWS PrivateLink or GCP Private Service Connect) is flat across regions and replaces the regional egress rate for that traffic — worth knowing if your app servers can sit in the same cloud. And a unit note that trips people up: PlanetScale calculates storage in binary gigabytes, so 1 GB on your bill is 2^30 bytes.
Region matters more than most people budget for. That $0.125 storage rate becomes $0.238 in AWS sa-east-1 and up to $0.312 on GCP; the $0.06 egress rate becomes $0.137 in sa-east-1. If you deploy anywhere other than a big US region, pull the regional tables before you estimate anything. (If you're tallying bandwidth across your whole stack, the Cloudflare pricing breakdown covers the CDN side of that bill.)
The line items people forget
Postgres development branches are $5 a month each, prorated to the millisecond, no replicas. Vitess includes about 1,440 dev-branch hours a month, then bills roughly $0.014 an hour beyond that. An additional production branch is billed as a whole new cluster at its size's price.
Additional Postgres replicas cost about one third of your three-node cluster price — but replicas don't get the 10 GB storage allowance; they pay for the full configured disk. A dedicated PgBouncer (the local one on your primary is free) runs $18 to $551 a month in us-east-1 depending on size, PGB-5 through PGB-160. SSO is a $199 a month add-on on the Base plan.
And one gate that isn't on the pricing page at all: new accounts are capped at PS-160 (and M-320 for Metal) until you've successfully paid an invoice of at least $100. If you were planning to launch straight onto a PS-320, you'll need to contact them first.
Where PlanetScale's own numbers disagree
Here's what checking every figure against every page actually turned up: PlanetScale's pricing surfaces don't fully agree with each other. None of this looks intentional — it looks like documentation drift after three price changes in two months — but if you're budgeting, you should know which number to trust.
First, the $1 drift. Six of the twenty single-node Postgres prices differ between pricing.md and the docs pricing page. All twenty HA rows match exactly; only these single-node rows are off:
| SKU (single node) | pricing.md | Docs pricing page |
|---|---|---|
| PS-80 arm64 | $50 | $49 |
| PS-160 arm64 | $96 | $95 |
| PS-160 x86-64 | $117 | $116 |
| PS-640 arm64 | $379 | $378 |
| PS-640 x86-64 | $467 | $466 |
| PS-2560 x86-64 | $1,867 | $1,866 |
I'd trust pricing.md here: it's regenerated on request, timestamped, and it matches the figures the human page serves statically that pricing.md also carries — the $5, $15 and $50 entry prices. The human page's static copy additionally shows the $0.06/GB egress rate and the 10 GB free storage allowance, which pricing.md omits entirely (that gap is the fifth discrepancy below). The full SKU grid on the human page renders client-side, so this comparison covers the headline figures, not all 95 rows. The docs numbers read like a rounding artifact.
Second, and bigger: two docs pages give Postgres storage overage figures 4x apart. The plans doc says network-attached storage beyond 10 GB is "$0.50 per instance per additional 1 GB." The Postgres pricing doc publishes the regional table quoted above, with us-east-1 at $0.125 per GB per month — and its own worked replica example (a PS-10 with 100 GB billed at $33.75 for additional storage) is only consistent with $0.125 across three instances. For Postgres, use the regional table; the $0.50 figure sits in a column shared with Vitess and is most plausibly the Vitess rate. PlanetScale hasn't reconciled the two pages as of 16 August 2026.
Third, the Metal rosters don't match. pricing.md lists 95 Postgres Metal configurations topping out at $47,229; the docs list 92, extending to $94,429 — and neither list contains the other. Rows exist on each side that the other lacks: pricing.md carries arm64 large-storage variants (an M-7680 arm64 row among them) that the docs table doesn't, while the docs price five large configurations pricing.md doesn't, including that $94,429 top end. If you're sizing at the top end, the docs are the only place the biggest machines are priced at all.
Fourth, a small one: the docs' replica-pricing example prices a PS-10 arm64 HA cluster at $34 when the same page's own table (and pricing.md) says $30. That looks like a stale pre-November-cut number left in an example.
Last: pricing.md, the page PlanetScale publishes explicitly for AI agents, contains only cluster prices and the region list. It names storage, backups, and egress in its overview but gives no unit price for any of them. An agent (or a person) sourcing pricing.md alone would miss every non-compute charge on the bill. Ask your AI assistant what PlanetScale costs and there's a fair chance that's exactly what happened.
What isn't published anywhere
Three figures I went looking for and can confirm are not public as of 16 August 2026. The Enterprise and PlanetScale Managed fee — you pay your own AWS or GCP infrastructure bill plus "a percentage of that cost to PlanetScale," and that percentage appears nowhere on the pricing page, pricing.md, or the plans doc. The Business support add-on price — the plans doc says "an additional fee" and points to the support page, which contains no dollar figures. And per-size VTGate prices (VTG-5 through VTG-1280) — every Vitess cluster includes VTGate credits that scale with cluster size, and the docs direct you to the in-app price for anything beyond them; I checked the VTGate scaling doc, both pricing pages, and the Vitess pricing doc.
For all three, the honest answer is: talk to PlanetScale, and don't trust any third-party page that prints a number.
Top comments (0)