AWS RDS Pricing Explained: What Postgres on RDS Costs

RDS bills on five meters: instance hours, storage, IOPS, backup storage and data transfer - and Multi-AZ doubles the big two. Here is what each meter does, two worked examples, and the honest math on when RDS is worth its complexity.

TL;DR
An RDS bill is five meters: instance hours (the headline), gp3 storage at ~$0.115/GB-month, provisioned IOPS past the baseline, backup storage past 100% of your database size, and $0.09/GB data transfer out. Multi-AZ doubles instance and storage. A 'small' production Postgres realistically lands at $60 - 150/month, not the $12 the instance price suggests.
What you’ll learn
  • The five separate meters that compose every RDS invoice
  • Why Multi-AZ doubles the two biggest meters, and when that is worth it
  • What the free tier actually includes and when it silently ends
  • Two worked examples: a hobby single-AZ instance and a real production setup
  • Reserved instances, and the cases where a simpler managed Postgres is the better spend

Amazon RDS is AWS's managed relational database service - it runs Postgres (and MySQL, MariaDB, SQL Server, Oracle) on instances AWS patches and monitors for you. Its pricing page is famously long because RDS does not have a price; it has five meters, and your invoice is whatever they add up to. The instance price everyone quotes is just the first meter, and on real production bills it is often barely half the total.

Meter 1: instance hours

Every RDS instance bills per hour it exists (running - stopped instances still bill for storage, and auto-restart after seven days). On-demand Postgres prices in us-east-1 look like this:

Instance

vCPU / RAM

~Hourly

~Monthly (730 h)

db.t4g.micro

2 vCPU / 1 GB

$0.016

$12

db.t4g.small

2 vCPU / 2 GB

$0.032

$24

db.t4g.medium

2 vCPU / 4 GB

$0.065

$47

db.m6g.large

2 vCPU / 8 GB

$0.187

$137

db.r6g.large

2 vCPU / 16 GB

$0.24

$175

The t4g family is burstable: it earns CPU credits while idle and spends them under load. A t4g that runs hot around the clock either throttles or (with unlimited mode on) quietly bills for the extra CPU - a classic 'why did my bill grow' line item.

The five meters on an RDS billInstance hours, storage, IOPS, backup storage and data transfer each bill separately on Amazon RDSThe five meters on an RDS billThe instance is the headline. The other four are why the invoice is bigger.Instance hoursper hour, per AZStorage (gp3)~$0.115 / GB-monthProvisioned IOPSpast the baselineBackup storagepast 100% of DB sizeData transfer out$0.09 / GB to internet
Five meters, one invoice. The instance is the only number most people price; the other four are the difference between the estimate and the bill.

Meters 2 and 3: storage and IOPS

General-purpose gp3 storage bills at about $0.115 per GB-month and includes a baseline of 3,000 IOPS. Past that you pay for provisioned IOPS separately, and io1/io2 volumes for genuinely I/O-heavy databases bill dramatically more. For most small Postgres workloads storage is a modest line - 50 GB is under $6 - but it never shrinks: RDS volumes can grow, not contract, so over-provisioning is permanent.

Meter 4: backup storage

Automated backup storage equal to 100% of your provisioned database size is free. Past that - longer retention, manual snapshots that pile up, write-heavy databases whose daily change volume is large - it bills at about $0.095 per GB-month. Snapshot sprawl is one of the most common findings in any AWS cost audit.

Meter 5: data transfer

Traffic into RDS is free. Traffic out to the internet bills at $0.09/GB. The one that surprises people is cross-AZ traffic: if your app servers sit in a different availability zone than the database, every query's response pays $0.01/GB in each direction. At scale, chatty ORMs have generated four-figure cross-AZ line items. Traffic between the database and EC2 instances in the same availability zone is free, which is why 'put the app next to the database' is both a latency optimization and a billing one - the rare case where the fast thing and the cheap thing are the same thing.

The doubler: Multi-AZ

Multi-AZ doubles the instance and storage metersA single-AZ RDS instance versus a Multi-AZ pair: the standby doubles instance-hours and storage costMulti-AZ: same database, twice the meterSingle-AZ1x instance + 1x storageMulti-AZ2x instance + 2x storageenable failoverdb.t4g.small: ~$24/mosame instance: ~$47/moThe standby serves no reads. You pay for it to wait.
Multi-AZ keeps a synchronous standby in another availability zone. It is the right call for production - and it doubles the two biggest meters.

Multi-AZ is RDS's failover story: a synchronous standby replica in another zone, automatic promotion when the primary fails. It is genuinely good engineering and the correct choice for production. It also doubles the instance and storage meters, and the standby serves no read traffic - you pay full price for a database that waits. (Multi-AZ DB clusters with two readable standbys exist, at higher cost again.)

