If you priced your stack in January and haven't looked since, you're budgeting against a pricing page that no longer exists. In Q3 2026 every major PaaS moved a different lever — Railway tightened its usage-credit math, Render rewrote its egress allowance, Fly.io turned two previously bundled items into metered lines, and Vercel landed its fourth pricing change in two years with Active CPU. One of those changes probably already affects your next invoice.
This post re-audits all four on one page. We reconstruct how each platform actually bills in August 2026, what Vercel's four-step repricing sequence changed, and where a concrete mid-traffic workload lands on each bill versus a flat Hetzner box. No vendor page does that comparison for you.
The Four Models at a Glance
The headline difference isn't price — it's what counts as billable.
| Dimension | Railway (usage-based) | Render (fixed tier) | Fly.io (per-second Machines) | Vercel (Active CPU / Fluid) |
|---|---|---|---|---|
| Entry fee | $5 Hobby / $20 Pro — both are usage credits, not flat allowances | $7/mo per service (Individual); $19/user/mo Pro workspace | No base plan; pay per Machine-second | $0 Hobby (non-commercial), $20/seat Pro |
| Compute metric | vCPU + RAM per second ($20/vCPU-mo, $10/GB-mo) | Fixed instance size, always-on | Per Machine per second, even at zero traffic | Active CPU time + provisioned memory + invocations |
| What "idle" costs | Billed by the second while running | Full instance price whether idle or saturated | Billed while Machine is "started" | Not billed during I/O wait (Active CPU) |
| Scale to zero | No — services are always-on; you size them | No — except free tier spins down after 15 min | Yes — with auto-stop; billed only while started | Yes — Fluid Compute suspends between requests |
| Egress | $0.05/GB | 5GB Hobby / 25GB Pro included, then $0.15/GB | Included with nuances; private inter-region now metered | 1TB included on Pro, then $0.15/GB |
| Disk / snapshots | $0.15/GB-mo volumes | Disks attached to paid services | $0.08/GB-mo snapshots (Jan 2026) | Blob $0.023/GB-mo |
| Billing surprise in 2026 | Credit makes $5 look flat; real two-service app is $15–20 | Egress allowance cut 20x on Hobby (100GB → 5GB Apr 23, 2026) | Snapshot + inter-region networking became metered | Fluid + Active CPU inverted idle cost |
Keep that table open. Every section below fills in its row with the line items that move first when traffic grows.
Railway: Usage-Based With a Credit That Isn't a Cap
Railway's model is the simplest to explain and the easiest to misread. You pay $5/month on Hobby or $20/month on Pro, and that fee is not a service allowance — it's a usage credit. Every second a service runs, Railway meters vCPU time at roughly $0.00000772/vCPU-second (about $20/vCPU-month) and RAM at $0.00000386/GB-second (about $10/GB-month), plus $0.15/GB-month for volumes and $0.05/GB for egress. The plan fee just pre-pays that meter.
What that means for a realistic stack:
Worked example — two always-on Node services (API + web), 512MB RAM / 0.5 vCPU each, 50GB volume, 100GB egress for the month.
- Compute: ~$10 (0.5 vCPU) + ~$5 (0.5GB RAM) per service × 2 = ~$30
- Volumes + egress: ~$7.50 + ~$5 = ~$12.50
- Minus Hobby $5 credit = ~$37 billed? No — Railway's docs note most small apps land at $5–20/month precisely because the per-second rates are quoted at full-month-equivalent but real CPU time for a lightly loaded API is far below 100% utilization. A lightly loaded API averaging 5% CPU burns roughly $0.50–1/month in vCPU, not $10.
That gap between "provisioned price" and "utilized price" is Railway's whole story. An always-on 1 vCPU box that sits idle still burns per-second CPU ticks — low, but never zero, unlike Vercel's Active CPU — so two small services realistically clear the Hobby credit and land around $12–18/month before egress. Railway disabled its CDN in May 2026, so every byte now traverses origin egress rather than being absorbed at the edge — a subtle push upward on the egress line that didn't exist last year.
When Railway wins: Prototypes and environments with few services and spiky-but-idle workloads where average CPU stays low. When it doesn't: Multiple always-on services with steady CPU — the credit is quickly exhausted and you pay the full per-second rate 730 hours a month.
Render: Fixed Per-Service, but Egress Is the Meter That Moves
Render is the inverse of Railway. Compute is fixed: you pick an instance type (Starter at $7/month per service is the current floor for always-on, with higher tiers for more CPU/RAM) and you pay that whether the service does 1 request or 1 million. Volumes attach to paid services. The platform's April 23, 2026 workspace restructuring is what re-audit readers must catch.
On April 23, Render moved from subscription-plus-add-ons to workspace-based plans and, critically, slashed included bandwidth. Hobby went from a flat 100GB to 5GB included, Pro to 25GB included, with overage at $0.15/GB. Every legacy workspace auto-migrates by August 1, 2026. For apps that serve images, JS bundles, or video, egress — not compute — is now the first meter to bite.
Worked example — API + web + Postgres, each on Starter ($7 × 3 = $21), 50GB disk, 200GB egress.
- Compute: $21 (three services, fixed)
- Egress: 200GB − 25GB (Pro included) = 175GB × $0.15 = $26.25
- Total: ~$47.25/month before databases — and $26 of it is bandwidth that used to fit inside the old 100GB allowance.
A 200GB month that cost ~$21 + $15 overage (100GB free) under the old allowance now costs ~$21 + $26.25 — an 18% increase from a single allowance change, before any instance price moved. Render's free tier, meanwhile, still spins down after 15 minutes of idle (about a one-minute cold start), so it remains fine for demos and broken for anything with user-facing latency expectations.
When Render wins: Few services, bandwidth-light APIs where fixed compute is predictable and egress stays under 25GB. When it doesn't: Media-heavy or high-traffic frontends where 200–500GB egress dwarfs the instance bill — the $7 service looks cheap until the $0.15/GB line doubles it.
Fly.io: Per-Second Machines — And the Two Lines That Weren't There in January
Fly.io bills Machines per second for the entire time they are started, even at zero traffic. A shared-cpu-1x with 256MB that stays started all month is about $2.02/month in raw compute — Fly's famous floor price — but production apps aren't one shared-cpu toy. A performance-1x with 2GB left provisioned runs roughly $32/month, and every Machine (web, worker, replica) bills independently. Auto-stop mitigates idle cost, but only if you configure it aggressively.
The 2026 change that triggers the re-audit is not the base rate but two new meters that didn't exist in 2025:
- Volume snapshots — January 1, 2026: $0.08/GB-month for snapshot storage (first 10GB free). Default retention keeps multiple snapshots, so real cost runs 2–5× the raw per-GB rate. A 50GB volume with three retained snapshots bills ~$12/month in snapshots alone, not $4.
- Inter-region private networking — February 2026: Traffic between regions over Fly's WireGuard mesh now bills at $0.01/GB in / $0.02/GB out, with same-region traffic still free. Managed Postgres replication across regions falls squarely into this line.
Worked example — three Machines (web + API + Postgres), 50GB volume with 3× snapshots, 100GB inter-region replication traffic.
- Compute: ~$15–35 depending on sizing and auto-stop aggressiveness
- Snapshots: ~50GB × 3 × $0.08 − 10GB free ≈ $11–12
- Private networking: 100GB × ~$0.015 blended × direction ≈ $1.50–2
- Total delta from "what used to be free": +$13–14/month that last year's budget sheet shows as $0
Fly also published interim pricing comparisons in early 2026 noting Railway bills $20/vCPU-month and $10/GB-month per second while Fly bills per-Machine second — the right mental model is that Fly rewards aggressive auto-stop and punishes "leave everything started," whereas Railway always bills low-idle CPU even though it never sleeps.
When Fly wins: Workloads that can auto-stop aggressively or reserve compute blocks, and single-region deploys with minimal snapshot retention. When it doesn't: Multi-region apps with always-on Machines and standard snapshot retention, where the two new lines add a second rent check on top of compute.
Vercel: Four Repricings to Active CPU — What Actually Changed
No platform in this set moved its pricing more often. Vercel's sequence from 2024 to 2026 is the context most teams misprice against because they remember the page from whichever change they last noticed.
| # | Date | Change | What it meant |
|---|---|---|---|
| 1 | June 2024 | Granular infrastructure pricing | Two blended metrics (bandwidth + functions) split into granular, individually optimizable meters. Hobby stayed free (non-commercial). |
| 2 | Feb 2025 | Fluid Compute (GA) | Functions coalesce on shared instances; cold starts reportedly cut ~99% and costs cut 85–90% for eligible workloads vs legacy per-invocation model. |
| 3 | June 2025 | Active CPU pricing on Fluid Compute (default after redeploy) | Bill for CPU time only while code actively executes — not during I/O wait (e.g., waiting on an LLM response). Memory + invocations still bill. |
| 4 | 2025–2026 tweak | Bandwidth/functions limits and bundled adjustments | Pro overage and included-bandwidth tuning; Blob storage at $0.023/GB-month; Postgres/KV deprecated to Neon/Upstash (Dec 2024), so DB is now an external line. |
The conceptual shift in steps 2–3 is what deserves the re-read. Before Active CPU, a function waiting 2 seconds on an LLM response billed 2 seconds of GB-seconds. Now it bills near-zero CPU for that wait — only the milliseconds where your code touches the CPU. Vercel's own launch framing calls this "lower pricing with Active CPU" because AI-heavy workloads, which spend most wall-clock time idle, see the largest drop. The pricing metrics became:
- Active CPU time (CPU actually executing) — the new primary driver
- Provisioned memory — still billed while the instance holds it
- Invocations — per-request fees remain
For a non-AI API, the difference is modest; for an agent that chains four LLM calls and waits ~8 seconds wall-clock but burns only 200ms of CPU, the old model taxed the wait and the new one doesn't. That's why Vercel rebuilt its compute model twice in 18 months — per-invocation serverless metering fundamentally penalizes idle-wait workloads, and AI workloads are almost all wait.
Illustrative delta — 1M function invocations, 300 vCPU-hours of Active CPU, 2TB egress, 1 seat Pro ($20).
- Active CPU (300 hrs): ~$19–38 depending on instance class (Vercel's listed rate versus third-party recomputes varies by CPU tier)
- Egress (2TB, 1TB included on Pro): ~$150 at $0.15/GB overage
- Pro seat: $20
- Note: this is where Vercel's bill concentrates differently than Railway/Render/Fly — egress and Active CPU are separate knobs, and 2TB of egress dwarfs compute on every platform.
Teams that last priced Vercel against the pre-2024 blended bundle are under-counting invocations and over-counting idle tax; teams that priced it last quarter may still be modeling GB-seconds instead of Active CPU.
Same App, Four Bills — Head-to-Head Recompute
This is the table the vendor pages won't give you. One representative mid-traffic workload, priced once on each platform's August 2026 meters, against a flat Hetzner baseline.
Workload assumptions: Next.js frontend (SSR + API routes), Postgres, ~500k requests/month, ~200GB egress, 50GB volume, two app services plus DB. Not cherry-picked for any vendor — it's the kind of "past hobby, not yet scale" app that makes the PaaS-vs-flat-box decision real.
| Line | Railway | Render | Fly.io | Vercel Pro (1 seat) | Hetzner CX22 (Bex / Cluster API) |
|---|---|---|---|---|---|
| Compute | ~$12–18 (per-second, low avg CPU) | $21 (3 × $7 Starter, fixed) | ~$15–35 (3 Machines, auto-stop dependent) | ~$10–25 (Active CPU + memory + invocations) | ~$5–6 (CX22, 2 vCPU/4GB, always-on) |
| Egress | ~$10 (200GB × $0.05/GB) | ~$26 (175GB × $0.15 after 25GB incl.) | ~$0–5 (included/private-net нюансы) | ~$15 (200GB minus 1TB incl. = ~$0 on this volume; ~$15 at higher volume) | $0 (20TB included) |
| Disk / snapshots | ~$7.50 (50GB × $0.15) | Included with services | ~$11–12 snapshots + volume | ~$1 (Blob) | Included on box |
| Seat / base fee | $5–20 credit applied | Included | $0 | $20 seat | $0 (fleet owned) |
| Realistic total | ~$35–55/month | ~$47–55/month | ~$30–55/month | ~$30–60/month | ~$5–6/month |
| What moves first when you grow | Egress + steady-state CPU | Egress overage | Snapshots + inter-region traffic | Egress beyond 1TB + Active CPU burst | Nothing until you need a bigger box |
A few things that table makes concrete:
- On this volume, egress decides the winner more than compute. Render's egress line alone eclipses its instance bill; Railway's $0.05/GB is the cheapest per-GB but its no-scale-to-zero compute never drops out; Fly's two new 2026 lines add ~$13 before egress even counts; Vercel's 1TB Pro allowance makes 200GB look free but 2TB makes it dominant.
- The range matters. Fly at ~$30 assumes aggressive auto-stop and same-region Postgres; Fly at ~$55 assumes always-on Machines with multi-region replication. Railway at ~$35 assumes low average CPU; peg one service at sustained 50% CPU and add ~$10/month. Single-point comparisons hide more than they reveal — sensitivity is the point.
- Hetzner's flat box is not "cheaper at any cost." At ~$5–6/month with 20TB included bandwidth, it wins raw cost for this workload by 5–9× — but that number excludes operational labor, which is exactly what a PaaS bills for. The comparison is honest only if you name the trade: metered convenience versus owning the machine and its remediation queue.
How to Read Any PaaS Pricing Page Going Forward
Pricing pages oscillate between "we cut prices" and "we added granularity." Both can raise your bill. Five questions catch the drift before it lands on your invoice:
- What does idle cost? Always-on per-second (Railway, started Fly Machines, fixed Render instances) versus scale-to-zero/Active CPU (Vercel Fluid). If you run cron jobs or low-traffic staging, idle dominates.
- What's the egress story? Included allowance, per-GB overage, and whether CDN/static traffic counts. Render's 100GB→5/25GB shift is a textbook example of allowance being the real price.
- Are snapshots, backups, or private networking billed separately? Fly's Jan/Feb 2026 lines are a pattern, not an exception — managed services monetize bundled primitives as they mature.
- Is the entry fee a credit or an allowance? Railway's $5/$20 is a credit against metered usage, not a cap. You clear it and keep paying. Render's fixed tiers and Vercel's seat are allowances with hard shape.
- Which dimension bursts first for your app? Image-heavy frontends burst egress; chatty APIs burst invocations/Active CPU; multi-region bursts snapshot and private-net. Model the dimension your app actually stresses, not the headline rate.
Re-audit on that checklist each quarter. The platforms aren't hiding price hikes — they're moving the meter that matters to a different line, and only a same-workload recompute surfaces it.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. If this comparison has you pricing a flat Hetzner box with honest bandwidth, star the repo on GitHub or deploy your first app today.