Heroku Pricing in 2026: The Real Monthly Bill
Heroku's dyno menu starts at $5, but a real app - web process, worker, Postgres - lands somewhere between $19 and $100 a month. We live-verified every tier on the pricing page today and recomputed the same workload on Railway and Fly.io so you can see exactly where the money goes and where the Eco tier's sleep behavior bites.
Decision Brief
What to do with this research
A typical small production app on Heroku - one web dyno, one worker, one small Postgres - costs $19/month on Basic dynos and $59/month the moment you step up to Standard-1X. The $5 Eco tier cannot carry that workload: its shared 1,000-hour monthly pool is exhausted by a single always-on worker plus a modestly busy web process. The same workload runs for roughly $13/month self-managed on Fly.io and about $25/month metered on Railway, so Heroku's premium is real - you are paying it for managed Postgres and operational simplicity, not for compute.
Hosting and Data changes
Get a practical ToolPick alert when pricing, free-plan limits, policy risk, or alternatives change.
Weekly at most ยท one-click unsubscribe
A typical small production app on Heroku - one web dyno, one worker, one small Postgres - costs $19/month on Basic dynos and $59/month the moment you step up to Standard-1X. The $5 Eco tier cannot carry that workload: its shared 1,000-hour monthly pool is exhausted by a single always-on worker plus a modestly busy web process. The same workload runs for roughly $13/month self-managed on Fly.io and about $25/month metered on Railway, so Heroku's premium is real - you are paying it for managed Postgres and operational simplicity, not for compute.
- Eco: $5/month for a shared pool of 1,000 dyno hours - web dynos sleep after 30 idle minutes, workers never sleep
- Basic: $7/month per always-on dyno, so web + worker + Essential-0 Postgres = $19/month
- Standard-1X: $25/month buys the same 0.5 GB RAM as the $7 Basic dyno
- The first 1 GB dyno is Standard-2X at $50/month - Fly.io sells 1 GB for $5.92 in Amsterdam
Keep reading for the full analysis.
Where this decision goes next
Skip the scroll: the pages most readers open after this one.
Vercel Alternatives 2026: Netlify vs Cloudflare vs RailwayRead the next related article.The sticker prices, straight from the pricing page
Heroku still prices the way it did before Salesforce moved it into sustaining-engineering mode in February 2026: a ladder of fixed dyno tiers, each with a flat monthly price and a fixed slice of RAM. That announcement explicitly promised no pricing or billing changes for dashboard customers, which is why the menu below still holds - pulled from heroku.com/pricing today rather than from a blog post that last checked in 2024.
| Dyno tier | Price | RAM | The catch |
|---|---|---|---|
| Eco | $5/month | 0.5 GB | Buys a shared pool of 1,000 dyno hours; web dynos sleep after 30 idle minutes |
| Basic | $7/month | 0.5 GB | Always on, per dyno - two processes means two Basic dynos |
| Standard-1X | $25/month | 0.5 GB | Same RAM as Basic at 3.6x the price |
| Standard-2X | $50/month | 1 GB | The cheapest dyno with a full gigabyte |
| Performance-M | $250/month | 2.5 GB | The jump from Standard is 5x, not incremental |
| Performance-L | $500/month | 14 GB | Where memory finally gets roomy |
Databases are a separate line item. Heroku Postgres starts at Essential-0 for $5/month with 1 GB of disk, moves to Essential-1 at $9/month (10 GB) and Essential-2 at $20/month (32 GB), and then jumps to the Standard tier starting at $50/month for 64 GB. If you cache anything, the Key-Value Store starts at $3/month for a 25 MB Mini plan, with Premium plans from $15/month.
None of those numbers looks scary on its own. The bill only becomes real when you stack the pieces a working application actually needs - which almost nobody does before signing up.
What a real small app costs: web + worker + Postgres
The honest unit of PaaS pricing is not "a dyno." It is the smallest deployable version of a real product: one web process, one background worker (emails, jobs, queues - nearly every production app grows one), and a managed database. Priced three ways on Heroku's current menu:
| Stack | Components | Monthly total |
|---|---|---|
| Budget, always on | Basic web $7 + Basic worker $7 + Postgres Essential-0 $5 | $19/month |
| Production entry | Standard-1X web $25 + Standard-1X worker $25 + Essential-1 $9 | $59/month |
| Production, real database | Standard-1X web $25 + Standard-1X worker $25 + Postgres Standard $50 | $100/month |
That $19-to-$100 range is the number to budget around, not the $5 headline. And notice what the $59 tier actually buys: two dynos with 0.5 GB each - the same RAM footprint as the $19 stack - plus a 10 GB database. The extra $40 is for the Standard tier's platform features, not for compute.
The comparison bars are the same workload recomputed on rival platforms - the arithmetic is below, with every assumption stated.
Where Eco's sleep behavior actually bites
The $5 Eco plan is the tier most people misunderstand, because it is not a cheaper Basic. Per Heroku's own Eco documentation, the $5 buys a pool of 1,000 dyno hours per month, shared across every Eco dyno on your account. Three consequences follow, and the third one surprises people:
- Web dynos sleep after 30 minutes without traffic, and a sleeping dyno wakes on the next request with a cold-start delay. Sleeping dynos do not burn pool hours, which is the whole trick that makes $5 stretch.
- The pool is account-wide, so five toy apps share the same 1,000 hours. That is genuinely generous for demos and portfolio projects.
- Worker dynos never sleep. They do not serve web requests, so the 30-minute idle rule never triggers. One always-on Eco worker burns roughly 730 to 744 hours in a month all by itself - about three quarters of the entire pool.
Run the numbers on the web + worker shape from the previous section: the worker takes ~744 hours, and a web dyno that is awake even nine or ten hours a day adds ~280 more. You cross 1,000 hours before the month ends, and Heroku's documented behavior at that point is blunt - every Eco dyno on the account is forced to sleep until the next month, and you cannot buy more hours. Your app is simply down. The documented escape hatch is upgrading to Basic at $0.01/hour.
So the Eco tier's real job description is narrow: a single low-traffic web app, or several rarely-visited demos, with no background workers. The moment your project has a queue, a cron loop, or steady daytime traffic, Eco is not a $5 plan - it is a countdown timer. Budget for Basic ($14 for the web + worker pair) from day one.
The RAM ladder is the quiet price trap
Look back at the tier table and follow the memory column instead of the price column. Eco, Basic, and Standard-1X - $5, $7, and $25 - all ship the identical 0.5 GB of RAM. The first Heroku dyno with a full gigabyte is Standard-2X at $50/month, and the next meaningful step is Performance-M at $250 for 2.5 GB.
That ladder shape matters more than any single price. Modern runtimes are memory-hungry - a Rails app with a few gems, a Node service with a heavy dependency tree, or anything running an in-process cache will flirt with 0.5 GB quickly. On Heroku, the fix for "my dyno is hitting its memory limit" is a 2x price jump per process. A web + worker pair that outgrows 0.5 GB goes from $50/month (two Standard-1X) to $100/month (two Standard-2X) in one config change.
For calibration, the same gigabyte elsewhere, verified today: Fly.io sells a shared-cpu-1x machine with 1 GB for $5.92/month in its published Amsterdam pricing, and Railway meters RAM at $10 per GB per month of actual average usage. Heroku's $50-per-GB-ish step is not paying for memory - it is paying for the platform around the memory. That trade can still be worth it, but you should make it with open eyes.
Same workload on Railway and Fly.io, recomputed
Cross-platform price tables usually compare headline tiers, which is how vendors want to be compared. More useful: take the exact web + worker + Postgres stack and recompute it under each platform's actual billing model, with assumptions on the table. Both rival pages were re-fetched today (railway.com/pricing and Fly.io's pricing docs), consistent with our fact-checked baseline figures for both vendors.
Railway charges a subscription plus metered usage: Hobby is $5/month with $5 of usage included, Pro is $20 per seat with $20 included, and the meters run at $10 per GB of RAM per month, $20 per vCPU per month, and $0.15 per GB of volume storage. Assume your three services (web, worker, Postgres) average a combined 1.5 GB of RAM and 0.5 vCPU around the clock, with a 1 GB volume: RAM $15 + CPU $10 + volume $0.15 = $25.15/month on Hobby. That is the "typical load" bar in the chart - and it is honestly not cheaper than Heroku's $19 Basic stack. Railway's advantage shows up at low duty cycles: if the same stack idles near 0.3 GB and 0.05 vCPU on average, metered usage totals about $4.15, which fits inside Hobby's included $5, and your bill is a flat $5. Usage billing rewards spiky little apps and punishes steady loads; our Railway vs Render comparison digs into when that shape helps.
Fly.io prices raw machines by region with no platform fee. Using Fly's published Amsterdam examples from today: a shared-cpu-1x with 512 MB for the web process is $3.32/month, a 256 MB machine for the worker is $2.02, a 1 GB machine running Postgres is $5.92, and a 10 GB volume at $0.15/GB adds $1.50. Total: $12.76/month - the cheapest honest bill of the three, with more total RAM than the Heroku Basic stack. Two caveats keep this honest. First, that Postgres is self-managed: you are running the database on a machine you babysit, which is not equivalent to Heroku's managed Essential tiers (Fly's managed Postgres product is priced separately, and we did not verify its rates today). Second, Fly's paid support starts at $29/month - add it and the price advantage narrows to roughly parity with Heroku's Standard stack. Our Fly.io vs Render breakdown covers who should actually take on that operational trade.
The pattern across all three: Heroku charges the most per unit of compute, Railway charges for what you burn, and Fly charges the least but hands you the pager.
When staying on Heroku is the right call
A pricing article that ends with "migrate" would be dishonest, because at least three situations make Heroku's premium rational in 2026:
- Your Postgres bill is the product. Essential-0 at $5 and Essential-1 at $9 are genuinely competitive managed-database prices, with backups and maintenance handled. If your app is a thin layer over a database you never want to operate, Heroku's markup on dynos partly buys down database ops you would otherwise pay for in time.
- Add-on dependence. Years of accumulated add-ons, buildpacks, and pipeline muscle memory have a real replacement cost. A $40/month price gap takes a long time to repay a two-week migration plus the incidents that follow it.
- The bill is small relative to the team. At $59-$100/month, the entire stack costs less than an hour of engineering time. Optimizing it before product-market fit is effort spent on the wrong problem.
The strategic caveat is platform trajectory rather than price: Salesforce paused active feature development and moved Heroku into sustaining-engineering mode on 2026-02-06, redirecting its strategic focus to Agentforce and AI products. Nothing about today's pricing page is an emergency - the same announcement promised no billing changes for dashboard customers - but paying premium rates on a platform that has stopped shipping new features is a position you should hold deliberately, not by default. Our full Heroku alternatives decision guide maps the exit paths - Railway, Render, Fly.io - by team situation, including when the answer is to stay put.
The bottom line
Heroku's 2026 pricing is not hiding anything - every number here sits in plain sight on the pricing page. The traps are structural instead: an Eco tier whose 1,000-hour pool quietly excludes background workers, a RAM ladder that charges $25 for the same half-gigabyte Basic sells for $7, and a $50 toll at the first full gigabyte. Budget $19/month for a hobby-grade always-on stack, $59 for the Standard entry point, and around $100 once your database earns a Standard Postgres plan. If those numbers annoy you, the alternatives are real and cheaper - but recompute them with your actual duty cycle and your actual appetite for database ops, because that is where the comparison is won or lost, not at the sticker.
All prices verified directly against heroku.com/pricing, Heroku's Eco dyno documentation, railway.com/pricing with Railway's published usage rates, and Fly.io's pricing documentation on 2026-07-11.
USD 1 Decision Check
Need one outside check before you choose?
Use Polar checkout, then email one narrow buying question. ToolPick replies with one practical buyer-risk answer and the next action: buy, trial, delay, compare, or ask a vendor.
No subscription. Manual email answer. If the question is outside one software decision, ToolPick will say so before work starts.
Vendor? Run free check- PayUse Polar checkout. No subscription.
- SendEmail help@neogenesis.app with the order ID and one narrow question.
- ReceiveGet one manual buyer-risk answer by email and the next action.
- One concrete tool, pricing, stack, or alternative question.
- One concise buyer-risk answer by email after checkout handoff.
- One next step: buy, trial, delay, compare, or ask a vendor.
Send it to a teammate or save it for the next renewal check.
๐ฌ Get the Weekly SaaS Digest
New tool reviews, pricing-change alerts, and stack cost tips โ one email a week, one-click unsubscribe. No spam, no fake urgency.
Turn this article into a decision path
Every ToolPick article should lead to a second useful page: another article, a hub, or a calculator action.
Vercel Alternatives 2026: Netlify vs Cloudflare vs RailwayRead the next related article.