# Heroku vs Railway

Canonical: https://inetgeek.com/compare/heroku-vs-railway/

Every value below is read from Heroku's and Railway's own documentation. See https://inetgeek.com/methodology/ for how.

## At a glance

| Criterion | Heroku | Railway |
| --- | --- | --- |
| Entry paid plan | $5 per month (Eco dynos plan, 1000 dyno hours shared across the account) | $5 / month (Hobby) |
| Pricing model | Usage-based on wall-clock time, prorated to the second | A base subscription fee that goes towards usage, with the plan's own credit included; anything beyond the credit is billed as resource usage. |
| When you exceed a cap | 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 | Billed automatically: on the Hobby plan ($5/month, includes $5 of resource usage) usage above the included amount is charged as a delta on top of the subscription — no throttling or suspension is documented |
| Memory (entry plan) | 0.5 GB RAM on the Eco dyno ($5 flat/month, the cheapest paid dyno) and 0.5 GB on Basic. | 48 GB on Hobby ($5/month) — but that is a ceiling, not an allocation. Railway's table states the figure is a maximum including replica multiplication, so it is 8 GB across each of up to 6 replicas, and memory is billed at $10 per GB per month on top of the $5 fee. Recorded without a magnitude because a cap you pay for is not comparable with an allowance you are given. |
| Sites or apps included | 100 apps per account, platform-wide on all plans (Heroku Team 100, Enterprise Team 200) | 50 projects and 50 services per project on Hobby; Pro raises both to 100 and Enterprise is unlimited. |
| Max request duration | 30 seconds (initial window for the web process to return response data) | 15 minutes while data keeps transferring; closed after 5 minutes with no data transferred. Websocket connections are exempt and can stay open indefinitely. |
| Streaming response limit | 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 | Platform-wide: an HTTP request may run up to 15 minutes while data keeps transferring, and is closed after 5 minutes with none. Idle HTTP/1.1 connections close after 60 seconds between requests. WebSocket connections are exempt. Railway documents the connection's duration here, not how the response is delivered. |
| Managed connection pooling | Limited | Supported |
| Git deployment | Supported | Supported |
| Docker deployment | Supported | Supported |
| Scheduled jobs | Supported | Supported |
| Persistent processes | Supported | Supported |
| Persistent storage | Not supported | Supported |
| Managed databases | Supported | Limited |
| Scales to zero | Limited | Limited — Serverless sleeps an idle service, but a slept service still holds a slot and is de-prioritised. |
| Autoscaling | Limited | Limited |
| 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. | 4 regions: California, Virginia, Amsterdam, Singapore |
| Support on entry paid plan | 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. | Community support on Trial and on Hobby, the entry paid plan. Pro gets "Railway support"; Enterprise adds support SLOs. |
| SOC 2 | SOC 1 and SOC 2/SSAE 16/ISAE 3402 (Previously SAS 70 Type II) | SOC 2 Type 2 and SOC 3, both listed under Compliance, with SOC 2 and SOC 3 reports among the documents. The reports are gated rather than public: the Trust Center asks visitors to request access and frames the whole page as starting a security review. |

## Where they differ

### Entry paid plan

