Cloudflare Pages vs Vercel: Bandwidth Pricing Audit
Forensic cost breakdown comparing Cloudflare Pages unlimited bandwidth vs Vercel Pro/Enterprise overage fees ($40/100GB) for bootstrapped SaaS.
Quick Answer: While Vercel Pro includes 1TB monthly bandwidth for $20, unexpected egress overages cost an exorbitant $40 per 100GB ($0.40/GB). In contrast, Cloudflare Pages delivers truly unlimited egress bandwidth on both Free and $20 Pro plans, preventing catastrophic invoice shocks when rich media, AI assets, or viral traffic hit your SaaS.
Published: September 10, 2026 | Researched by IndieStackAudit Engineering
Key Takeaways
- The $40/100GB Overage Penalty: Vercel charges $0.40 per gigabyte for data egress beyond its 1TB Pro plan limit—more than 4x the standard AWS CloudFront egress price and 40x the wholesale transit market price.
- Zero-Bandwidth Invoicing on Cloudflare: Cloudflare Pages charges $0.00 for data transfer out, regardless of whether your web app serves 500GB or 50TB per month.
- Cache Hit Ratio Defense: Increasing edge cache hit rates from 70% to 95% via tuned
Cache-Controlheaders can reduce Vercel bandwidth bills by 80%, but misconfigured Next.js Image Optimization or dynamic routes bypass edge caches entirely. - Cold-Start & Compute Multiplier: Vercel bills for Fluid Compute execution time ($0.18/GB-hour) whenever edge caches miss; Cloudflare Workers / Pages Functions provide 10ms execution limits with flat predictable pricing.
1. Empirical Monthly Invoice Comparison Across 1TB, 5TB, 20TB, and 50TB
When bootstrapped founders launch micro-SaaS products, early traffic is modest. However, viral product launches, scraping bots, AI image previews, or embedded media can rapidly push bandwidth into terabyte territory.
Below is an itemized monthly invoice simulation comparing Vercel Pro against Cloudflare Pages / Pro across scaling tiers of monthly bandwidth consumption:
| Monthly Bandwidth Consumed | Vercel Pro Base ($20/mo) | Vercel Bandwidth Overage Fee ($40 / 100GB) | Total Vercel Monthly Invoice | Cloudflare Pages Base Plan | Cloudflare Egress Bandwidth Fee | Total Cloudflare Monthly Invoice | Bootstrapper Net Savings |
|---|---|---|---|---|---|---|---|
| 1 TB | $20.00 | $0.00 (Included in 1TB tier) | $20.00 | $0.00 (Free) or $20.00 (Pro) | $0.00 | $0.00 – $20.00 | $0.00 – $20.00 |
| 5 TB | $20.00 | 40 x 100GB = $1,600.00 | $1,620.00 | $0.00 (Free) or $20.00 (Pro) | $0.00 | $0.00 – $20.00 | $1,600.00 / mo |
| 20 TB | $20.00 | 190 x 100GB = $7,600.00 | $7,620.00 | $0.00 (Free) or $20.00 (Pro) | $0.00 | $0.00 – $20.00 | $7,600.00 / mo |
| 50 TB | $20.00 | 490 x 100GB = $19,600.00 | $19,620.00 (Enterprise Audit) | $20.00 (Pro Plan) | $0.00 | $20.00 | $19,600.00 / mo |
The “Sticker Shock” Mechanics:
At 5TB of monthly bandwidth—a modest volume for an app hosting user-generated charts, PDF exports, or interactive dashboards—Vercel generates an unexpected $1,600 bill charged directly to the founder’s credit card.
At 20TB, the invoice jumps to $7,620, threatening the solvency of an early-stage startup. In contrast, Cloudflare leverages its own global Anycast fiber backbone spanning 330+ cities, making bandwidth essentially a non-marginal cost.
This pricing dynamic mirrors the authentication cliff we examined in Better-Auth vs Clerk: Why Bootstrappers Are Migrating, where convenience early on transforms into punitive penalties at scale.
2. Next.js Image Optimization: The Hidden Bandwidth & Execution Tax
A major contributor to surprise Vercel invoices is the default Next.js <Image /> component. When users request images:
- Vercel routes the request through a serverless Image Optimization Function.
- The image is fetched from the origin, transformed into modern WebP/AVIF format, resized, and cached.
- Vercel charges for Source Image Transformations ($5.00 per 1,000 images beyond the 1,000 free tier) and bills the resulting resized image under Fast Data Transfer.
- If an automated web crawler hits un-cached query parameters (e.g.,
?w=640&q=75vs?w=640&q=80), it triggers tens of thousands of unique transform invocations, generating hundreds of dollars in hours.
On Cloudflare Pages, image transformations are offloaded to Cloudflare Images ($0.50/month for 100,000 transformations) or handled statically during build time, completely eliminating function invocation overages.
See how static-first architectures bypass this entirely in our guide on Next.js vs Astro for Micro-SaaS: Speed, Cost, and SEO.
3. Cache Hit Ratio Engineering: Deflecting Origin Egress
Whether you host on Vercel, Fastly, or Cloudflare, your Cache Hit Ratio (CHR) determines how much traffic ever reaches your origin server:
$$\text{Origin Egress (GB)} = \text{Total Requested Traffic (GB)} \times (1 - \text{Cache Hit Ratio})$$
The Impact of Cache Hit Ratios on a 10TB Application:
| Cache Hit Ratio | Egress Reaching Origin | Vercel Overage Invoice | Cloudflare Invoice | Origin Database Load |
|---|---|---|---|---|
| 50% (Misconfigured) | 5,000 GB (5 TB) | $1,620.00 | $20.00 | High (CPU Stalls) |
| 80% (Average Next.js) | 2,000 GB (2 TB) | $420.00 | $20.00 | Moderate |
| 95% (Optimized CDN) | 500 GB (0.5 TB) | $20.00 | $20.00 | Minimal |
| 99% (Static Astro/HTML) | 100 GB (0.1 TB) | $20.00 | $0.00 | Sub-1% |
Critical Cache-Control Header Tuning:
To prevent Vercel or Fastly from passing traffic through to billable serverless compute, configure strict caching rules in your middleware or HTTP response headers:
// Production Edge Caching Header Strategy
export function getOptimizedCacheHeaders(isStaticAsset: boolean) {
if (isStaticAsset) {
// Immutable assets: cache for 1 year in browser and edge CDN
return {
'Cache-Control': 'public, max-age=31536000, immutable',
'CDN-Cache-Control': 'max-age=31536000',
};
}
// Dynamic API responses: serve stale content while revalidating asynchronously
return {
'Cache-Control': 'public, s-maxage=300, stale-while-revalidate=86400',
'Cloudflare-CDN-Cache-Control': 'max-age=600',
};
}
By leveraging stale-while-revalidate, edge CDN points of presence serve instantaneous responses to 98% of users while updating the cache asynchronously in the background.
4. Architectural Cost Comparison: Serverless Compute & Databases
Bandwidth is only one half of the equation; compute runtime and database round-trips represent the other financial hazard:
Vercel Architecture:
User Request -> Anycast Edge -> Serverless Region (iad1) -> External Postgres (150ms roundtrip)
Cost: Base ($20) + Bandwidth ($0.40/GB) + Fluid Compute ($0.18/GB-hr) + External DB bill
Cloudflare Pages + Turso Architecture:
User Request -> Global Edge Worker (sub-10ms) -> Edge-Replicated libSQL SQLite (sub-5ms)
Cost: Base ($0-$20) + Bandwidth ($0.00) + Workers ($0.50/million reqs) + Turso (9GB Free)
By pairing Cloudflare Pages with edge-distributed databases like Turso (libSQL) or self-hosted persistence, you eliminate external ingress/egress transit costs altogether. Read our complete architecture blueprint in The $0/Month Micro-SaaS Stack: Cloudflare Pages, Turso & Resend.
5. Decision Framework: When to Stay on Vercel vs Switch to Cloudflare
| Architectural Factor | Choose Vercel | Choose Cloudflare Pages |
|---|---|---|
| Primary Framework | Heavy Next.js App Router, React Server Components (RSC) | Astro, Vite, Remix, SvelteKit, Static HTML |
| Bandwidth Profile | Mostly text/JSON, sub-500GB/mo | High image/video assets, downloads, >1TB/mo |
| Team Structure | VC-backed engineering team prioritizing DX speed | Bootstrapped / Solo founder prioritizing zero cash burn |
| Database Colocation | Traditional monolithic PostgreSQL (RDS/Supabase) | Edge-native distributed SQLite (Turso / D1) |
| Invoice Predictability | Variable / Usage-based overages | 100% Fixed and predictable |
If you are evaluating database hosting expenses alongside your hosting infrastructure, review our financial audit on Self-Hosted Supabase vs Managed Neon Postgres Cost Math and our benchmark on Drizzle vs Prisma Neon Postgres Cold Starts.
For payment gateways and checkout fee structures, also consult our Stripe vs Lemon Squeezy vs Polar SaaS Fee Calculator.
Empirical Production Benchmark: Hardware & Architecture Specs
| Payment & Billing Engine | Effective Transaction Fee | Global Sales Tax / VAT | Net Payout on $10k MRR |
|---|---|---|---|
| Stripe Direct + TaxJar | 2.9% + 30¢ (+0.5% Tax) | Manual Remittance & Filing | $9,410 / mo |
| Polar.sh (Merchant of Record) | 4.0% + 40¢ (All Inclusive) | Automated 100% Liability Shield | $9,440 / mo |
| Lemon Squeezy (MoR) | 5.0% + 50¢ | Automated 100% Liability Shield | $9,300 / mo |
| Paddle Classic MoR | 5.0% + 50¢ (+2% FX) | Automated 100% Liability Shield | $9,150 / mo |
Zero-Egress Object Storage & Edge Caching Unit Economics in Cloudflare Pages vs Vercel: Bandwidth Pricing Audit
When deploying Cloudflare Pages vs Vercel: Bandwidth Pricing Audit (cloudflare-pages-vs-vercel-bandwidth-pricing-trap) in production Micro-SaaS Billing Infrastructure, MoR Tax Compliance & Serverless Databases environments, engineering teams must rigorously address zero-egress object storage & edge caching unit economics. Eliminating AWS S3/CloudFront bandwidth surprises by routing customer asset downloads and static build artifacts through Cloudflare R2 and immutable Cache-Control edge rules.
By establishing deterministic telemetry gates (% Effective Take Rate / Net MRR Keep / Query P95 ms) and validating edge-case failure modes in staging prior to rollout, organizations prevent regression drift and lock in predictable unit economics.
Direct Payment Gateway vs Merchant of Record (MoR) Liability Math in Cloudflare Pages vs Vercel: Bandwidth Pricing Audit
When deploying Cloudflare Pages vs Vercel: Bandwidth Pricing Audit (cloudflare-pages-vs-vercel-bandwidth-pricing-trap) in production Micro-SaaS Billing Infrastructure, MoR Tax Compliance & Serverless Databases environments, engineering teams must rigorously address direct payment gateway vs merchant of record (mor) liability math. Quantifying the true crossover point between Stripe Direct (+ Stripe Tax) and all-inclusive Merchants of Record (Polar.sh, Paddle, Lemon Squeezy) across international FX markups, dispute chargeback fees, and EU/UK/US sales tax registration thresholds.
By establishing deterministic telemetry gates (% Effective Take Rate / Net MRR Keep / Query P95 ms) and validating edge-case failure modes in staging prior to rollout, organizations prevent regression drift and lock in predictable unit economics.
Serverless PostgreSQL Compute Auto-Suspend & Connection Pooling in Cloudflare Pages vs Vercel: Bandwidth Pricing Audit
When deploying Cloudflare Pages vs Vercel: Bandwidth Pricing Audit (cloudflare-pages-vs-vercel-bandwidth-pricing-trap) in production Micro-SaaS Billing Infrastructure, MoR Tax Compliance & Serverless Databases environments, engineering teams must rigorously address serverless postgresql compute auto-suspend & connection pooling. Benchmarking cold-start wake latencies, PgBouncer transaction-mode pooling, and storage-compute separation across Neon, Supabase, and PlanetScale to keep database COGS below 3% of gross MRR.
By establishing deterministic telemetry gates (% Effective Take Rate / Net MRR Keep / Query P95 ms) and validating edge-case failure modes in staging prior to rollout, organizations prevent regression drift and lock in predictable unit economics.
Discover verified zero-cost databases, auth libraries, and high-margin billing.