Two worked examples

  • Hobby project, single-AZ. db.t4g.small + 50 GB gp3 + default 7-day backups + light egress: roughly $24 + $6 + $0 + $2 = about $32/month. The 12-month free tier covers a micro version of this for new accounts - then it starts billing.

  • Small production SaaS. db.t4g.medium Multi-AZ + 100 GB gp3 (doubled) + 14-day retention on a write-heavy database + steady egress and some cross-AZ chatter: $94 + $23 + $10 + $10 = roughly $135 - 140/month. Nothing here is misconfigured; this is just what the five meters add up to.

The free tier, and its silent end

New AWS accounts get 12 months of a db.t4g.micro (or t3.micro) with 20 GB of storage and 20 GB of backups. It is a real free tier with two sharp edges: it applies to one instance's worth of hours (running two halves the covered time), and it ends silently at month 13, when the instance simply starts billing at on-demand rates. Set a billing alarm the day you create the account - it is the single highest-value minute in all of AWS cost management:

bash
# a $15 budget alarm - the free-tier expiry tripwire
aws budgets create-budget --account-id <your-id> --budget '{
  "BudgetName": "rds-tripwire", "BudgetLimit": {"Amount": "15", "Unit": "USD"},
  "TimeUnit": "MONTHLY", "BudgetType": "COST"
}'

Reserved instances and the other discounts

A 1-year no-upfront reserved instance takes roughly 30 - 40% off the instance meter (3-year and upfront options go deeper). Reservations do nothing for the other four meters and lock the instance family for the term. Buy one after the workload stabilises, not before - a reservation on an instance you resize next month is money donated to AWS.

Keeping an RDS bill honest

  • Right-size with data, not vibes. CloudWatch's CPU and freeable-memory graphs tell you within a week whether the instance is oversized. Most are.

  • Put the app in the same AZ as the database (or accept Multi-AZ and connect to the primary's zone) to kill cross-AZ transfer charges.

  • Audit snapshots quarterly. Manual snapshots never expire on their own and bill forever.

  • Question Multi-AZ for non-production. Staging rarely needs a synchronous standby; that toggle alone halves the environment's cost.

  • Watch t-family credit burn. A burstable instance running hot 24/7 is the wrong instance - or, in unlimited mode, a quiet extra meter.

Is RDS the right spend?

RDS earns its bill when you are already inside AWS: IAM auth, VPC networking, read replicas, cross-region snapshots, compliance out of the box. If that describes your stack, price the five meters honestly and use the AWS pricing calculator with real numbers rather than the instance price alone.

If what you actually wanted was a production Postgres with backups and a connection string, the honest comparison - and full disclosure, this is our product - is Swyftstack's flat-priced managed Postgres: $19/month, backups and pooling included, one meter (none). The hobby example above costs $32 on RDS plus the VPC homework; the production example's $135 - 140 buys failover you must still configure and test. We have run the same five-meter teardown on S3's pricing if object storage is the other half of your AWS bill.

Prices quoted here were checked in July 2026. Vendors change them; treat the structure as the durable part and re-check the current numbers before you budget.

Summary
RDS pricing is not hidden - it is compositional. The instance price is the only number people look up, but storage, IOPS, backup retention, egress and above all Multi-AZ are what the invoice is made of. Price the five meters against your real workload, double the big two if you need failover, and then decide whether you are paying for capability you will use or for AWS's operational model itself.

Frequently asked questions

How much does RDS for PostgreSQL actually cost per month?

A single-AZ db.t4g.small with 50 GB of gp3 storage runs about $30/month. The same setup Multi-AZ with realistic backup retention and some egress is $60 - 70. Production instances with Multi-AZ and provisioned IOPS commonly land in the hundreds.

Is there an RDS free tier?

Yes - 12 months of a db.t4g.micro (or t3.micro) with 20 GB of storage for new AWS accounts. It ends silently after a year and the instance starts billing at on-demand rates, which is a well-known source of surprise AWS bills.

Why is my RDS bill so much higher than the instance price?

Usually three stacked causes: Multi-AZ doubling instance and storage, backup storage beyond the free 100% of database size, and data transfer - especially cross-AZ traffic from your app servers, which bills in both directions.

Do reserved instances make RDS cheap?

A 1-year no-upfront reservation cuts the instance meter by roughly 30 - 40%. It does nothing for storage, IOPS, backups or transfer, and it locks the instance family for the term - fine for stable workloads, a trap while you are still resizing.

Share this articleXLinkedInHacker News

Related articles

Neon Pricing Explained: What Serverless Postgres Costs

Neon has no plan fee on its paid tiers - the whole bill is four meters: compute CU-hours, storage, branches and egress. Here is how each meter works,…

Read more
Supabase Pricing (2026): Plans, Costs at Scale & Alternatives

Supabase bills on four separate meters: the plan fee, per-project compute, egress, and database storage. Only the first is fixed. Here is what each…

Read more
Railway Pricing Explained: What Usage-Based Billing Costs

Railway's plan price is a minimum, not a maximum. Compute is metered per second across vCPU, memory, volumes, and egress. Here is how the model…

Read more

All posts