Skip to content
inetGeek

Fly.io vs Heroku

SEPT 2026 audit

A comparison of Fly.io and Heroku built from values read directly from each provider's own documentation, with the source recorded against every figure.

Reviewed by Palash BagchiUpdated 32 criteria comparedSources last checked

Adoption share

HTTP Archive counts — how much more of the web runs Fly.io than Heroku, among the origins HTTP Archive actually detects. Measured . Source: HTTP Archive.

The short answer

Choose Fly.io if…

Workloads that ship as Docker images and need placement in particular regions. Billing is purely usage-based with no plan tiers, which suits spiky or region-pinned traffic better than a flat monthly fee.

Editorial · Palash Bagchi · approved

Choose Heroku if…

Teams that want to deploy by pushing to Git and let the platform handle the runtime, with Postgres, a scheduler and Docker deploys available on the same platform.

Editorial · Palash Bagchi · approved

Consider something else if…

  • Fly.io: You want a predictable flat bill rather than charges that track the resources provisioned for each app.
  • Heroku: The dyno filesystem is ephemeral, and a web process must respond within 30 seconds of receiving a request.

Neither quite fits? Every other option, ranked by iScore: Fly.io alternatives · Heroku alternatives

13 sourced criteria separate them — see where, with sources, below.

No affiliate links, sponsored placements or paid rankings appear on this site. Ordering follows the sourced data and the stated criteria.

01.

At a glance.

CriterionFly.ioHeroku
Pricing
Pricing modelUsage-based, no compute plan tiers; billing is pro-rated for the time resources are provisioned.Usage-based on wall-clock time, prorated to the second
When you exceed a capNo plan cap to exceed — Fly bills per second for provisioned resources. The only documented enforcement is unspecified automated scaling limits, which surface as an error message (platform-wide, all plans)Service sleeps: on the Eco plan ($5/month for a 1000 dyno-hour pool, the cheapest paid tier) exhausting the pool forces every Eco dyno on the account to sleep for the rest of the month, and extra hours cannot be bought
Limits
Memory (entry plan)
256 MB on shared-cpu-1x, the cheapest Machine at $1.94/month in Ashburn (iad), the region the pricing table shows by default.
0.5 GB RAM on the Eco dyno ($5 flat/month, the cheapest paid dyno) and 0.5 GB on Basic.
File, inode or volume limit8 GB rootfs (deployed image) limit per Machine, platform-wide on all plans; exceeding it fails the image push at deploy time1000 MB maximum compressed slug size, platform-wide on all plans; raisable via support ticket
Execution
Streaming response limit
No duration or size ceiling documented. Streaming works, but Fly Proxy buffers responses before compressing them, so progressive server-side rendering needs Content-Encoding: none set on those responses.
Platform-wide (router): 30 seconds to send the first byte, then a rolling 55-second idle window — if no data is sent for 55 seconds the connection is terminated
Managed connection pooling
Supported
Limited
Deployment
Git deployment
Limited
Supported
Docker deploymentSupportedSupported
Scheduled jobs
Limited
Supported
Infrastructure
Persistent processesSupported — A stopped or suspended Machine still bills for its root filesystem at $0.15 per GB per month.Supported
Persistent storage
Supported
Not supported
Managed databasesSupportedSupported
Scales to zero
Supported
Limited
AutoscalingLimited — Two forms: autostop/autostart of existing Machines, and metrics-based autoscaling.Limited
Regions
17 regions
2 regions on the Common Runtime, which is what a standard dyno runs in: eu (Europe) and us (United States). A further 10 — Dublin, Frankfurt, London, Montreal, Mumbai, Oregon, Singapore, Sydney, Tokyo and Virginia — exist only in Private Spaces, an Enterprise product.
Support
Support on entry paid plan
Community support is free. Paid support is a separate subscription on top of compute, not a plan tier: Standard $29/month, Premium $199/month.
Ticket-based support to technical or billing staff for all customers. Heroku Enterprise adds Salesforce Success Plans — Standard, Premier and Signature — which are what buy a named contact and a committed response.
Response time commitment36-hour first response on Standard, the cheapest paid support plan at $29/month.Best effort for a business-stopping issue on the plans any customer can buy. Heroku Enterprise Success Plans commit to 2 days in business hours, 1 hour, or 15 and 30 minute updates. Business hours are Monday to Friday, 9am-9pm Eastern.

