
Migrating from Heroku to Render in 2026 typically costs $3,000 to $12,000 in engineer time for a small or medium app, and $20,000 to $50,000 for complex apps with many addons, custom buildpacks, or strict zero-downtime requirements. The biggest drivers are: addon count, database size, build configuration complexity, and whether you need a true zero-downtime cutover.
Render is the closest-spirit successor to Heroku. Both are git-push platforms with managed Postgres, managed Redis, background workers, and cron jobs. That overlap is exactly why it's the easiest migration target. Most teams complete the move in 1 to 3 weeks of part-time work by one engineer.
You have options: Fly.io, Railway, AWS App Runner, DigitalOcean App Platform, Vercel (web tier only), and bare-metal Kubernetes. Render wins on familiarity. The mental model maps almost one-to-one:
Procfile and app.json = Render's render.yamlIf your team knows Heroku, the Render dashboard feels familiar within 30 minutes. That's the single biggest cost lever. Fly.io is cheaper at scale, Railway has nicer DX for hobby projects, and AWS gives you control. None feel like Heroku the way Render does.
The dollar figure is mostly engineer hours. Here's the typical breakdown for a medium app (one web service, one worker, Postgres, Redis, two or three addons, 1 to 5 GB of data):
render.yaml authoring (2 to 6 hours). Translate Procfile, addons, and config to Render's blueprint format.pg_dump and restore, plus logical-replication cutover if you can't afford downtime.Total: roughly 20 to 50 engineer hours for a clean migration. At a senior contractor rate of $150 to $250 per hour, that's $3,000 to $12,500. Complex apps with 10+ addons, custom buildpacks, large databases (50 GB+), or strict zero-downtime SLAs balloon to 100 to 250 hours, hence the $20k to $50k upper band.
| Approach | Cost | Timeline | Pros | Cons |
|---|---|---|---|---|
| DIY (your own engineer) | $0 in cash, 20 to 100 hours of their time | 2 to 6 weeks elapsed | No vendor risk; full context retained | Pulls a senior off product work; risk of unfamiliar gotchas |
| US dev agency | $8,000 to $35,000 fixed bid | 3 to 6 weeks | Predictable scope; experience with similar migrations | Expensive; often outsourced offshore anyway |
| Render's migration partners | $5,000 to $20,000 | 2 to 4 weeks | Vendor-curated; familiar with the platform | Limited capacity; you still need to maintain it after |
| Freelancer (Upwork / Toptal) | $3,000 to $15,000 | 2 to 4 weeks | Cheaper than an agency | Vetting overhead; quality varies; rarely AI-native |
| Cadence | $500–$2,000/wk | 48-hour trial then 1 to 3 weeks | AI-native engineers, weekly billing, replace any week, no recruiter loop | Less suited to enterprise procurement with long PO cycles |
Most founders land in the $3k to $8k range with a mid or senior contractor part-time. Agency quotes are usually padded for project-management overhead you don't need on a 3-week job.
This is where the surprises live. Render's first-party catalog is smaller than Heroku's. Most addons have a clean replacement, but a few force you to a third-party SaaS. Here's the practical mapping:
| Heroku addon | Render replacement | Notes |
|---|---|---|
| Heroku Postgres | Render Postgres | Same Postgres, slightly different sizing; export via pg_dump, import via psql. |
| Heroku Data for Redis | Render Key Value | Was called Render Redis; rebranded over a licensing dispute. Same Redis API. |
| Heroku Scheduler | Render Cron Job | Free, native, cron syntax. |
| Papertrail | Better Stack, Datadog, or Logtail | Render has built-in log viewing for the last 7 days; ship to one of these for longer retention. |
| Heroku Connect (Salesforce sync) | Custom integration or Workato / Segment | No direct Render equivalent. This is the single hardest addon to replace. |
| SendGrid | SendGrid direct | Same vendor, no Heroku wrapper. Update API key. |
| Mailgun | Mailgun direct | Same as above. |
| Bonsai Elasticsearch | Elastic Cloud or OpenSearch on AWS | Render has no managed search. |
| Cloudinary, Imgix | Same SaaS, direct signup | Detach from Heroku billing, sign up directly. |
| New Relic, Sentry, Bugsnag | Same SaaS, direct signup | Same as above. |
| Rollbar | Rollbar direct | Same as above. |
| Heroku Postgres followers | Render Postgres read replicas | Same concept, different config. |
| Heroku Apps for GitHub | Render's native GitHub integration | Built in, no setup. |
Render's log drain is HTTPS-based, so any modern log SaaS works. Render Key Value is a drop-in for Heroku Redis from your app's perspective; only your provisioning scripts change. If you have Heroku Connect, budget extra: Salesforce sync is the one addon where the replacement is genuinely a custom build, often 40 to 80 hours of work.
Render is materially cheaper than Heroku for the same workload, but the gap narrows as you scale. Here's what a typical small SaaS pays per month:
| Component | Heroku (as of May 2026) | Render (as of May 2026) | Monthly delta |
|---|---|---|---|
| Web dyno (1 GB RAM) | $50 (Standard-2X) | $25 (Standard) | -$25 |
| Worker dyno (1 GB RAM) | $50 | $25 | -$25 |
| Postgres (4 GB RAM, 32 GB storage) | $50 (Standard-0) | $30 (Standard) | -$20 |
| Redis / Key Value (100 MB) | $15 (Mini) | $10 (Starter) | -$5 |
| Scheduled jobs | $0 (Heroku Scheduler free) | $0 (Cron Job free) | $0 |
| Log retention (7 days) | $7 (Papertrail Choklad) | $0 (built in) | -$7 |
| SSL on custom domain | Free (ACM) | Free (Let's Encrypt) | $0 |
| Total | ~$172/mo | ~$90/mo | -$82/mo (~48% savings) |
Annualized, that's roughly $1,000 in savings, which alone pays back a $3,000 migration in 3 years. Most teams hit payback faster because they also drop addons they were over-paying for.
At larger scale (4+ web dynos, 32 GB Postgres, multi-region), the savings widen in raw dollars but narrow in percentage. Render still wins for most workloads under $5k/month in spend.
A clean cost-modeling exercise is similar to what we walk through in the cost to migrate from MySQL to Postgres: the headline migration bill is dwarfed by the recurring savings after 12 months.
Render is close to Heroku but not identical. These are the gotchas that cost teams an extra day or two if they don't plan for them.
On Heroku, every config var is available at runtime AND during the slug build. On Render, only environment variables marked as build-time are available during yarn build or npm run build. If your Next.js or Vite build reads NEXT_PUBLIC_* or VITE_* vars, check the "Available at build time" box for each one. Forgetting this is the most common day-one issue.
Render's free web services sleep after 15 minutes of inactivity and take 30 to 60 seconds to spin back up. If you're moving a production app, always start on the Starter plan ($7/mo per service) or higher. The free tier is fine for static sites and personal projects, not customer-facing services.
Heroku Pipelines (staging to production promotion) doesn't have a direct Render equivalent. You use preview environments plus a render.yaml blueprint per environment. It's actually cleaner once configured, but the first setup takes 2 to 4 extra hours.
You pick a region per service, and inter-region traffic isn't free. Keep your web service, worker, Postgres, and Redis in the same region (Oregon and Frankfurt are the most popular).
Render aggressively restarts services that fail health checks. If your app has slow boot (Rails apps with lots of initializers, Django with heavy startup), bump the health-check timeout in render.yaml. The default grace period is too tight for many production apps.
The migrations that come in cheap have a few things in common. We see these patterns weekly when teams book engineers on Cadence for Heroku-to-Render work.
render.yaml). Defining everything in code makes the second environment (staging) free and the third (preview) trivial.render.yaml files, write the addon replacement scripts, and diff the env-var lists in minutes. A senior who isn't using these tools daily will take 2 to 3x as long.If you don't already have an engineer with Render experience, booking a senior or lead on Cadence for 2 to 4 weeks at $1,500 to $2,000 per week is usually cheaper than an agency and faster than recruiting. Every engineer on Cadence is AI-native by baseline, vetted on Cursor, Claude Code, and Copilot fluency before they unlock bookings, which directly compresses the render.yaml and addon-translation work.
A working 3-step plan that has shipped dozens of times:
heroku config -a yourapp), list addons (heroku addons -a yourapp), and dump your Procfile and app.json. This becomes your migration spec.render.yaml and a Postgres fork (heroku pg:backups:capture then restore to Render Postgres). Run smoke tests against this for a full day.If you're orchestrating a Next.js app rather than a Rails or Django one, the moves overlap heavily with patterns covered in the cost to build a Next.js application end-to-end. Next.js on Render is a slightly different story because Render gives you a Node server (good for ISR and webhooks) whereas Vercel and Netlify give you a CDN-first deployment.
The cheapest path is always to do the work yourself if you have the bandwidth. The fastest path, especially if your engineer is heads-down on product, is to book a senior contractor for a 2-week sprint. See what it costs on Cadence before committing to an agency quote; the weekly rate is usually 40 to 60% less than a fixed-bid migration, and you can cancel the second week if you don't need it.
The same logic applies to other build vs migrate decisions. We walk through the underlying math in the cost to build an admin dashboard and the cost to add image generation to your app: the recurring monthly run-rate matters more than the one-time bill.
For a small or medium app (one web service, one worker, Postgres, Redis, a few addons), plan on 1 to 3 weeks of part-time work by one engineer. Complex apps with 10+ addons, custom buildpacks, or a 50 GB+ database can take 4 to 8 weeks. The actual cutover (DNS switch) is typically 30 to 90 minutes of downtime, or near-zero with logical replication.
Yes, for most workloads under $5,000 per month of total spend. A typical small SaaS pays around 45 to 50% less on Render for the same dyno and database sizes. At larger scale the percentage savings shrink but the dollar savings grow. The biggest savings are on the database tier where Render's Standard Postgres is roughly 40% cheaper than Heroku's equivalent.
Yes, using Postgres logical replication. You set up Render Postgres as a logical replica of Heroku Postgres, run both apps in parallel pointed at the same DB, switch DNS to Render, then promote the replica. This adds 8 to 20 hours of work and is worth it if your SLA requires it. Most B2B apps with maintenance windows skip this and take a 5-minute outage at 3 AM.
This is the single hardest addon to replace because Render has no direct equivalent. Your options are: (1) rebuild the sync with a Salesforce SDK and a worker (40 to 80 hours), (2) use Workato, Tray.io, or Segment as a middleware ($300 to $1,500 per month, low engineering cost), or (3) keep Heroku Connect on a minimal Heroku app just for the sync and point it at Render Postgres. Option 3 is what most teams pick.
Almost never. The main changes are: replace the Heroku Postgres URL with the Render Postgres URL, the Heroku Redis URL with the Render Key Value URL, and mark any build-time env vars as available at build time in the Render dashboard. The codebase itself usually doesn't change.
Yes, if your priorities are different. Fly.io is cheaper at global multi-region scale and stronger for edge compute. Railway has nicer developer UX and a more generous hobby-tier. Render wins for the platform closest to Heroku with the broadest addon and integration story. For a 1-to-1 Heroku swap, Render wins on least-surprise.