vercel · pricing · deploy · tutorial

When Does Vercel Get Expensive? The Real Thresholds

Vercel is $20 until it isn't. The exact traffic thresholds where bills jump, plus spend caps that work. BoringPush inside.

The Coaster Dips roller coaster at Glen Echo Park, Maryland, 1909 to 1932
The Coaster Dips roller coaster at Glen Echo Park, Maryland, 1909 to 1932 · Photo: National Photo Company, public domain, via Wikimedia Commons

"for most apps it's $20" — until yours isn't

Ask WHEN does Vercel become expensive? on r/nextjs and two camps collide. Camp one: "for most apps it's free or $20." Camp two posts invoices: $35 of AWS translating to $800 on Vercel, $450 from silent scraping with zero notification, teams leaving at $1,800/mo.

Both camps are right — they just sit on opposite sides of three thresholds. This post names the thresholds with numbers, so you know which side you're on before the invoice tells you.

The three thresholds, with math

Vercel Pro (2026 public rates — verify current) bundles roughly: 1TB Fast Data Transfer, ~10M edge requests, ~1M function invocations. Past the bundle, each meter bills alone:

Monthly shape Vercel Pro math Rough bill
Side project, <100GB transfer Inside every bundle $20
2–5k daily visitors, cached images, ~400GB Inside bundles $20 (the exact question — you're fine)
30k visits/day, 4MB pages, ~3TB (3,000−1,000GB) × $0.15 ~$320
Viral week + scraper bots, 6TB + 40M edge reqs 5,000 × $0.15 + 30M × $2/M ~$830
Image-heavy + uncached API, past every bundle All four meters firing $800–$1,800 (the exit threads)

Three tripwires push you over faster than traffic alone:

  1. Fast Origin Transfer. Cache misses bill the function-to-edge leg too — middleware in front doubles it. The 300GB FOT thread is a 4MB page hit 250k times, mostly bots.
  2. Image transforms. next/image bills per transform plus cache reads/writes. Thousands of product images with ever-changing query strings = thousands of transforms.
  3. Per-seat multiplication. Enterprise starts around $20–25k/yr (huge jump thread). Ten seats is $200/mo before a single byte.

What actually keeps bills flat

Two moves, in order. First, if you stay on Vercel: set a spend cap day one, cache images on Cloudflare in front, pin next/image to stable URLs, and give scrapers a robots.txt + rate limit instead of hopes.

The $237-for-6-days post is what happens with none of that.

Second, if the math above already exceeds a VPS: run the same Next.js app on one $5/mo box. This is the BoringPush playbook — the Next.js stack without per-request meters:

Choose SQLite as the database, on the same box as the app. Queries hit local disk, and there is no per-query meter.

Same 3TB month: $5 flat, $0 overage. Same bot spike: Cloudflare caches it, the origin sleeps.

That is the whole BoringPush bet: ship from anywhere — even your phone — on hardware you control, and let traffic spikes be a good-news problem instead of an invoice.

The 10-minute audit before your next deploy

Don't guess which side of the thresholds you're on — measure in this order:

  1. Rank routes by transfer. Vercel dashboard → Usage → top routes by bandwidth. In nearly every horror thread, the top 3 routes are >70% of the bill — usually one uncached API route and one image-heavy page.
  2. Divide by 1TB. Project the top route's monthly GB. Under 60% of the bundle with 2x headroom? Stay and set the cap. Over 80% and growing? Price the VPS move this week, not after the spike.
  3. Kill the bots first. A robots.txt disallow for scrapers plus Cloudflare's free bot fight mode regularly cuts 20–40% of edge requests in the threads above — the cheapest save available, and it works on either platform.
  4. Pin image URLs. Every unique next/image query string is a fresh transform. Stable widths, stable URLs, Cloudflare in front.

Run that audit quarterly. It takes ten minutes and it is the difference between the $20 camp and the invoice-post camp.

And when the audit says you're over 80% of the bundle with growth ahead, move before the spike: a quiet-week migration to a flat $5 box beats a 2am scramble after the invoice lands, every single time.

FAQ

I'm at 2–5k daily visitors. Should I worry?

No. With cached images and a database off-box (Neon/Supabase), you sit far inside every bundle.

Set a spend cap anyway — it takes two minutes and converts every future scare into an email instead of an invoice.

What is the single biggest lever on Vercel bills?

Bandwidth. Pro includes ~1TB; every terabyte past it is ~$150 — fifteen times the seat.

Model transfer first, everything else second.

Do spend caps actually stop the bleeding?

Yes — cap overage, not the seat. Vercel lets you bound usage spend; the horror threads are almost always uncapped accounts meeting their first bot swarm.

When is leaving the right call?

When your steady-state bill passes ~$60/mo with no traffic spikes in sight. A $5 VPS plus Cloudflare free tier covers that shape with room to 10x, and BoringPush's git push production main keeps deploys one command.

Does BoringPush lock me off Vercel?

No. Switch the database setting to MongoDB or Supabase and deploy the same code to Vercel.

The VPS path exists so the meter is a choice, not a trap.

+ all the boring stuff (analytics, auth, SQLite ↔ Supabase, full marketplace, webhooks)

The Agent-First Shipping Kit

Command from your phone.

Built so autonomous AI agents build what you want without breaking what's already paying you.

$199

Get BoringPush

One-time payment · Lifetime updates · Unlimited projects.

Keep reading