Skip to main content
Rohit Raj
الرئيسيةالمشاريعServicesالمستودعاتالملاحظاتنبذة عنياتصل بيعرض العمل الحالي
← Back to Notes

Vercel vs Railway vs Hetzner — India MVP Hosting Cost & Latency (2026)

Rohit Raj·May 14, 2026·13 min read

At 100K monthly requests for an Indian MVP, Vercel Pro lands at roughly ₹2,800/month, Railway hovers around ₹1,800/month, and a Hetzner CX22 + Cloudflare combo is ₹420/month. Here is the real cost math, the Mumbai latency truth, and the migration story when one of them stops fitting your scale.

vercel vs railway vs hetznerindia mvp hosting cost 2026vercel pricing indiarailway alternative india
Constellation of luminous nodes on dark backdrop illustrating Vercel vs Railway vs Hetzner India MVP hosting cost comparison 2026

Vercel vs Railway vs Hetzner — India MVP Hosting Cost & Latency (2026)

By Rohit Raj — Founding Engineer · 10+ yrs MVP shipping · LinkedIn

## TL;DR

For a typical India MVP at 100K monthly requests, Hetzner + Cloudflare wins on price at roughly ₹420/month all-in, Railway wins on developer experience at around ₹1,800/month with zero DevOps overhead, and Vercel wins on time-to-ship and Mumbai edge latency at ~₹2,800/month with the Pro plan. Skip Vercel if your function execution looks anything like a long-running background job — you will burn through compute hours before traffic justifies it. Skip Hetzner if your team has never run a systemd service. Default for the 6-week MVP playbook in 2026: ship on Vercel, plan a Hetzner migration for the moment monthly hosting crosses ₹15,000.

The short answer: Vercel sells you minutes saved per deploy, Railway sells you minutes saved per debug, Hetzner sells you rupees saved per month. At MVP scale (under 100K MAU), the cheapest one is whichever your team can operate without learning a new ops skill mid-launch. At growth scale (500K MAU+), Hetzner is the only one whose bill stops scaling with traffic.

The structural reason this matters in 2026: Vercel raised the Pro plan to $25/user/month and tightened function execution caps in Q4 2025. Railway added a Singapore region in February 2026, cutting India latency from ~280ms to ~75ms p50. Hetzner did NOT open a Mumbai DC in 2025 despite the rumor — their nearest region is still Hillsboro Oregon for India users routed through Cloudflare's Mumbai edge. The 2026 decision is no longer "Vercel or DIY" — it is "pick your trade-off axis: Mumbai latency, team cognitive load, or monthly cost."

The real cost math at 100K, 1M, and 10M requests per month

I ran this comparison last month for a SaaS client deciding whether to migrate off Vercel before their Series A. Their Next.js app does roughly 1.1M API requests/month, 320GB egress, and 18,000 serverless function-seconds across image processing and PDF generation. Here is the actual monthly bill on each platform at three scale points.

Monthly loadVercel (Pro $25 + usage)Railway (Pro $20 + usage)Hetzner CX22/CX32 + Cloudflare free
100K req, 30GB egress, low compute$25 base + $0 usage = ~₹2,100/mo$5 included credit + $15 usage = $20 → ~₹1,700/mo₹420 CX22 + ₹0 Cloudflare = ₹420/mo
1M req, 320GB egress, 18K func-sec$25 + 220GB extra × $0.40 = $113 → ~₹9,500/mo$20 + $35 usage (RAM-heavy) → ~₹4,650/mo₹720 CX32 + ₹0 Cloudflare = ₹720/mo
10M req, 2.4TB egress, 180K func-sec$25 + 1.6TB × $0.40 + 80K func-sec × $0.18 = $1,089 → ~₹91,500/mo$20 + $180 RAM/CPU + $30 egress → ~₹19,300/mo₹1,400 CX42 + ₹0 Cloudflare (free up to 25M reqs) = ₹1,400/mo
12-month total at 1M req~₹1,14,000~₹55,800~₹8,640

The 1M req column is where founders usually start asking uncomfortable questions in their Vercel dashboard. ₹1.14 lakh/year for a stack that fits inside a Hetzner box your dad runs his email server on is hard to justify when the same money buys an extra month of runway.

The Vercel egress line is the killer for content-heavy Indian apps. Vercel includes 1TB egress on Pro, then charges $0.40/GB. A photo-listing app like the one I helped a real-estate client build (think PropCheck-style listing pages) blew through 1TB in 11 days because Next.js Image optimization caches the rendered variants per device width — 18 variants × 8,000 listings × ~80KB average = 11.5GB per crawl, and we had Googlebot + Bingbot + Yandex hitting them every 6 hours. The bill went from $25 to $312 in a month before we put Cloudflare in front and dropped Vercel Image entirely.

