How we tested
We ran Fly.io as production for three real workloads over 75 days: a Rails app for an indie SaaS, a multiplayer game backend with persistent WebSocket connections, and a small-model AI inference service using A10 GPU machines. We benchmarked region placement, measured cold-start latency for auto-stopped machines, audited the November 2025 invoice, and tracked 5 real support tickets. Pricing was verified against actual invoices.The verdict, in 60 seconds
Where the 88 comes from
Eight weighted dimensions on the hosting rubric. Fly.io scores 88 by being unusually strong on scaling and DX while still earning back the reputation for uptime reliability.| Dimension | Weight | Fly.io | What it measures |
|---|---|---|---|
| Performance (TTFB) | 20% | 92 | Firecracker microVMs + global regions deliver excellent latency for long-running workloads. |
| Pricing value | 16% | 86 | Per-second billing + auto-stop makes economics favorable for bursty workloads. |
| Uptime | 14% | 88 | 99.95% measured. Compute layer is reliable; managed Postgres still earning back trust. |
| Developer experience | 12% | 90 | `fly deploy` from any Dockerfile is genuinely magic. Web dashboard is functional, not delightful. |
| Support response | 10% | 80 | Email + Discord. Discord community is fast; email tickets are slow on standard plans. |
| Regions / PoPs | 10% | 88 | 35 cities across 6 continents — strong global coverage but fewer than Cloudflare's PoPs. |
| Scaling & auto-scale | 10% | 92 | Auto-scale + auto-stop + per-second billing is the best scaling model in the container PaaS category. |
| Security & DDoS | 8% | 86 | SOC 2 Type II, GDPR. Container isolation via Firecracker. No native WAF (use Cloudflare). |
What it gets right
Containers, globally, with one command
`fly deploy` from any directory with a Dockerfile and `fly.toml`. The platform builds, ships, and places your container in your specified regions. For a 6-region deployment, total time from `git commit` to globally-live: ~2 minutes. The closest competitor is Cloudflare Containers (still in beta as of late 2025); next is AWS ECS + Fargate + ALB which takes hours to set up correctly.
For teams that already think in containers, Fly is the closest thing to 'just deploy globally' that exists.
Persistent connections actually persist
WebSockets, long-polling, gRPC streams — they stay open. Compare to Lambda / Workers where every request is its own thing. We ran a multiplayer game backend in production: 8 hours of continuous WebSocket connection per session, 4 regions, autoscaling on concurrent connection count. It just worked.
This is the use case where serverless platforms force awkward architectures (e.g., separate WS server on Fly while everything else is on Vercel). On Fly the WS server and the API and the database can all be on the same platform.
Auto-stop changes the economics for low-traffic services
Configure your machine to auto-stop after 5 minutes of no requests. It hibernates. When a request comes, it starts in 200-800ms. You pay for storage during sleep ($0.50/GB-month for volumes) but no compute. For staging environments, internal tools, and low-traffic prod services, the savings are significant.
Our test internal admin tool: 70% reduction in monthly bill from auto-stop alone, with users experiencing 400ms cold start ~2x per day.
GPU machines for inference economics
A10 at $2.50/hr, A100 at $3.50/hr — billed per second when running, auto-stop available. For AI inference workloads with bursty traffic (chat UIs, image generation, structured extraction), this beats reserved GPU capacity meaningfully.
We ran a Llama 3.1 8B inference service: average 14 requests/min during business hours, near-zero overnight. Bill: $42/month with auto-stop. Equivalent reserved on Lambda Labs: $480/month.
Where it falls short
Postgres history is the lingering concern
Fly's first Postgres product (2022-23) had real outages, data integrity scares, and customer post-mortems that went semi-viral on Hacker News. The 2024 Managed Postgres (from the MPP acquisition) is genuinely better, but the reputation lag is real — most operators we interviewed pair Fly compute with Neon, Supabase, or external Postgres for mission-critical data.
For non-critical Postgres (sessions, caches, secondary state), Fly Postgres is fine. For your transactional core, the safer call is external managed DB.
Pricing model has too many variables
Per-second machine billing, volume storage, anycast IP costs, bandwidth tiers, GPU minutes — there's a lot to track. We've seen teams under-estimate bills by 30-50% in the first month because they didn't model auto-restart frequency, volume snapshot retention, or extra-region machine counts correctly.
Tip: turn on cost alerts in the dashboard. Review the first 2-3 monthly invoices line-by-line before declaring the cost model understood.
Cold starts are real
Auto-stopped machines wake in 200-800ms typical, 1-2s p99. Not bad — faster than AWS Fargate cold starts (3-8s) but slower than Cloudflare Workers (5-15ms). For most user-facing UIs this is fine. For sub-100ms-critical paths, keep at least one machine warm or use Cloudflare in front for cached responses.
Documentation lags product surface
Fly ships features fast. Documentation often catches up weeks later, sometimes via blog posts before official docs. Discord community fills the gap — most operational questions get answered there in minutes — but for teams that need vendor-grade reference docs, it's frustrating.
Support tier is the weak dimension
Standard support: community Discord (fast, helpful) and email (slow). Higher tiers exist with SLA-backed support but cost real money. For production incidents, Discord is often faster than the email queue — which is a feature of the community but a signal of the support investment.
Pricing reality
Fly's pricing is per-second machine billing plus storage plus bandwidth — variable, but for the right workload, very economical.| Machine class | Monthly (always-on) | vCPU + RAM | Best for |
|---|---|---|---|
| shared-cpu-1x, 256MB | $1.94 | 1 vCPU shared, 256MB | Tiny workers, hobby |
| shared-cpu-1x, 1GB | $5.70 | 1 vCPU shared, 1GB | Production small apps |
| shared-cpu-2x, 2GB | $13.60 | 2 vCPU shared, 2GB | Medium production |
| performance-2x, 4GB | $54.50 | 2 vCPU dedicated, 4GB | Steady CPU workloads |
| a10 GPU machine | $1,825 always-on (or $2.50/hr) | 8 vCPU, 32GB + A10 | AI inference (auto-stop strongly advised) |
Benchmark matrix
Benchmarks against the container PaaS and global compute alternatives.| Workload | Fly.io | Render | Railway | AWS ECS Fargate |
|---|---|---|---|---|
| Deploy time, first push | 1:42 | 2:50 | 3:20 | 8-15min |
| WebSocket persistent connection | Native | Native | Native | Native (ALB needed) |
| Global multi-region by default | Yes | No (single region) | No | Manual (complex) |
| Auto-stop for low-traffic | Yes (per-second) | No (always-on) | No (always-on) | Partial (Lambda for FaaS) |
| Cost @ 5 always-on small instances | $28 | $35 | $25 | $110 |
Cost-to-performance ratio
Cost per active service-hour, the metric that matters for bursty production workloads.| Scenario | Fly cost / mo | Render cost / mo | AWS Fargate / mo |
|---|---|---|---|
| Single small service, always-on | $5.70 | $7 | $22 |
| 3-region service, always-on | $17.10 | n/a (single region) | $66 (manual setup) |
| Low-traffic service w/ auto-stop | $2-3 | $7 (no auto-stop) | n/a (Lambda needed) |
| GPU inference, 4hr/day | $300 | n/a | $1,200 (g5.xlarge reserved) |
Hardware & software stack
Fly.io runs Firecracker microVMs on bare metal hardware in 35 cities globally. The runtime is Docker-compatible — your container images run with VM-grade isolation but container-grade startup speed. Storage is local NVMe volumes (replicated across machines on request). Anycast IPv4/IPv6 routes traffic to the closest healthy region. The control plane runs on top of Hashicorp Nomad. GPU machines were added in 2024 with NVIDIA A10 and A100 in select regions (DFW, IAD, FRA initially, expanding).Scenario simulation: what Fly.io costs for your work
Three operating shapes where we tested Fly.io against realistic team scenarios.Scenario A: Indie SaaS, Rails app
Workload: Single Rails app, 3k MAU, Postgres on Neon, 2 regions
Monthly cost: $25-35/mo
Sweet spot. Two shared-cpu-1x 1GB machines across NY + Frankfurt. Auto-stop one of them overnight. Pair Postgres with Neon for safety. Total bill ~$30 — cheaper than Heroku, more flexible than Render.
Scenario B: Multiplayer game backend
Workload: Game server with WebSocket connections, 8 regions, autoscale 2-20 machines per region
Monthly cost: $400-650/mo depending on player load
The killer Fly use case. Real-time WebSockets that survive across regions, autoscale on concurrent connection counts, per-second billing when load drops. Comparable setup on AWS: $2,500+/mo before engineering time.
Scenario C: AI inference, bursty workload
Workload: Llama 3.1 8B chat backend, ~14 req/min business hours, near-zero overnight
Monthly cost: $40-60/mo with auto-stop
Auto-stop transforms the economics. Machine runs only when requests arrive, cold starts in ~600ms, sleeps when idle. Equivalent always-on reserved GPU: $480-600/mo. The 10x savings justify accepting first-token cold start.
Use-case match matrix
| Workload | Fly.io fit | Better alternative |
|---|---|---|
| Rails / Django / Phoenix app | Excellent | Render is alternative; Fly wins on multi-region |
| WebSocket-heavy real-time | Excellent | Purpose-built; nothing else matches |
| Multiplayer game backend | Excellent | Region routing + WebSocket persistence is the killer combo |
| AI inference, bursty | Excellent | Auto-stop GPU machines are economically transformative |
| Postgres-as-a-service for production | Mixed | Use Neon or Supabase; pair with Fly compute |
| Static site / blog | Avoid | Use Cloudflare Pages or Vercel — Fly is overkill |
| Serverless functions (sub-second) | Mixed | Vercel Fluid or Cloudflare Workers win on cold start |
| Batch processing jobs | Strong | Spin up + run + auto-stop is great fit |
| Long-running cron jobs | Excellent | Fly's machine model handles this naturally |
| Heavy egress media serving | Mixed | Bandwidth pricing tiers add up; Cloudflare R2 better for media |
Stability & uptime history
Fly publishes a granular status page; the 2024 reliability improvements show up in the numbers.| Period | Stated SLA | Measured uptime | Major incidents |
|---|---|---|---|
| Last 30 days | 99.99% | 100.00% | 0 |
| Last 90 days | 99.99% | 99.96% | 2 (longest: 42 min) |
| Last 12 months | 99.99% | 99.95% | 6 (longest: 2hr 30min) |
| Worst month | 99.99% | 99.62% | Mar 2025, DFW region storage event |
Longitudinal pricing data
Pricing history. Fly has held core machine pricing while expanding features.| Year | shared-cpu-1x 1GB | performance-2x 4GB | GPU A10 / hr |
|---|---|---|---|
| 2021 | $5.70 | $53 | n/a |
| 2022 | $5.70 | $54.50 | n/a |
| 2023 | $5.70 | $54.50 | n/a |
| 2024 | $5.70 | $54.50 | $2.50 (launched) |
| 2025 | $5.70 | $54.50 | $2.50 |
| 2026 YTD | $5.70 | $54.50 | $2.50 |
Community sentiment
Community sentiment across G2, Reddit r/fly, Hacker News, Discord, and GAX user interviews.| Source | Sample size | Avg rating | Top complaint | Top praise |
|---|---|---|---|---|
| G2 | 420 reviews | 4.5 | Postgres history | Global deploy DX |
| Reddit r/fly | Continuous discussion | 4.3 | Documentation gaps | WebSocket support |
| Hacker News | Continuous threads | 4.2 | 2023 reliability incidents (historical) | Container model + auto-stop |
| GAX user interviews | 22 engineers | 4.5 | Pricing complexity | Real-time + game backend fit |
Who should avoid this
Skip this if you fall into any of these buckets. Naming it up-front beats a support ticket later.
- Teams that want fully managed Postgres without third-party dependencies
- Workloads needing sub-100ms cold start latency consistently
- Static-only sites where Cloudflare Pages or Vercel is structurally simpler
- Heavy-egress media workloads where R2 + Workers economics win
- Operations needing white-glove support on standard plans
- Teams without container literacy or Docker workflow
Testing evidence
machine class p50 p95 p99 shared-cpu-1x 256MB 220ms 480ms 810ms shared-cpu-1x 1GB 280ms 540ms 920ms performance-2x 4GB 340ms 620ms 1.1s gpu-a10 2.4s 4.8s 8.2s
day_phase machines_active cost_per_hour peak (20:00-23:00) 18 (8 regions) $4.20/hr mid (12:00-20:00) 10 (5 regions) $2.30/hr low (00:00-08:00) 4 (2 regions) $0.92/hr TOTAL MONTH $480
ROI calculator
Plug your team's workload to see what Fly.io costs you. Numbers update live.
Inputs reflect November 2025 list pricing. Live calculator lets you model machine fleets across regions including auto-stop scenarios.
The verdict
Fly.io earns 88 by being the best container PaaS for global deployment in 2026. The platform matured past its 2022-23 growing pains: compute is reliable, the Machines API is stable, GPU machines opened a transformative new use case. The lingering concern is Postgres reliability, easily mitigated by pairing Fly compute with external managed DBs. For real-time applications, WebSocket-heavy services, multiplayer backends, long-running app servers, and bursty AI inference, Fly's runtime + pricing model are the best fit available. For static frontends or pure serverless functions, Vercel and Cloudflare remain simpler choices. The right play for many SaaS teams in 2026: Fly for the stateful backend services, Cloudflare or Vercel for the static / edge layer.If Fly.io doesn't fit, consider
Render
Render is easier to use if you don't need multi-region or auto-stop.
Read Render review →Cloudflare
If your workload fits Workers (128MB, JS/WASM), Cloudflare cold starts are dramatically faster.
Read Cloudflare review →Hetzner
If you have ops capacity, Hetzner gives you bare metal at 1/3 the price — pair with K8s for similar capabilities.
Read Hetzner review →