# Vercel's 100GB Limit Dies on Day 13 (Do This)

> Pro includes ~1TB, Hobby ~100GB — past that it's ~$0.15/GB. The overage math, the cap settings, and the flat alternative. Inside.

Source: https://boringpush.com/blog/vercel-bandwidth-100gb-limit-overage

## "100GB included" meets a 4MB homepage

Your homepage ships a hero video, three responsive image sets, and a 900KB JS bundle — 4MB per visit, totally normal in 2026. At 2,000 daily visitors that is 240GB a month. On Hobby's ~100GB bundle the limit falls on day 13.

Nothing warns you meaningfully. The overage meter runs silently at ~$0.15/GB, and the month closes with a bandwidth line bigger than the seat — for traffic a $5 VPS serves while idle.

Vercel bandwidth overage is the meter most founders model last and pay first. This post models it first.

## Bandwidth math at real page weights
| Page weight | 2k visits/day | Monthly transfer | Overage past 1TB |
|---|---|---|---|
| 1MB (lean) | 60GB | ~60GB | $0 (inside bundle) |
| 4MB (normal) | 240GB | ~240GB | $0 Pro / ~$21 Hobby |
| 4MB + bot 3x | 720GB | ~720GB | $0 Pro / ~$93 Hobby |
| 10MB (video hero) | 600GB | ~600GB | $0 Pro / ~$75 Hobby |
| Viral 50k/day × 4MB | 6TB | ~6TB | ~$750 Pro overage |

Three details make the meter worse than the table:

1. **Bots count as visitors.** Scrapers, preview renderers, and AI crawlers fetch full pages including images — the $450-scrape story was bandwidth billed to a bot audience. Robots that never buy cost the same per byte as customers.
2. **APIs and bundles weigh in.** JSON responses, JS chunks, font files — every byte leaving the edge meters, not just images. A chatty polling dashboard can outweigh its own page weight 10-to-1 in transfer while looking lightweight in Lighthouse.
3. **Pro's 1TB is a cliff, not a cushion.** Under it: silence. Past it: $150 per extra terabyte, linear and merciless. Growth from 0.9TB to 1.5TB feels identical in the dashboard and differs by $75 on the invoice. Cliffs punish exactly the growth you celebrate.

The $900 post itemized all four meters. Bandwidth is the one that scales with popularity itself.

## Vercel bandwidth overage playbook
In Vercel order first (you may stay), flat order second (when the math says walk).

**Step 1 — Measure your bytes per visitor today.**

```bash
# Vercel dashboard → Usage → Fast Data Transfer (daily graph)
# divide by daily visitors = bytes per visit. Or locally:
curl -s -o /dev/null -w "page: %{size_download}\n" https://yourapp.com/
# add images + JS + fonts + API polling per session = true weight
```

Most founders discover 3–8MB true weight against 1MB assumptions. You cannot cap what you never measured.

**Step 2 — Cap spend and cache hard if you stay.**

```text
Vercel dashboard → Settings → Billing → Spend Management:
  enable spend cap + alerts at 50% / 80% of budget
next.config.js: images.remotePatterns + minimumCacheTTL 31536000
Cloudflare in front: cache static + images at edge (origin transfer drops 80%+)
```

Spend caps convert surprise invoices into throttled sites (still bad, but bounded and visible). Staying on Vercel is legitimate when the capped number fits; the sin was never the platform, it was the unmodeled meter.

BoringPush keeps the capped topology documented for small shapes and the flat playbook ready for growth.

**Step 3 — Go flat when capped costs exceed $100/mo.**

```bash
# same app, $5 VPS: Nginx serves images from disk, Cloudflare caches globally
# 6TB viral month: Vercel ~$750 overage vs VPS $0 extra (box at 30% CPU)
# exit weekend: Hetzner build → Tunnel → mesh → DNS flip (ditch guide)
```