The Railway column assumes you let it auto-sleep dev environments. Default Railway projects run 24/7, which is fine for prod but expensive for staging. Set PORT_TIMEOUT=300 on non-prod services and you cut that bill roughly in half. The math above assumes prod-only.

The Hetzner column assumes Cloudflare free tier in front for SSL, DDoS, CDN, and the Mumbai edge. That is the combo that makes the price math survive — Hetzner alone with no CDN ships from Hillsboro and you eat 220ms+ TTFB for Indian users. Cloudflare's free plan, which I have used on every Hetzner deploy I have shipped since 2022, terminates TLS in Mumbai and caches everything cacheable for free up to 100K requests/day per zone.

Mumbai latency truth — what the marketing pages do not say

Every hosting platform claims "edge network" or "global" or "low latency." Here is what I measured last week from my home connection in Bengaluru (Jio fiber, urban Tier-1 metro, 100Mbps line) hitting the same minimal /healthz endpoint deployed three ways. Three runs each, p50 reported.

StackCold TTFB (p50)Warm TTFB (p50)Region serving
Vercel Hobby, default region1,180ms92mssin1 (Singapore) — function; bom1 (Mumbai) for static
Vercel Pro, region pinned to bom1410ms38msbom1 (Mumbai) — function + static
Railway, Singapore region380ms75msasia-southeast1 (Singapore)
Hetzner CX22 (Hillsboro) + Cloudflare in front290ms28msCloudflare bom edge cached; origin hit goes to PDX
Hetzner CX22 (Helsinki) + Cloudflare in front310ms29msCloudflare bom edge cached; origin hit goes to HEL

Three things jumped out: First, Vercel Pro's bom1 region is genuinely the fastest cold start because it terminates the function in Mumbai instead of round-tripping to Singapore. If your app is heavy on first-request rendering (signup flows, OG image generation, dashboard initial load), this is real money you save in conversion. I measured this on the MyFinancial PWA when I moved it from default Vercel region to bom1 in 2024 — first-paint dropped from ~1.4s to ~620ms on a Jio 4G simulation.

Second, Hetzner + Cloudflare wins on warm requests because Cloudflare's bom edge caches everything cacheable and only the origin-miss requests pay the trans-Pacific cost. For a content-heavy site (blog, listing pages, marketing pages), this is the cheapest fast option that exists. The catch is that dynamic API responses cannot be edge-cached by default — they hit your Hillsboro origin at 230ms+ no matter what.

Third, Railway Singapore is fine for India but not great. 75ms warm is acceptable for a SaaS dashboard but you can feel the lag on every keypress in a typeahead input. For an app where every interaction matters (real-time collab, multi-step forms with autosave), Vercel Pro bom1 still wins. For an internal tool or batch-processing API, Singapore is plenty.

The honest answer for Indian apps in 2026: if your users are mostly metro Tier-1 (Bengaluru, Mumbai, Pune, Delhi, Hyderabad, Chennai), Vercel Pro pinned to bom1 is the fastest. If your users include Tier-2/Tier-3 (Kolkata, Indore, Coimbatore, Jaipur, Lucknow) where the last-mile is 4G-throttled anyway, the difference between 38ms and 75ms server-side disappears in the 60-200ms last-mile noise — pick on price.

Lock-in: what migration actually costs you

Cost and latency are the obvious axes; lock-in is the one founders find out about at 2am when the bill is unfixable. Migration cost is not the export tool — it is the percentage of your codebase that is tied to platform-specific primitives.

Vercel lock-in is the highest because Vercel's pricing model rewards Next.js features that only run on Vercel — Image Optimization, Edge Functions, Edge Config, ISR with on-demand revalidation, and the new use cache directive. Move off Vercel and you rewrite each one. When I migrated a fintech's Next.js app off Vercel to Hetzner in early 2026, the Image component alone took 11 hours to replace with a sharp-based custom resizer (we picked sharp + Cloudflare Polish to recover Vercel-equivalent quality). The full migration was 3 days of engineering for a 47-route app. Multiply that by your hourly rate; for a senior India dev at ₹2,500-₹4,000/hr, that is ₹60,000-₹96,000 of one-time cost.

Railway lock-in is medium. Your code is plain containers — Dockerfile or auto-detected Node/Go/Python build — and the platform-specific surface is just environment variables, secret injection, and the Railway-managed Postgres/Redis add-ons. Moving to Hetzner is: docker-compose.yml instead of Railway's service-graph, plus migrating the database (pg_dump | pg_restore over a maintenance window). I moved a Stripe-integrated billing service off Railway to Hetzner last month in 4 hours including the DB dump.

