Why is Vercel so expensive?
Because you pay AWS prices, then Vercel's margin on top, for a serverless model that bills you for every unit of everything. Here's how the bill is built, what real teams have been charged, what three typical apps would cost elsewhere, and what to use instead.
Prices checked against Vercel's, AWS's, Cloudflare's, Hetzner's and DigitalOcean's own pages in October 2026. Sources are linked inline and listed at the end.
The short version
- It's AWS underneath. Every Vercel compute region is an AWS region and its functions run on AWS Lambda. AWS's prices are the floor, and Vercel's margin sits on top.
- Serverless bills every unit. One busy CPU on Vercel costs about $0.15 an hour; on a Hetzner server, less than half a cent. Once your app keeps a CPU busy for more than about 45 minutes a day, a server is cheaper.
- Bandwidth is no longer the big problem. Vercel cut it from $0.40/GB to flat monthly tiers. The money now goes on requests, compute, seats and add-ons.
- In three hypothetical apps, Vercel cost 7 to 57 times more than a VPS or Cloudflare Workers for the same traffic.
- The convenience is cheap to rebuild. Open-source deploy tools and AI coding agents give you most of Vercel's workflow on your own server.
1. Vercel is a layer on top of AWS
Vercel doesn't hide this, but it doesn't advertise it either. Its regions page lists 19 compute regions, and each one is an AWS region: iad1 is us-east-1, fra1 is eu-central-1, sin1 is ap-southeast-1, and so on. Its engineering blog says it directly: "Vercel Functions run on AWS Lambda" (Vercel, July 2025).
The dependency showed on 20 October 2025, when AWS's us-east-1 region failed. Vercel's postmortem says about 22% of its global traffic was disrupted at the peak, and full recovery took around 20 hours.
Vercel does run its own network on top: 126 points of presence that accept connections and route them over a private network to those regions. But the machines your code runs on, and the regions they sit in, are AWS's.
Why that matters for price
AWS is one of the most expensive places to move data (more in why AWS is so expensive). Sending data from AWS to the internet costs $0.09 per GB for the first 10 TB a month, after a 100 GB free allowance, and traffic through a NAT gateway pays another $0.045 per GB on top (EC2 pricing, VPC pricing). Cloudflare, a competitor with an obvious interest, estimated in 2021 that US customers pay around 80 times AWS's own cost for that bandwidth (AWS's Egregious Egress). For comparison, a Hetzner server in Europe includes 20 TB of traffic a month for a few euros, and Cloudflare doesn't charge for bandwidth at all.
Whatever discount Vercel gets from AWS isn't public. What is public: Vercel resells that infrastructure with its own engineering, support and margin added, and it's priced like a company that was valued at $9.3 billion in 2025. A 2024 Ask HN thread put the markup at 100–200% over AWS; the replies argued it's worth it to never touch AWS yourself. Both sides have a point. The real question is whether you need what the margin buys.
2. Lambda bills you for time, not work
AWS Lambda was designed for short, bursty jobs. It runs one request per instance and bills for every gigabyte-second the instance is alive: $0.0000166667 per GB-second, about $0.06 per GB-hour, plus $0.20 per million requests (Lambda pricing). In the same blog post, Vercel's engineers describe the catch: with one request per instance, you pay for the instance the whole time the request is open, even while it's only waiting on a database or an API.
For years Vercel passed that model on with a markup. Functions cost $0.40 per GB-hour until mid-2024, then $0.18 after its 2024 price change: three times Lambda's list price.
In 2025 Vercel shipped Fluid compute, the default for new projects since April 2025. One instance now serves many requests at once, and CPU is billed only while your code is actually running (The Register covered it as Vercel's way out of Lambda's cost problem). It's a genuine improvement. Today you pay $0.128 per CPU-hour plus $0.0106 per GB-hour of memory in US East, and up to $0.221 and $0.0183 in São Paulo (Fluid pricing). Memory is still billed while a request waits on I/O.
What one busy CPU costs for an hour
| Where | What you get | Per hour |
|---|---|---|
| Vercel (Fluid, US East) | 1 vCPU + 2 GB (the default size), busy all hour | $0.149 |
| AWS Lambda (list price) | 2 GB function, busy all hour | $0.120 |
| Cloudflare Workers | 1 hour of CPU time (memory isn't billed) | $0.072 |
| DigitalOcean droplet | half of a 2 vCPU / 4 GB droplet ($24/mo) | $0.016 |
| Hetzner VPS | half of a CX23, 2 vCPU / 4 GB (€5.49/mo) | $0.004 |
Server prices are divided by 730 hours a month at €1 = $1.18. Servers bill around the clock; Vercel and Lambda bill only while there's work.
That last point is the honest case for serverless: if your site gets a few requests an hour, paying per unit wins. But the break-even comes early. On compute alone, a Hetzner server is cheaper once your app keeps one CPU busy for more than about 43 minutes a day, and a DigitalOcean droplet after about 2.6 hours a day. A business app with steady traffic passes both easily.
Even Amazon hits this. In 2023 a Prime Video team cut the cost of one monitoring service by 90% by moving it off a serverless design (Step Functions and Lambda) onto plain EC2 and ECS (DevClass). Most of their cost was per-step orchestration fees rather than web hosting, but the lesson carries over: per-unit billing gets expensive under steady load.
3. The rest of the bill: requests, seats and add-ons
Vercel deserves credit on bandwidth. It charged $0.40 per GB until mid-2024, then $0.15. In September 2026 it made Flat Rate CDN the default for new Pro teams: you pay a fixed monthly tier instead of per gigabyte, and a one-day spike doesn't change the bill. Existing teams can switch it on in billing settings.
| Flat Rate CDN tier | CDN requests / month | Data transfer / month |
|---|---|---|
| Included with Pro | 1M | 1 TB |
| $20 / month | 10M | 50 TB |
| $100 / month | 50M | 50 TB |
| $300 / month | 150M | 50 TB |
Above the top tier you move to on-demand pricing: $2 to $3.20 per million requests and $0.15 to $0.35 per GB, depending on region. Bulk file and media delivery isn't eligible.
For most apps, raw bandwidth is no longer the problem. The money moved elsewhere:
- CDN requests. Every file a page loads counts: the HTML, each JavaScript chunk, fonts, images, and every API call. The included tier is 1 million requests a month, about 33,000 a day. A page that loads 30 files uses that up at around 1,100 page views a day. The 2024 pricing included 10 million.
- Compute. Active CPU, provisioned memory and invocations, as above. Pro includes no compute: the $20 monthly credit covers the first $20 of all usage combined, then everything is on demand.
- Seats. $20 a month for each person who deploys. Read-only viewer seats have been free since September 2025.
- Everything else that's metered. Fast Origin Transfer ($0.06 to $0.43 per GB), image optimization, ISR and runtime cache writes, and observability events at $1.20 per million (pricing docs).
- Add-ons. SAML single sign-on is $300 a month, a HIPAA agreement $350, static IPs $100 a month per project, and password-protecting a project $20 a month.
Each line is cheap on its own. The problem is how many lines there are, and that each one grows with traffic in its own way, which makes the bill hard to predict. Even Vercel's billing tripped over it: until May 2026, Pro invocations were charged in blocks of a million, so one user paid $0.60 for 4,387 invocations, about 228 times the per-unit rate (Vercel community). Vercel switched to per-unit billing on 29 May 2026.
4. When bills explode
Usage pricing has no ceiling unless you set one. Each of these was posted publicly and is collected on ServerlessHorrors:
| When | What happened | Bill |
|---|---|---|
| Jun 2024 | Cara, a portfolio app for artists, grew from 40,000 to 650,000 users in a week (TechCrunch, founder's post). | $96,280 for one week |
| Feb 2024 | An attacker created 500,000 fake accounts on a Next.js app, which set off 500,000 Stripe trial webhooks (ServerlessHorrors). | $23,000 |
| Apr 2025 | A Pro user with a $120 spending limit was billed $738, and the app was offline for over two hours (post). | $738 |
| Feb 2026 | Jmail passed 450 million page views, and on-demand charges hit $46,486 despite heavy caching (ServerlessHorrors). | $46,486 |
In fairness, Vercel waived, reduced or refunded each of these after they spread online, and in Cara's case it said it had tried to contact the founder before the bill landed. But fixes that depend on going viral don't help the next person. In a 2023 Hacker News thread about Vercel's support, several developers said their problems were only fixed once they went public.
Spend Management helps, if you set it up properly
Vercel turned Spend Management on by default for Pro teams in September 2025 (new customers start with a $200 spend amount), but the default only sends notifications. To actually stop spending you have to turn on pausing, which takes your production site offline when you hit the limit. Vercel checks spend every few minutes, so charges keep running for a while after you pass it (docs). Set it up today anyway. A paused site is better than a five-figure invoice.
5. What developers say
On Hacker News:
- Ask HN: Why are people paying so much for Vercel? (July 2024). The case against: 100–200% over AWS. The case for: an agency said it saves engineering hours on small client sites, and teams building internal tools said they never leave the cheap tiers.
- Vercel's pricing page (2026). One commenter said their enterprise contract was $40,000 in year one; Vercel asked for $120,000 at renewal and they settled at $60,000.
- We need to talk about Vercel (April 2023), the discussion of Max Countryman's post about caching confusion and slow support.
- Vercel: Improved infrastructure pricing (April 2024), the discussion of the 2024 price cuts.
Teams who moved off it:
- Next.js on Cloudflare vs Vercel (August 2025). A full Next.js app whose Vercel bill had grown from $20 to $80 a month on little traffic moved to Cloudflare for about 90% less. It was less polished: image optimization and middleware needed rework.
- We moved evolred.com off Vercel (May 2026). A move to a VPS running Dokploy, with Cloudflare in front, done in an afternoon. The savings were modest, but the bill became predictable. They also list who shouldn't move.
6. Three hypothetical case studies
These are made-up apps with realistic traffic, priced at list prices in October 2026. Vercel is the Pro plan in its cheapest region (US East) with Flat Rate CDN on. The $20 credit is applied to metered usage but not to the CDN tier fee. Excluded everywhere: your database, LLM API costs, email, monitoring, and your time. Every assumption is listed, so you can rerun them with your own numbers in the calculator.
A note on Hetzner. Hetzner raised its cloud prices in 2026, and as of this writing its site lists its cloud plans as unavailable because of a hardware shortage. Since June it has also limited new servers for new customers (details). The figures below use Hetzner's list prices (as of September 2026). If you can't get one, a DigitalOcean droplet with 2 vCPU and 4 GB is $24 a month with 4 TB of transfer, and 4 vCPU / 8 GB is $48. That's still a fraction of the Vercel figures.
Case 1: a content site with 6 million page views a month
- A Next.js publication, mostly static and ISR pages. 3 developers.
- 20 CDN requests and 0.8 MB per page view: 120M requests and 4.8 TB a month.
- 3M function invocations at 40 ms of CPU each, about 1,000 GB-hours of memory.
- 60,000 image transformations, 30M image cache reads and 200,000 writes; 1M ISR writes and 5M reads; 500 GB of origin transfer.
| Vercel line item | Per month |
|---|---|
| Seats (3 × $20) | $60.00 |
| Flat Rate CDN, $300 tier (150M requests, 50 TB) | $300.00 |
| Fast Origin Transfer (500 GB) | $30.00 |
| Image cache reads (30M) | $12.00 |
| Provisioned memory (1,000 GB-h) | $10.60 |
| Active CPU (33 h) | $4.27 |
| ISR writes (1M) | $4.00 |
| Image transformations (60K) | $3.00 |
| ISR reads (5M) | $2.00 |
| Invocations (3M) | $1.80 |
| Image cache writes (200K) | $0.80 |
| Monthly credit | −$20.00 |
| Total | $408 / month |
- Hetzner VPS: about $12.60 a month. One CX33 (4 vCPU, 8 GB) behind Cloudflare's free CDN, which caches pages and assets so the server sees only a fraction of the traffic. €8.49, plus €0.50 for an IPv4 address and 20% for backups: €10.69. Server traffic stays well inside the 20 TB included.
- Cloudflare Workers: about $7.10 a month. The $5 Workers plan via OpenNext. Static files are free; the 9M dynamic requests fit in the 10M included; 135M CPU-milliseconds costs $2.10 beyond the 30M included. The ISR cache in R2 stays inside the free tier, and images are optimized at build time.
Vercel: $408. VPS: about $13. Workers: about $7. That's 32 to 57 times more for the same site. At this traffic Vercel would probably steer you to an Enterprise contract, which isn't priced publicly.
Case 2: a B2B SaaS dashboard with 25,000 monthly users
- A logged-in Next.js app with server-rendered dashboards and API routes. Postgres is hosted elsewhere and costs the same in every option. 5 developers.
- 750,000 page views at 15 requests each, plus 18M API and server-component requests: about 29M CDN requests and 0.9 TB.
- 18M function invocations averaging 50 ms of CPU: 250 CPU-hours.
- On average 2.5 function instances (2 GB each) alive around the clock: 3,650 GB-hours. 216 GB of origin transfer.
| Vercel line item | Per month |
|---|---|
| Seats (5 × $20) | $100.00 |
| Flat Rate CDN, $100 tier (50M requests, 50 TB) | $100.00 |
| Provisioned memory (3,650 GB-h) | $38.69 |
| Active CPU (250 h) | $32.00 |
| Fast Origin Transfer (216 GB) | $12.96 |
| Invocations (18M) | $10.80 |
| Monthly credit | −$20.00 |
| Total | $274 / month |
- Hetzner VPS: about $12.60 a month, or about $25 with a second server for redundancy. One CX33 handles this load comfortably.
- Cloudflare Workers: about $25.80 a month. $5, plus $2.63 for the 8.75M requests over the included 10M, plus $18.15 for 907.5M CPU-milliseconds over the included 30M. You'll want a connection pooler in front of the database.
Vercel: $274. VPS: $13 to $25. Workers: about $26. That's 11 to 22 times more, and $100 of the Vercel bill is a per-developer charge that servers don't have.
Case 3: an AI chat app with 500,000 messages a month
- Each message streams a model's response for about 25 seconds. Your own code uses about 120 ms of CPU per message for auth and saving to the database. The LLM API bill is the same everywhere and excluded. 2 developers.
- 300,000 page views at 20 requests each, plus 2M function calls: about 8M CDN requests and 0.4 TB.
- Fluid compute packs about 8 streams onto each instance: about 970 GB-hours of memory and 29 CPU-hours.
| Vercel line item | Per month |
|---|---|
| Seats (2 × $20) | $40.00 |
| Flat Rate CDN, $20 tier (10M requests, 50 TB) | $20.00 |
| Provisioned memory (968 GB-h) | $10.26 |
| Active CPU (29 h) | $3.73 |
| Fast Origin Transfer (23 GB) | $1.35 |
| Invocations (2M) | $1.20 |
| Monthly credit (covers all metered usage) | −$16.54 |
| Total | $60 / month |
- Hetzner VPS: about $8.40 a month. A CX23 (2 vCPU, 4 GB): one Node server can hold thousands of open streams. €5.49, plus IPv4 and backups: €7.09.
- Cloudflare Workers: about $6.60 a month. Workers bill CPU time, not time spent waiting on the model: $5, plus $1.59 for 79.5M CPU-milliseconds over the included 30M.
Vercel: $60. VPS: about $8. Workers: about $7. That's 7 to 9 times more, but only about $50 a month in absolute terms.
This case shows why Vercel had to build Fluid compute. The same 3,472 hours of streaming on the old one-request-per-instance model would use about 6,900 GB-hours of memory: about $417 at AWS Lambda's list price, or $1,250 at Vercel's 2024 rate of $0.18 per GB-hour. Fluid brings it down to about $10. That's a real fix. It just doesn't beat an $8 server that never charged for waiting in the first place.
All three side by side
| App | Vercel Pro | Hetzner VPS | Cloudflare Workers |
|---|---|---|---|
| Content site, 6M page views | $408 | $13 | $7 |
| SaaS dashboard, 25k users | $274 | $13–25 | $26 |
| AI chat app, 500k messages | $60 | $8 | $7 |
The server columns leave out your time: a few hours to set up, then an hour or two a month for updates and checks. In cases 1 and 2 the gap pays for that many times over. In case 3 it doesn't: if a server costs you two hours of attention a month, Vercel may actually be the better deal at that size.
7. You don't need Vercel's DX in the AI era
Vercel's real product was never the servers. It was the workflow: push to Git, get a preview URL for every pull request, roll back in one click, never think about infrastructure. A few years ago that took a platform team to build. Now it doesn't.
- Push-to-deploy is open source. Coolify gives you Git deploys, automatic HTTPS and preview deployments for pull requests on your own server. Dokploy is a similar self-hosted platform, and Kamal, from 37signals, deploys containers to any server with one command.
- Next.js is portable now. Next.js 16.2 (March 2026) shipped a stable Deployment Adapter API, built together with Cloudflare, Netlify, AWS Amplify, Google Cloud and the OpenNext project. Other platforms no longer have to reverse-engineer Next.js's build output (Next.js). The OpenNext Cloudflare adapter already runs the App Router, ISR, middleware and image optimization on Workers.
- AI agents write the glue. The Dockerfile, the GitHub Actions workflow, the reverse-proxy config, the backup cron job and the Cloudflare cache rules are exactly the boilerplate that coding agents like Claude Code, Codex and Cursor write reliably in minutes. The setup that used to justify a platform fee is now an afternoon's work.
What AI doesn't replace
Someone still has to own the server: security updates, backups you've actually tested restoring, disk and memory alerts, and being reachable when it goes down. A single VPS doesn't absorb a viral spike the way serverless does, though a free Cloudflare CDN in front absorbs most of it. If nobody on your team wants that responsibility, paying a managed platform still makes sense. It just doesn't have to be the most expensive one.
8. What to use instead, by type of project
| Project | Use | Why |
|---|---|---|
| Static site, docs, landing pages | Cloudflare Pages or Workers static assets; GitHub Pages | Free, with no bandwidth bills. Vercel's free Hobby plan is for non-commercial use only. |
| Content-heavy Next.js (blogs, news, docs at scale) | Cloudflare Workers via OpenNext, or a VPS behind Cloudflare's free CDN | Requests and transfer are where these bills grow, and both options make them close to free. |
| SaaS with server rendering and APIs | A VPS with Coolify, Dokploy or Kamal, plus a managed database | Steady traffic is where a server beats per-unit billing by 10 times or more. |
| AI apps that stream responses | A VPS, or Cloudflare Workers | Neither charges for time spent waiting on the model. |
| Background jobs, WebSockets, queues, long tasks | A VPS or containers | Long-running processes are what serverless handles worst. |
| Must stay on AWS (compliance, existing contracts) | Your own AWS account, with OpenNext for AWS or containers on ECS | You pay AWS's prices without a second margin on top. |
| Small team, low traffic, nobody wants to run servers | Stay on Vercel, with Spend Management set | If you stay inside the credit and the included CDN tier, it's a fair deal. |
When does staying make sense? If your bill is under about $100 a month, or less than a day of an engineer's time, moving rarely pays back. evolred's write-up adds good reasons to stay: several engineers using preview URLs every day, latency-sensitive global traffic, or genuinely bursty, serverless-shaped workloads.
9. If you stay: how to cut your Vercel bill
Start in your team's Usage tab. Find the one or two lines that are growing, then group them by project and path: one route, bot or image folder is often most of the cost. The Vercel cost calculator turns those numbers into dollars, line by line.
- Drop a CDN tier. Fewer files per page: remove unused scripts and fonts, inline small icons, and turn off Next.js
Linkprefetching on long lists of links. Setsizeson images so phones don't download desktop-sized files, move big downloads and videos to storage with free egress such as Cloudflare R2, and block unwanted bots with the firewall. Falling below a tier boundary cuts that line from $300 to $100, or from $100 to $20. - Run fewer functions. Make pages static or ISR wherever the content isn't per-visitor, and cache API responses at the CDN with
Cache-Control: s-maxage. - Stop paying for waiting. Put timeouts on slow upstream calls, since memory is billed while a request waits. Keep the default 2 GB size unless you've measured a need: 4 GB doubles the memory charge.
- Cut image work. Trim
deviceSizesandimageSizesinnext.config, raiseminimumCacheTTL, and optimize images that never change at build time. - Slow down ISR. Use longer
revalidateintervals, or on-demand revalidation when content actually changes. - Audit seats. Only people who deploy need a paid seat; viewers are free.
- Set Spend Management today, with pausing on if a surprise bill would hurt more than downtime.
Want someone to do this for you? Send me your Vercel invoice or usage export. Within 48 hours you'll get a free written teardown with every saving priced in dollars, whether you stay on Vercel or move. If you want me to make the changes, you pay only once the bill drops.
Sources
- Vercel: Global network and regions (region ↔ AWS region table)
- Vercel: Fluid: how we built serverless servers (July 2025)
- Vercel: Update regarding the service disruption on October 20, 2025
- Vercel: Improved infrastructure pricing (April 2024)
- Vercel docs: Fluid compute pricing, Fluid compute, function memory
- Vercel docs: Pricing, regional pricing, Pro plan, Hobby plan
- Vercel docs: Flat Rate CDN; changelog: Flat Rate CDN GA (September 2026)
- Vercel docs: Spend Management; changelog: enabled by default on Pro (September 2025); new Pro plan (September 2025)
- Vercel changelog: Function invocations now billed per unit (May 2026)
- AWS: Lambda pricing, EC2 data transfer pricing, VPC and NAT gateway pricing
- Cloudflare: AWS's Egregious Egress (July 2021), Workers pricing, R2 pricing
- Hetzner: Cloud plans; CostGoat price list (September 2026); Hetzner's cheap tier unavailable
- DigitalOcean: Droplet pricing
- The Register: AWS Lambda cost nightmare: Vercel claims it found a way out (July 2025)
- Bloomberg: Vercel notches $9.3 billion valuation (September 2025)
- DevClass: Amazon Prime Video case study (May 2023)
- TechCrunch: Cara grew from 40K to 650K users in a week (June 2024)
- ServerlessHorrors: $96k, $23k, $738, $46k
- Vercel community: Function invocations charged 228x the documented rate (December 2025)
- Hacker News: Ask HN: Why are people paying so much for Vercel?, Vercel's pricing page, We need to talk about Vercel, Improved infrastructure pricing
- Migration write-ups: Next.js on Cloudflare vs Vercel (August 2025), We moved evolred.com off Vercel (May 2026)
- Tools: Next.js across platforms (March 2026), OpenNext Cloudflare, OpenNext AWS, Coolify preview deployments, Dokploy, Kamal