← Files RenderARCHIVED FILE

skills/render-migrate-from-heroku/references/service-mapping.md

10.6 KB · Oct 4, 2026 · 06:02 UTC

↓ Download file

# Heroku → Render Service Mapping

## How to Use This Reference

Look up the Heroku plan from `ps_list` (dyno size) or `list_addons` (add-on plan slug) and use the corresponding Render plan in the Blueprint or MCP creation call. If the Heroku plan is unknown, use the fallback default.

## Compute (Dynos → Services)

Match by RAM to avoid out-of-memory issues. Worker and cron dynos use the same size mapping as web dynos.

| Heroku dyno | Heroku RAM | Heroku $/mo | Render `plan` value | Render RAM | Render $/mo |
|---|---|---|---|---|---|
| Eco | 512 MB | $5 | `starter` | 512 MB | $7 |
| Basic | 512 MB | $7 | `starter` | 512 MB | $7 |
| Standard-1X | 512 MB | $25 | `starter` | 512 MB | $7 |
| Standard-2X | 1 GB | $50 | `standard` | 2 GB | $25 |
| Performance-M | 2.5 GB | $250 | `pro` | 4 GB | $85 |
| Performance-L | 14 GB | $500 | `pro max` | 16 GB | $225 |
| Performance-L-RAM | 30 GB | $500 | `pro ultra` | 32 GB | $450 |
| Performance-XL | 62 GB | $750 | Custom | 64 GB | ~$712 |
| Performance-2XL | 126 GB | $1,500 | Custom | 128 GB | ~$1,426 |

**Fallback default:** `starter` (when Heroku dyno size is unknown)