- Heroku: $5 per month (Eco dynos plan, 1000 dyno hours shared across the account) ([source](https://devcenter.heroku.com/articles/eco-dyno-hours))
- Railway: $5 / month (Hobby) ([source](https://docs.railway.com/reference/pricing/plans))
- Lean: 50% Heroku / 50% Railway — inversely proportional to the documented price. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Pricing model

- Heroku: Usage-based on wall-clock time, prorated to the second ([source](https://devcenter.heroku.com/articles/usage-and-billing))
- Railway: A base subscription fee that goes towards usage, with the plan's own credit included; anything beyond the credit is billed as resource usage. ([source](https://docs.railway.com/reference/pricing/plans))
- Lean: none. No documented basis to lean either way on this criterion.

### When you exceed a cap

- 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 ([source](https://devcenter.heroku.com/articles/eco-dyno-hours))
- Railway: Billed automatically: on the Hobby plan ($5/month, includes $5 of resource usage) usage above the included amount is charged as a delta on top of the subscription — no throttling or suspension is documented ([source](https://docs.railway.com/pricing/plans))
- Lean: none. No documented basis to lean either way on this criterion.

### Memory (entry plan)

- Heroku: 0.5 GB RAM on the Eco dyno ($5 flat/month, the cheapest paid dyno) and 0.5 GB on Basic. ([source](https://devcenter.heroku.com/articles/dyno-types))
- Railway: 48 GB on Hobby ($5/month) — but that is a ceiling, not an allocation. Railway's table states the figure is a maximum including replica multiplication, so it is 8 GB across each of up to 6 replicas, and memory is billed at $10 per GB per month on top of the $5 fee. Recorded without a magnitude because a cap you pay for is not comparable with an allowance you are given. ([source](https://docs.railway.com/reference/pricing/plans))
- Lean: none. No documented basis to lean either way on this criterion.

### Sites or apps included

- Heroku: 100 apps per account, platform-wide on all plans (Heroku Team 100, Enterprise Team 200) ([source](https://devcenter.heroku.com/articles/limits))
- Railway: 50 projects and 50 services per project on Hobby; Pro raises both to 100 and Enterprise is unlimited. ([source](https://railway.com/pricing))
- Lean: 67% Heroku / 33% Railway — proportional to the documented capacity. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Max request duration

- Heroku: 30 seconds (initial window for the web process to return response data) ([source](https://devcenter.heroku.com/articles/limits))
- Railway: 15 minutes while data keeps transferring; closed after 5 minutes with no data transferred. Websocket connections are exempt and can stay open indefinitely. ([source](https://docs.railway.com/networking/public-networking/specs-and-limits))
- Lean: 3% Heroku / 97% Railway — proportional to the documented capacity. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Streaming response limit

- 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 ([source](https://devcenter.heroku.com/articles/request-timeout))
- Railway: Platform-wide: an HTTP request may run up to 15 minutes while data keeps transferring, and is closed after 5 minutes with none. Idle HTTP/1.1 connections close after 60 seconds between requests. WebSocket connections are exempt. Railway documents the connection's duration here, not how the response is delivered. ([source](https://docs.railway.com/networking/public-networking/specs-and-limits))
- Lean: none. No documented basis to lean either way on this criterion.

### Managed connection pooling

- Heroku: Limited ([source](https://devcenter.heroku.com/articles/postgres-connection-pooling))
- Railway: Supported ([source](https://docs.railway.com/databases/postgresql-pgbouncer))
- Lean: 36% Heroku / 64% Railway — documented support level. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Persistent storage

- Heroku: Not supported ([source](https://devcenter.heroku.com/articles/dynos))
- Railway: Supported ([source](https://docs.railway.com/reference/volumes))
- Lean: 18% Heroku / 82% Railway — documented support level. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Managed databases

- Heroku: Supported ([source](https://devcenter.heroku.com/articles/heroku-postgresql))
- Railway: Limited ([source](https://docs.railway.com/databases))
- Lean: 64% Heroku / 36% Railway — documented support level. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### 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. ([source](https://devcenter.heroku.com/articles/regions))
- Railway: 4 regions: California, Virginia, Amsterdam, Singapore ([source](https://docs.railway.com/reference/regions))
- Lean: 33% Heroku / 67% Railway — proportional to the documented capacity. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### Support on entry paid plan

- 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. ([source](https://www.heroku.com/support/))
- Railway: Community support on Trial and on Hobby, the entry paid plan. Pro gets "Railway support"; Enterprise adds support SLOs. ([source](https://railway.com/pricing))
- Lean: 64% Heroku / 36% Railway — documented support level. inetGeek's own reading, computed from the two values above by the rules at https://inetgeek.com/methodology/, not a provider claim.

### SOC 2

- Heroku: SOC 1 and SOC 2/SSAE 16/ISAE 3402 (Previously SAS 70 Type II) ([source](https://www.heroku.com/policy/security/))
- Railway: SOC 2 Type 2 and SOC 3, both listed under Compliance, with SOC 2 and SOC 3 reports among the documents. The reports are gated rather than public: the Trust Center asks visitors to request access and frames the whole page as starting a security review. ([source](https://trust.railway.com/))
- Lean: neither leads — both document the same answer.

## Which should you choose?

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.

Pick Railway if Teams that want a plan fee which doubles as usage credit, and deploy services straight from a Dockerfile without managing servers. The $5 Hobby fee comes back as $5 of resource usage.

Consider something else: Heroku — The dyno filesystem is ephemeral, and a web process must respond within 30 seconds of receiving a request.

Consider something else: Railway — You need to run in a region outside California, Virginia, Amsterdam or Singapore.

## Documented by only one

One side documents these and the other does not. An absence is a missing source, not a stated "no" — except where a line says the other page was READ on a date and does not mention it, which is a sourced observation and the only one-sided case this site leans on.

- Free tier: Railway: Yes
- Kind of free offer: Railway: Free tier
- What the free plan includes: Railway: A $0 plan alongside Hobby at $5 and Pro at $20. Deployment images on the free and trial tier are retained 24 hours, against 72 on Hobby.
- Egress over allowance: Railway: $0.05 / GB
- Storage (entry plan): Railway: 0.5 GB of volume storage on Free and up to 5 GB on Hobby ($5/month) — a ceiling, not an allocation, and volume storage is billed on usage rather than included. Recorded without a magnitude for the same reason as this record's memory figure: a cap you pay for is not comparable with an allowance you are given.
- Monthly visits cap: Railway: No monthly visit or bandwidth cap is published. Rate limits are platform-wide: about 11,000 HTTP requests per second to a domain, and 10,000 concurrent connections.
- File, inode or volume limit: Heroku: 1000 MB maximum compressed slug size, platform-wide on all plans; raisable via support ticket
- Concurrent builds: Heroku: 10 concurrent builds for verified users without an established payment history; 300 for verified users with one (platform-wide, all plans)
- Containers: Heroku: Supported
- Edge network: Railway: Supported
- Uptime SLA: Railway: Published as availability targets rather than a contractual SLA: 99.9% on Hobby, 99.99% on Pro, 99.999% on Enterprise, which also adds support SLOs.
- Audit logs: Railway: Audit Logging is listed under Product Security, and Data Access Logging under Access Control. Neither is described further and no retention period is given.
  - Heroku: not stated on https://www.heroku.com/policy/security/, read 2026-09-21. Corrections: https://inetgeek.com/contact/
  - Lean: 22% Heroku / 78% Railway — documented, against a vendor page that does not state it (checked 2026-09-21).
- Response time commitment: 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.
- HIPAA: Railway: HIPAA is listed under Compliance and a HIPAA report is among the documents, behind the same access request as the rest. The Trust Center does not mention a business associate agreement.
  - Heroku: not stated on https://www.heroku.com/policy/security/, read 2026-09-21. Corrections: https://inetgeek.com/contact/
  - Lean: 22% Heroku / 78% Railway — documented, against a vendor page that does not state it (checked 2026-09-21).
- GDPR / data residency: Railway: GDPR is listed under Compliance, alongside the EU-US and Swiss-US Data Privacy Frameworks. No region is named and no residency commitment is made anywhere on the page — the listing is about the regime, not about where data sits.
  - Heroku: not stated on https://www.heroku.com/policy/security/, read 2026-09-21. Corrections: https://inetgeek.com/contact/
  - Lean: 22% Heroku / 78% Railway — documented, against a vendor page that does not state it (checked 2026-09-21).
- Encryption at rest: Railway: Encryption-at-rest is listed under Data Security, beside Data Backups and Data Erasure. The Trust Center names the feature and gives no algorithm, scope or key-management detail; disk encryption appears separately under Endpoint Security, which is about staff devices rather than customer data.
  - Heroku: not stated on https://www.heroku.com/policy/security/, read 2026-09-21. Corrections: https://inetgeek.com/contact/
  - Lean: 22% Heroku / 78% Railway — documented, against a vendor page that does not state it (checked 2026-09-21).

## Questions this comparison answers

**Entry paid plan: Heroku or Railway?**

Heroku: $5 per month (Eco dynos plan, 1000 dyno hours shared across the account)
Railway: $5 / month (Hobby)

**When you exceed a cap: Heroku or Railway?**

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
Railway: Billed automatically: on the Hobby plan ($5/month, includes $5 of resource usage) usage above the included amount is charged as a delta on top of the subscription — no throttling or suspension is documented

**Should I choose Heroku or Railway?**

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.
Pick Railway if Teams that want a plan fee which doubles as usage credit, and deploy services straight from a Dockerfile without managing servers. The $5 Hobby fee comes back as $5 of resource usage.