Only criteria both providers publish appear here; a tinted cell marks a real difference. Criteria only one of them documents are listed below, and an absence there means we found no source — not that the feature is missing. How we source this.

The small bar above a value is inetGeek's own lean toward that side — computed from the same facts shown, never a number the provider published. See the picker below "The short answer" to weigh only the criteria you care about.

02.

Where they differ.

Pricing model

Fly.io
Usage-based, no compute plan tiers; billing is pro-rated for the time resources are provisioned.
Heroku
Usage-based on wall-clock time, prorated to the second
Sources (2) →

When you exceed a cap

Fly.io
No plan cap to exceed — Fly bills per second for provisioned resources. The only documented enforcement is unspecified automated scaling limits, which surface as an error message (platform-wide, all plans)
Heroku
Service sleeps: on the Eco plan ($5/month for a 1000 dyno-hour pool, the cheapest paid tier) exhausting the pool forces every Eco dyno on the account to sleep for the rest of the month, and extra hours cannot be bought
Sources (2) →
  • Fly.io Resource Pricing · Fly Docs ↗

    “Organizations may be subject to automated scaling limits to prevent abuse or to help with capacity planning. Email the address in the error message if you run into such a limit and it's getting in your way.”

    Read 2026-09-05 · official pricing · Report a correction

  • Eco Dyno Hours | Heroku Dev Center ↗

    “When you use all your Eco dyno hours for a given month, all Eco dynos on your account are forced to sleep for the rest of the month. You can't purchase additional dyno hours.”

    Read 2026-09-05 · official docs · Report a correction

Memory (entry plan)

Fly.io

256 MB on shared-cpu-1x, the cheapest Machine at $1.94/month in Ashburn (iad), the region the pricing table shows by default.

Heroku

0.5 GB RAM on the Eco dyno ($5 flat/month, the cheapest paid dyno) and 0.5 GB on Basic.

Sources (2) →

File, inode or volume limit

Fly.io
8 GB rootfs (deployed image) limit per Machine, platform-wide on all plans; exceeding it fails the image push at deploy time
Heroku
1000 MB maximum compressed slug size, platform-wide on all plans; raisable via support ticket
Sources (2) →

Streaming response limit

Fly.io
No duration or size ceiling documented. Streaming works, but Fly Proxy buffers responses before compressing them, so progressive server-side rendering needs Content-Encoding: none set on those responses.
Heroku
Platform-wide (router): 30 seconds to send the first byte, then a rolling 55-second idle window — if no data is sent for 55 seconds the connection is terminated
Sources (2) →
  • Content Encoding — Fly Docs ↗

    “The proxy buffers responses before compressing them. That can break HTML streaming—e.g., progressive server-side rendering. To avoid buffering, disable compression by setting Content-Encoding: none for those responses”

    Read 2026-09-05 · official docs · Report a correction

  • Request Timeout | Heroku Dev Center ↗

    “Heroku supports HTTP features such as long-polling and streaming responses. An application has an initial 30 second window to respond with a single byte back to the client. However, each byte transmitted thereafter (either received from the client or sent by your application) resets a rolling 55 second window. If no data is sent during the 55 second window, the connection will be terminated.”

    Read 2026-09-05 · official docs · Report a correction

Managed connection pooling

Fly.io
Supported
Heroku
Limited
Sources (2) →

Git deployment

Fly.io
Limited
Heroku
Supported
Sources (2) →

Scheduled jobs