**Notes:**
- Worker dynos on Heroku can be any size (Standard-1X, Performance-M, etc.) — use the same mapping based on the dyno size reported by `ps_list`
- Cron jobs use the same mapping — Render cron plans match web/worker plans
- Performance-L-RAM has 4 CPU (half of Pro Ultra's 8 CPU). For non-enterprise customers, default to `pro ultra`. Enterprise customers may negotiate custom pricing (~$356) with Render for a closer CPU match.
- For Performance-XL and Performance-2XL, instruct the user to [contact Render](https://render.com/contact) for custom sizing. The estimates above (~$712, ~$1,426) are based on proportional custom pricing and may vary.
- Enterprise contracts change per-dyno pricing — the "units per dyno" multiplier varies (e.g., Performance-M = 8 units, Performance-L = 16 units of a Standard-1X). Heroku prices above reflect pay-as-you-go rates.

## Postgres (Heroku Postgres → Render Postgres)

Heroku has deprecated Mini and Basic plans. Current tiers are Essential, Standard, and Premium.

Render has three Postgres tiers:
- **Basic** — entry-level, for development and low-traffic apps
- **Pro** — balanced CPU-to-RAM ratio (1:4), for production workloads
- **Accelerated** — memory-optimized CPU-to-RAM ratio (1:8), for high-performance and memory-intensive workloads

Map Heroku Essential → Render Basic. For Standard and Premium, both map to the **same Render plan per tier** — Standard as a single instance, Premium with HA enabled (doubling the Render cost). Tiers 0 and 2 map to Render Pro; tiers 3 through 9 map to Render Accelerated.

### Essential and legacy plans → Render Basic

| Heroku plan | Heroku disk | Heroku $/mo | Render `plan` value | Render `diskSizeGB` | Render $/mo |
|---|---|---|---|---|---|
| Essential-0 | 1 GB | $5 | `basic-256mb` | 1 | $6 + storage |
| Essential-1 | 10 GB | $9 | `basic-256mb` | 10 | $6 + storage |
| Essential-2 | 32 GB | $20 | `basic-1gb` | 32 | $19 + storage |
| Mini (legacy, EOL) | 1 GB | $5 | `basic-256mb` | 1 | $6 + storage |
| Basic (legacy, EOL) | 10 GB | $9 | `basic-256mb` | 10 | $6 + storage |

### Standard and Premium plans → Render Pro / Accelerated

Heroku Standard and Premium share the same tier numbering (X-0 through X-9) with identical vCPU, RAM, and storage specs. The difference is that **Premium includes HA by default**. On Render, both map to the same plan — enable HA on Render to match Premium (which doubles the Render base price for a separate replica).

| Heroku tier | Heroku Standard $/mo | Heroku Premium $/mo | vCPU | RAM | Storage | Render `plan` value | Render `diskSizeGB` | Render $/mo | Render HA $/mo |
|---|---|---|---|---|---|---|---|---|---|
| X-0 | $50 | $200 | 2 | 4 GB | 64 GB | `pro-4gb` | 65 | $55 + storage | $110 + storage |
| X-2 | $200 | $350 | 2 | 8 GB | 256 GB | `pro-8gb` | 256 | $100 + storage | $200 + storage |
| X-3 | $400 | $750 | 2 | 15 GB | 512 GB | `accelerated-16gb` | 512 | $160 + storage | $320 + storage |
| X-4 | $750 | $1,200 | 4 | 30 GB | 768 GB | `accelerated-32gb` | 770 | $350 + storage | $700 + storage |
| X-5 | $1,400 | $2,500 | 8 | 61 GB | 1 TB | `accelerated-64gb` | 1024 | $750 + storage | $1,500 + storage |
| X-6 | $2,000 | $3,500 | 16 | 122 GB | 1.5 TB | `accelerated-128gb` | 1536 | $1,500 + storage | $3,000 + storage |
| X-7 | $3,500 | $6,000 | 32 | 244 GB | 2 TB | `accelerated-256gb` | 2048 | $2,500 + storage | $5,000 + storage |
| X-8 | $4,500 | $8,500 | 64 | 488 GB | 3 TB | `accelerated-512gb` | 3072 | $6,000 + storage | $12,000 + storage |
| X-9 | $5,800 | $11,000 | 96 | 768 GB | 4 TB | `accelerated-768gb` | 4096 | $9,000 + storage | $18,000 + storage |

**How to read the tier number:** The add-on plan slug from `list_addons` looks like `heroku-postgresql:standard-0` or `heroku-postgresql:premium-4` — the number after the hyphen is the tier (X-0, X-4, etc.). Both Standard-4 and Premium-4 map to the same Render plan (`accelerated-32gb`); Premium just needs HA enabled.

**HA pricing note:** Heroku Premium pricing includes HA by default. To match this on Render, enable HA in the Dashboard or Blueprint, which adds a standby replica at the same cost as the primary (effectively 2x). This significantly impacts pricing competitiveness on larger instances — present both the single-instance and HA costs to the user so they can make an informed decision.

### Disk sizing

On Render, storage is billed separately at **$0.30/GB/month** and configured via the `diskSizeGB` field in the Blueprint. Storage is provisioned in **5 GB increments** (minimum 1 GB) and **cannot be scaled down** once provisioned.

**Heuristic:** Carry over the Heroku disk size as the `diskSizeGB` value. Since `diskSizeGB` must be 1 or a multiple of 5, round up to the nearest valid value.

**Disclaimer to present to the user:** Heroku bundles a fixed storage allocation with each plan (e.g., Standard-4 includes 768 GB). On Render, compute and storage are billed separately — compute is the plan price above, and storage is $0.30/GB/month in 5 GB increments. Storage cannot be scaled down once provisioned, so right-size based on actual usage rather than the Heroku allocation. Check your current disk usage with `heroku pg:info` (look for `Data Size`) — if your actual data is much smaller than the allocated disk, start with a smaller `diskSizeGB` to save on storage costs. You can always expand later from the Render Dashboard.

**Fallback default:** `basic-1gb` with no `diskSizeGB` (when Heroku Postgres plan is unknown — Render uses a default disk size)

**Notes:**
- Render Pro and Accelerated both support HA (enable separately in Dashboard or Blueprint)
- For databases beyond tier X-9, contact Render support
- Get actual disk usage from `pg_info` (`Data Size` field) to inform the `diskSizeGB` recommendation

## Key Value (Heroku Redis / Key-Value Store → Render Key Value)

Heroku has rebranded Redis as "Key-Value Store" (Valkey-based). Heroku Redis plans use non-sequential numbering (0, 1, 2, 3, 5, 7, 9, 10, 12, 14). Match by the exact plan number from `list_addons`.

| Heroku plan | Heroku memory | Heroku connections | Heroku $/mo | Render `plan` value | Render RAM | Render connections | Render $/mo |
|---|---|---|---|---|---|---|---|
| Mini | 25 MB | 20 | $3 | `free` | 25 MB | 50 | $0 |
| Premium-0 | 50 MB | 40 | $15 | `starter` | 256 MB | 250 | $10 |
| Premium-1 | 100 MB | 80 | $30 | `starter` | 256 MB | 250 | $10 |
| Premium-2 | 250 MB | 200 | $60 | `starter` | 256 MB | 250 | $10 |
| Premium-3 | 500 MB | 400 | $120 | `standard` | 1 GB | 1,000 | $32 |
| Premium-5 | 1 GB | 1,000 | $200 | `standard` | 1 GB | 1,000 | $32 |
| Premium-7 | 7 GB | 10,000 | $750 | `pro plus` | 10 GB | 10,000 | $250 |
| Premium-9 | 10 GB | 25,000 | $1,450 | `pro max` | 20 GB | 20,000 | $550 |
| Premium-10 | 25 GB | 40,000 | $3,500 | Custom | — | — | Contact Render |
| Premium-12 | 50 GB | 65,000 | $6,500 | Custom | — | — | Contact Render |
| Premium-14 | 100 GB | 65,000 | $12,500 | Custom | — | — | Contact Render |

**Fallback default:** `starter` (when Heroku Redis plan is unknown)

**Notes:**
- Redis pricing heavily favors Render — most tiers cost significantly less on Render than the Heroku equivalent.
- The add-on plan slug from `list_addons` looks like `heroku-redis:mini` or `heroku-redis:premium-0` — use the part after the colon to look up the mapping. Plans 4, 6, 8, 11, and 13 do not exist on Heroku.
- Render Key Value requires `ipAllowList` in the Blueprint (use `0.0.0.0/0` for public access)
- Neither Heroku nor Render supports Redis HA.
- For Premium-10 and above, instruct the user to [contact Render](https://render.com/contact) for custom sizing.

## Runtime Mapping

| Heroku Buildpack | Render Runtime | `runtime` param |
|---|---|---|
| heroku/nodejs | Node | `node` |
| heroku/python | Python | `python` |
| heroku/go | Go | `go` |
| heroku/ruby | Ruby | `ruby` |
| heroku/java | Docker | `docker` |
| heroku/php | Docker | `docker` |
| heroku/scala | Docker | `docker` |
| Multi-buildpack | Docker | `docker` |

## Region Mapping

| Heroku Region | Render Region | `region` param |
|---|---|---|
| us | Oregon (default) | `oregon` |
| eu | Frankfurt | `frankfurt` |

## Not Directly Mappable (Manual)

These Heroku features require manual alternatives on Render:
- **Heroku Pipelines** → Use Render Preview Environments + manual promotion
- **Review Apps** → Render Pull Request Previews
- **Heroku Add-ons Marketplace** → Find equivalent third-party services
- **Heroku ACM (SSL)** → Render auto-provisions TLS for custom domains
- **Private Spaces** → Contact Render for private networking options
- **Heroku Kafka** → Not supported on Render. Recommend cloud providers (Confluent Cloud, AWS MSK, etc.)
- **Hirefire** → Not supported on Render. Recommend Render's native [horizontal autoscaling](https://render.com/docs/scaling) or JudoScale (which is supported).
- **Bandwidth** → Heroku allows ~2 TB/app/month (rarely enforced). Render bandwidth varies by workspace plan: 100 GB (Hobby), 500 GB (Professional), 1 TB (Organization). Additional bandwidth is billed at $0.10/GB.

## Environment Variables to Filter

Always exclude these when migrating env vars:

**Render auto-generates:**
- `DATABASE_URL`
- `REDIS_URL`, `REDIS_TLS_URL`

**Heroku-specific (no Render equivalent):**
- `HEROKU_APP_NAME`
- `HEROKU_SLUG_COMMIT`
- `HEROKU_SLUG_DESCRIPTION`
- `HEROKU_DYNO_ID`
- `HEROKU_RELEASE_VERSION`
- `PORT` (Render sets its own)

**Add-on connection strings (replace with new service URLs):**
- `PAPERTRAIL_*`
- `SENDGRID_*`
- `CLOUDAMQP_*`
- `BONSAI_*`
- `FIXIE_*`
- Any other `*_URL` vars pointing to Heroku add-on services

SHA-256: c1ff1e178b2ac43f97756d9d22f70a502ac79a6e396d6c4ef49a1997a97a1b5c