Hetzner lock-in is essentially zero because there is nothing to lock into — it is a VPS. Your docker-compose.yml, Caddyfile, and systemd units move byte-for-byte to any other VPS provider (DigitalOcean, Vultr, Linode, AWS Lightsail). The trade-off is that you took on the operational burden to escape vendor lock-in. You now own SSH key rotation, OS patching, log rotation, and backup verification.

I built MicroItinerary on Vercel because the AI-heavy itinerary generation flow needed serverless burst capacity and Edge Functions for the OG image previews shared on WhatsApp. The lock-in was worth it for that app — moving it would cost more than 18 months of Vercel bills at current scale. But MyFinancial sits on a Hetzner CX22 specifically because privacy-first finance data should not transit through any platform's Edge Function logging by default. The lock-in posture matches the trust requirement of each app.

Side-by-side comparison — what each platform actually does well

Strip away the marketing and three different products emerge. Pick the row that matches your real constraint.

DimensionVercel ProRailway ProHetzner + Cloudflare
Best forNext.js MVPs needing fast deploy + Mumbai edgeMixed-stack apps (Node + Python + Go) with zero DevOpsLong-running services, content sites, anything at scale
Time-to-first-deploy4 minutes (git push)6 minutes (git push)35 minutes (Coolify or Dokploy) — 2 hours fresh setup
Hidden costFunction execution + Image Optimization + 1TB egress capRAM-hours when builds idleNone — fixed monthly bill
Cold start (India)410ms (bom1)380ms (Singapore)290ms (Cloudflare bom cached)
Free tier ceilingHobby: 100GB egress, no commercial use allowed$5/month credit auto-appliedNone (Hetzner CX22 = ₹420 floor)
DB included?No — bring Neon/Supabase/PlanetscaleYes — managed Postgres, Redis, MySQLNo — install Postgres yourself or use managed (Neon/Supabase)
When the bill stingsEgress > 1TB or function-sec > 100K/moRAM consistently > 1GB on a single serviceNever (price is fixed)
Support qualityExcellent (Pro) — discord + emailGood (Pro) — discordSelf-serve only — community wiki
Best one-liner"Push and forget""Push and forget, on a budget""Pay rent once a month, run anything"

Notable 2026 changes: Vercel's $25/user/month Pro plan now has stricter monthly compute caps; you pay overage at $40/100GB-hours of function compute. Railway added per-region pricing in March 2026 — Singapore is 8% more expensive than US-East but it is still cheaper than Vercel for most workloads. Hetzner expanded Cloud egress to 20TB free per server in late 2025, which makes it the only platform where high-egress workloads (video, image-heavy, blogs that get hit by AI scrapers) don't get cost-killed.

One detail nobody mentions: Vercel's free Hobby tier is explicitly NOT for commercial use per their TOS section 2.3 — if you ship paid product on Hobby, you are technically in violation. Most founders ignore this and never get caught, but if Vercel grows a billing-enforcement team in 2026, the cease-letter will land on apps doing 5-10K MAU on Hobby right when your founder-led-growth is starting to work. Railway's $5 credit covers the same use case legally.

When the alternative wins — picking honestly against my own preference

My default for a 6-week MVP is Vercel because shaving 2 days off the deploy story matters more than ₹1,500/month at week 4. But that default fails in three specific situations, and admitting it is the difference between a senior recommendation and marketing fluff.

Hetzner wins when your workload is "long-running" or "scheduled." If your app runs nightly scrapers, video transcoding, large CSV imports, or any kind of cron-style batch work over 60 seconds, Vercel will either time out the function or charge you for the entire duration. Railway handles it but bills RAM-hours aggressively. Hetzner runs a 4-hour scraper at the same flat ₹420/month as a 10-second one. I moved a real-estate listings ingestion pipeline (the kind of nightly scraper PropCheck-like apps need) from Vercel cron to a Hetzner CX22 + systemd timer last quarter; bill went from $87/month to $4.50/month with identical output.

Railway wins when your team is mixed-stack and you do not want to learn Vercel-specific patterns. If your backend is Python FastAPI, your worker is Go, and your frontend is plain React (not Next.js), Vercel is the wrong tool — you will spend more time fighting the Next.js opinions than you will save. Railway speaks Docker natively; deploy whatever you want. I shipped SanatanApp's backend services on Railway specifically because the Sanskrit text-processing service is Python and the API gateway is Go — Vercel would have been four awkward serverless functions instead of one container.