Fly.io
Limited
Heroku
Supported
Sources (2) →

Persistent storage

Fly.io
Supported
Heroku
Not supported
Sources (2) →

Scales to zero

Fly.io
Supported
Heroku
Limited
Sources (2) →
  • Automatically stop and start Machines · Fly Docs ↗

    “Use autostop/autostart to automatically start and stop or suspend existing Machines based on incoming requests. [...] you don't pay for their CPU and RAM when they're in a stopped or suspended state.”

    Read 2026-09-05 · official docs · Report a correction

  • Eco Dyno Hours | Heroku Dev Center ↗

    “If an app has an Eco web dyno, and that dyno receives no web traffic in a 30-minute period, it sleeps. In addition to the web dyno sleeping, if you have a worker Eco dyno, it also sleeps. Eco web dynos do not consume Eco dyno hours while sleeping.”

    Read 2026-09-05 · official docs · Report a correction

Regions

Fly.io

17 regions

Heroku

2 regions on the Common Runtime, which is what a standard dyno runs in: eu (Europe) and us (United States). A further 10 — Dublin, Frankfurt, London, Montreal, Mumbai, Oregon, Singapore, Sydney, Tokyo and Virginia — exist only in Private Spaces, an Enterprise product.

Sources (2) →
  • Regions - Fly.io Documentation ↗

    “You can host your apps in any of the following regions. Region ID Region Location Gateway MPG ams Amsterdam, Netherlands ✓ ✓ arn Stockholm, Sweden ✓ cdg Paris, France ✓ dfw Dallas, Texas (US) ✓ ✓ ewr Secaucus, NJ (US) ✓ fra Frankfurt, Germany ✓ ✓ gru Sao Paulo, Brazil ✓ iad Ashburn, Virginia (US) ✓ ✓ jnb Johannesburg, South Africa lax Los Angeles, California (US) ✓ ✓ lhr London, United Kingdom ✓ ✓ nrt Tokyo, Japan ✓ ✓ ord Chicago, Illinois (US) ✓ ✓ sin Singapore, Singapore ✓ ✓ sjc San Jose, California (US) ✓ ✓ syd Sydney, Australia ✓ ✓ yyz Toronto, Canada ✓ ✓”

    Read 2026-09-27 · official docs · Report a correction

  • Regions | Heroku Dev Center ↗

    “eu Europe Common Runtime us United States Common Runtime dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces montreal Montreal, Canada Private Spaces mumbai Mumbai, India Private Spaces oregon Oregon, United States Private Spaces singapore Singapore Private Spaces sydney Sydney, Australia Private Spaces tokyo Tokyo, Japan Private Spaces virginia Virginia, United States Private Spaces”

    Read 2026-09-05 · official docs · Report a correction

Support on entry paid plan

Fly.io
Community support is free. Paid support is a separate subscription on top of compute, not a plan tier: Standard $29/month, Premium $199/month.
Heroku
Ticket-based support to technical or billing staff for all customers. Heroku Enterprise adds Salesforce Success Plans — Standard, Premier and Signature — which are what buy a named contact and a committed response.
Sources (2) →
  • Fly.io Pricing ↗

    “Support Community support is free and always has been. The paid plans add an easily nerd-sniped support team that feels like an extension of your own.”

    Read 2026-09-14 · official pricing · Report a correction

  • Heroku Support ↗

    “Heroku Enterprise customers have access to a range of Salesforce Success Plans that offer additional guidance and support. All Customers Standard Success SELF-GUIDED RESOURCES Premier Success EXPERT GUIDANCE Signature Success PROACTIVE, PERSONALIZED PARTNERSHIP”

    Read 2026-09-14 · official site · Report a correction

Response time commitment