Flat hardware prices the spike at zero because bytes have no marginal cost on your own disk and Cloudflare's cache absorbs the viral shape. The $1,800-exit post walked this exact weekend. Threshold honesty applies: under ~$100/mo capped, stay and optimize; past it, the box pays for itself in weeks.

That's the entire idea — bytes without meters.

## The vercel bandwidth overage decision card
| Monthly shape | Capped Vercel | $5 VPS flat |
|---|---|---|
| 200GB, lean pages | ~$20 seat, fits | $5 (overkill, fine) |
| 1TB, normal + bots | ~$20, near cliff | $5, bored |
| 3TB, image-heavy | ~$20 + ~$300 overage | $5, awake |
| 6TB viral + scrape | ~$770 + incident review | $5 + Cloudflare report |
| Cost of next 2x growth | +$150–300/mo | $0 |

Stated plainly: Vercel's edge network is genuinely excellent (fast, global, zero-maintenance), and Cloudflare-in-front-of-VPS approximates it rather than equaling it out of the box. What flat buys is cost certainty at popularity scale — the exact moment metered pricing punishes most. The BoringPush rule of thumb: pay for edge excellence while small; buy the flat box when popularity becomes the bill.

## FAQ

### How does vercel bandwidth overage interact with the other meters?
Additively and independently: transfer, edge requests, function duration, and image optimization each meter their own dimension and sum on the invoice. A viral month spikes all four at once (more bytes, more requests, more compute, more transforms) — which is why viral invoices shock: four quiet meters screaming in chorus. Model all four; this post covers the loudest.

### Do bots really cost that much, or is that edge-case lore?
Really: unattended scraping at page weight adds up exactly like users (bytes are bytes), and AI-crawler traffic grew sharply across 2024–2026 for content sites. The $450 receipt was a scrape, not a launch. Mitigate with robots.txt (polite bots), bot management rules (impolite ones), and edge caching (both cost you once, serve free forever after).

### Can image optimization alone fix an overage problem?
Partially: modern formats (AVIF/WebP), responsive sizes, and long cache TTLs cut image bytes 50–80% — often enough to duck back under the bundle. But API polling, video, and JS weight don't optimize the same way, and growth re-eats the savings. Optimize first (weeks of runway), then decide flat-vs-capped on the optimized number, not the original.

### What spend-cap setting actually prevents surprises?
Cap at the number you'd unhappily-but-knowingly pay (not your dream number — the real one), alerts at 50% and 80%, and a named human receiving them (not a mailing list). Review the cap quarterly against growth. Caps convert infinite risk into a throttle-or-pause decision you make awake — which is the entire point. Uncapped meters are optimism with billing access.

### Does Cloudflare in front of Vercel double-bill anything?
No — Cloudflare's free tier caches static content (cutting origin transfer up to 80%+) without metering your bytes the same way, and Vercel bills only what reaches its edge. Cached-at-Cloudflare bytes never touch Vercel meters. The pair is the standard cost-optimized Vercel topology: Cloudflare absorbs, Vercel computes, invoice shrinks. Configure cache rules deliberately; defaults under-cache APIs correctly and images incorrectly.

### When is bandwidth the wrong meter to obsess over?
When function duration or image transforms dominate your invoice (heavy SSR, transform-heavy catalogs) — read all four lines before optimizing one. And under ~100GB/mo total, where every option costs pocket change: optimize page weight for users (speed converts), not for meters. Measure first, obsess second, and only over the biggest line.

## Keep reading

- [$900 Vercel Bill? How Surprise Invoices Happen](/blog/vercel-surprise-bill-900-fix) — all four meters itemized
- [When Does Vercel Get Expensive? The Real Thresholds](/blog/when-does-vercel-get-expensive) — the threshold table for staying vs leaving
- [We Left Vercel at $1,800/mo for a $5 VPS](/blog/vercel-1800-month-to-5-vps) — the exit this math justifies