Vercel wins when you are pre-PMF and every conversion percentage point matters. Founder-led growth at 0→100 customers is bottlenecked by every friction point — signup completion rates, mobile checkout abandonment, OG previews that look broken on WhatsApp. Vercel's Mumbai edge + Image Optimization + automatic OG image generation + preview deployments for every PR is a real moat for non-technical co-founders who need to ship marketing experiments without engineering bottleneck. I would not pick Hetzner for the first 90 days of a B2C MVP even though it is cheaper.

The honest position is: price-optimize too early and you ship slower; speed-optimize forever and you go broke. Switch tiers when your monthly hosting bill crosses your founder-day rate (~₹15,000-₹25,000) — that is the moment a 1-day migration project pays for itself in 3 months.

Decision tree — pick in 60 seconds

Five questions, in order. Stop at the first yes.

  1. Is your team < 3 engineers AND you ship in the next 6 weeks? → Vercel Pro pinned to bom1. The 2 days you save on infra setup are worth more than ₹2,000/month at week 4. Plan to migrate at $200+/month bill.
  2. Is your stack mostly Python or Go (not Next.js)? → Railway Pro, Singapore region. Vercel is the wrong shape for non-Next.js workloads, and Hetzner adds an ops surface you do not need yet.
  3. Do you run nightly scrapers, video transcoding, or any job > 60 seconds? → Hetzner CX22 + Cloudflare. Vercel will time out or charge you. Hetzner does not care if the job runs for 4 hours.
  4. Is your traffic mostly content / blog / programmatic SEO pages? → Hetzner + Cloudflare. Egress is the killer on Vercel; Cloudflare's free CDN absorbs 95%+ of those requests at the edge.
  5. Is your monthly hosting bill > ₹15,000? → Plan a Hetzner migration this quarter. Once you cross ~3 days of founder time per month in hosting cost, the migration ROI is under 90 days.

Five-step migration checklist (Vercel → Hetzner) if/when you cross the threshold:

  1. Provision Hetzner CX22 + Cloudflare zone + Cloudflare Origin Cert (15 min)
  2. Install Dokploy or Coolify (PaaS-on-VPS, free, gives you Vercel-equivalent git-push deploys) (30 min)
  3. Rewrite Vercel-specific imports: next/image → sharp + <img>; Edge Functions → regular API routes; Edge Config → Cloudflare KV (2-6 hours depending on app size)
  4. Move env vars + secrets + connect domain via Cloudflare (15 min)
  5. Run side-by-side for 48 hours; flip DNS, monitor Sentry for regressions, kill Vercel project after 7 days quiet (1 hour active work)

Total migration time for a Next.js app under 50 routes: half a day to one full day. If it takes longer, you have more Vercel-specific code than you realized — pause the migration, audit, and decide if the rewrite cost is still worth the monthly savings.

Where this fits in the 6-week MVP playbook

Hosting is a Week 1 decision in my 6-Week MVP service, and we revisit it at Week 5 right before launch. The default I ship on for new clients is Vercel Pro pinned to bom1, with the DB on Supabase (which gives us Postgres + Auth + Storage in one ₹2,100/month bill). That stack gets you from git init to a publicly-shippable MVP at India-acceptable latency for under ₹4,500/month all-in.

If you are pre-MVP and shopping hosting decisions in isolation, you are probably optimizing the wrong thing — the difference between Vercel and Hetzner is roughly ₹2,500/month for the first 6 months of an MVP's life. That is genuinely smaller than one missed marketing experiment caused by an infra slowdown. Pick the platform that minimizes your founding team's distraction, not the one that minimizes the bill. Re-evaluate every 6 months — and if you want a working migration plan from one to another without losing a week to it, I run that engagement as a focused 2-week sprint for founders who have outgrown their starter stack.

RELATED PROJECT

View MyFinancial →

Plan your MVP hosting stack

Let's Talk →

Read Next

OpenAI vs Claude vs Gemini API — Real Cost for India MVP 2026

A WhatsApp support bot doing 10K conversations a month costs roughly ₹1,250 on Gemini 2.5 Flash, ₹3,...

Pinecone vs Qdrant vs pgvector — Which Vector DB for India RAG MVP (2026)

At 500K embeddings for an Indian RAG MVP, Pinecone Standard costs ~₹6,200/month, self-hosted Qdrant ...

← All NotesProjects →

روهيت راج — مهندس الخلفية والذكاء الاصطناعي

Services

Mobile App DevelopmentAI Chatbot DevelopmentFull-Stack Development

احصل على التحديثات