Fly.io
36-hour first response on Standard, the cheapest paid support plan at $29/month.
Heroku
Best effort for a business-stopping issue on the plans any customer can buy. Heroku Enterprise Success Plans commit to 2 days in business hours, 1 hour, or 15 and 30 minute updates. Business hours are Monday to Friday, 9am-9pm Eastern.
Sources (2) →
  • Fly.io Pricing ↗

    “Standard $29 / mo Basic support for single developers and small teams. Great for personal projects and startups. 36-hour first response time Technical architecture support”

    Read 2026-09-14 · official pricing · Report a correction

  • Heroku Support ↗

    “Business Stopping Issue Response Times Best effort 2 days, during business hours* 1 hour 15 and 30 minute updates Other Issue Response Times Best effort 2 days, during business hours* 2 days, during business hours* 2 days, during business hours*”

    Read 2026-09-14 · official site · Report a correction

When these numbers change, hear about it. Sources are re-checked monthly; a repricing goes out as a short note.

Confirm by email; unsubscribe from any issue. Your address goes to Kit and nowhere else — what we do with it.

03.

Documented by only one.

These criteria are published by one provider and not the other. An absence here means we have not found a source, not that the feature is missing — except where we say we read the other provider's own page on a given date and it does not state it. Those rows lean, and the provider can correct them with a link.

Free tierFly.io: No
Kind of free offerFly.io: Free trial
What the free plan includesFly.io: Two hours of machine runtime or seven days of access, whichever runs out first, before a payment method is required.
Credit card to startFly.io: No — Apps stop when the trial's 2 machine-hours or 7 days run out, whichever comes first, until a card is added.
When the free offer endsFly.io: 7 days, or when the trial's included resources run out — whichever comes first.
Entry paid planHeroku: $5 per month (Eco dynos plan, 1000 dyno hours shared across the account)
Egress over allowanceFly.io: Egress to the public internet is $0.02/GB in North America and Europe, $0.04/GB in Asia Pacific, Oceania and South America, and $0.12/GB in Africa and India.
Sites or apps includedHeroku: 100 apps per account, platform-wide on all plans (Heroku Team 100, Enterprise Team 200)
Concurrent buildsHeroku: 10 concurrent builds for verified users without an established payment history; 300 for verified users with one (platform-wide, all plans)
Max request durationHeroku: 30 seconds (initial window for the web process to return response data)
CPU time limitFly.io: Platform-wide, per Machine size: shared vCPUs get a 5ms CPU quota per 80ms period (6.25%); performance vCPUs get the full 80ms. Quotas are shared across a Machine's vCPUs, and tasks are throttled for the rest of the period once the quota is reached.
ContainersHeroku: Supported
Edge networkFly.io: Limited
SOC 2Heroku: SOC 1 and SOC 2/SSAE 16/ISAE 3402 (Previously SAS 70 Type II)Fly.io: not stated on its own page when read on 2026-09-21 — corrections welcome · every such claim about Fly.io.
Private networking / VPCFly.io: No Terraform, no VPC configurations, no IAM: apps talk directly to each other on private networks with zero configuration .Heroku: not stated on its own page when read on 2026-09-21 — corrections welcome · every such claim about Heroku.
04.

Questions this comparison answers.

When you exceed a cap: Fly.io or Heroku?

Fly.io: No plan cap to exceed — Fly bills per second for provisioned resources. The only documented enforcement is unspecified automated scaling limits, which surface as an error message (platform-wide, all plans)

Heroku: Service sleeps: on the Eco plan ($5/month for a 1000 dyno-hour pool, the cheapest paid tier) exhausting the pool forces every Eco dyno on the account to sleep for the rest of the month, and extra hours cannot be bought

Should I choose Fly.io or Heroku?

Pick Fly.io if Workloads that ship as Docker images and need placement in particular regions. Billing is purely usage-based with no plan tiers, which suits spiky or region-pinned traffic better than a flat monthly fee.

Pick Heroku if Teams that want to deploy by pushing to Git and let the platform handle the runtime, with Postgres, a scheduler and Docker deploys available on the same platform.

Provider pages

Related comparisons

Comments

Every page here is sourced and dated.