Cloudflare Workers vs Vercel: pricing compared

Monthly hosting cost, computed from list prices published on developers.cloudflare.com and vercel.com. Prices checked 10 Nov 2026, USD, excluding tax.

Vercel figures use iad1 rates, the cheapest region (tied with cle1 and pdx1). CDN rates actually depend on where visitors are, so this assumes US traffic. One deploying seat. Enterprise and negotiated pricing are not covered.

How this was researched. Several Claude Opus 5.5 agents worked in parallel. Each one extracted list prices from a single slice of the official Cloudflare and Vercel pricing pages and docs, and was told to report raw numbers with source URLs and no editorializing. The scenario math is generated by a script from those figures. An OpenAI GPT-6.1 Sol (high) agent then independently fact-checked every claim against the official sources, and its corrections are applied.
Disclosure. The author works in developer relations at Cloudflare. This comparison was not commissioned or paid for by Cloudflare. It was made on personal time, hardware and AI subscriptions, and the agents were explicitly instructed to be unbiased. Every figure comes from the official pricing pages listed under Method, so you can check the numbers yourself.

1 · Free plans Workers Free vs Vercel Hobby

Free plans cost $0 on both platforms. What differs is how much you can run before you hit a hard limit. Neither free plan sells extra compute usage. On Cloudflare, R2 is a separate subscription and is billed beyond its free tier.

LimitCloudflare Workers FreeVercel Hobby
Base price$0$0
Commercial useAllowedNot allowed (personal, non-commercial only)
Compute requests100,000 / day (≈3M / 30 days)1M invocations / mo
CDN / static requestsUnlimited (static assets, without Workers Cache / Worker-first)1M CDN requests / mo (includes function requests)
CPU10 ms per invocation (small occasional overruns tolerated; sustained excess fails with Error 1102)4 Active CPU-hours / mo
Memory128 MB, not metered360 GB-hours / mo (2 GB fixed)
BandwidthUnlimited, $0100 GB Fast Data Transfer + 10 GB Fast Origin Transfer
Max request durationNo wall-clock limit for HTTP while the client is connected300 s
Object storageR2 (separate subscription, metered beyond free tier): 10 GB-mo, 1M Class A, 10M Class BBlob: 1 GB, 2k uploads, 10k reads, 10 GB transfer
Key-valueKV: 100k reads/day, 1k writes/day, 1 GBGlobal Config: 100k reads, 100 writes, 1 store (1 MB)
SQL databaseD1: 5M rows read/day, 100k written/day, 5 GBNone first-party (Marketplace, provider-priced)
Image transforms5,000 unique / mo (Images Free)5,000 / mo
Queues10,000 ops / day1M ops / mo
Cron5 per account, as often as once/minuteLegacy Cron Jobs: 100/project, once/day. Schedules (beta): every 15 min, 1,000/team, 5,000 runs/period
Build minutes3,000 / moBasic machine included (unmetered), 1 concurrent
What happens at the limitWorker requests fail (Error 1027 / 429), or bypass the Worker if the route is set to fail open; CPU overruns fail with 1102Feature paused, typically until the 30-day window resets. No paid overages on Hobby; upgrade to Pro to continue

Does it fit on the free plan?

The month is 30 days, and Cloudflare traffic is assumed to stay under 100k requests on every day, not just on average. CPU-ms is assumed to be the same on both runtimes. Vercel memory uses 2 GB × wall time with no concurrency, which is an upper bound under this simplified model.

ScenarioCloudflare FreeVercel Hobby
Personal static site
300k requests/mo, all static, 15 GB transfer
✓ $0✓ $0
Small SSR app (light CPU)
500k SSR requests (8 ms CPU, 120 ms wall, 50 KB) + 1.5M static requests, 30 GB
✓ $0✗ Exceeds: 2M CDN requests > 1M; 25.0 GB origin transfer > 10 GB
Hobby JSON API
2.5M API requests (~83k/day), 3 ms CPU, 50 ms wall, 2 KB, 5 GB
✓ $0✗ Exceeds: 2.5M CDN requests > 1M; 2.5M invocations > 1M
Low-traffic SSR (heavy CPU)
300k SSR requests (25 ms CPU, 200 ms wall, 60 KB) + 600k static, 20 GB
✗ Exceeds: 25 ms CPU > 10 ms/invocation cap✗ Exceeds: 18.0 GB origin transfer > 10 GB
Download / asset-heavy static site
400k static requests, 200 GB transfer
✓ $0✗ Exceeds: 200 GB transfer > 100 GB

Vercel Pro is costed both ways: with Flat Rate CDN (the default for new Pro teams) and with on-demand CDN. The cheaper of the two is shown. The last column repeats the Vercel total with provisioned memory divided by 4, as if Fluid compute ran 4 requests at once per instance. Vercel doesn't publish a packing factor, so treat that column as a sensitivity check, not a quote. Expand any row to see the line items.

cheaperpricier
ScenarioCloudflareVercelCheaperVercel @ 4× concurrency
Marketing site (static)
5M static requests, 250 GB transfer
$5.00$40.00Cloudflare by $35.00 (8.0×)$40.00
Line items

Cloudflare Workers Paid

Workers Paid minimum$5.00
$5.00

Vercel Pro (no in-instance concurrency)

Pro platform fee (1 seat)$20.00
Flat Rate CDN: $20/mo tier$20.00
$40.00
SaaS SSR app
3M SSR requests (20 ms CPU, 150 ms wall, 60 KB) + 12M static, 400 GB
$5.60$107.38Cloudflare by $101.78 (19.2×)$105.40
Line items

Cloudflare Workers Paid

Workers Paid minimum$5.00
CPU-ms over 30M @ $0.02/M$0.60
$5.60

Vercel Pro (no in-instance concurrency)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled (on-demand CDN)$0.00
Active CPU @ $0.128/h$2.13
Provisioned memory (2 GB) @ $0.0106/GB-h$2.65
Invocations @ $0.60/M$1.80
Fast Origin Transfer @ $0.06/GB$10.80
CDN requests on-demand @ $2.00/M$30.00
Fast Data Transfer on-demand @ $0.15/GB$60.00
$20 usage credit$-20.00
$107.38
API backend
50M API requests (4 ms CPU, 80 ms wall incl. DB wait, 2 KB), 100 GB
$20.40$166.67Cloudflare by $146.27 (8.2×)$149.00
Line items

Cloudflare Workers Paid

Workers Paid minimum$5.00
Worker requests over 10M @ $0.30/M$12.00
CPU-ms over 30M @ $0.02/M$3.40
$20.40

Vercel Pro (no in-instance concurrency)

Pro platform fee (1 seat)$20.00
Flat Rate CDN: $100/mo tier$100.00
Active CPU @ $0.128/h$7.11
Provisioned memory (2 GB) @ $0.0106/GB-h$23.56
Invocations @ $0.60/M$30.00
Fast Origin Transfer @ $0.06/GB$6.00
$20 usage credit$-20.00
$166.67
High-traffic SSR site
60M SSR requests (15 ms CPU, 200 ms wall, 80 KB) + 240M static, 25 TB
$37.40$4,776.67Cloudflare by $4,739.27 (127.7×)$4,723.67
Line items

Cloudflare Workers Paid

Workers Paid minimum$5.00
Worker requests over 10M @ $0.30/M$15.00
CPU-ms over 30M @ $0.02/M$17.40
$37.40

Vercel Pro (no in-instance concurrency)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled (on-demand CDN)$0.00
Active CPU @ $0.128/h$32.00
Provisioned memory (2 GB) @ $0.0106/GB-h$70.67
Invocations @ $0.60/M$36.00
Fast Origin Transfer @ $0.06/GB$288.00
CDN requests on-demand @ $2.00/M$600.00
Fast Data Transfer on-demand @ $0.15/GB$3,750.00
$20 usage credit$-20.00
$4,776.67
CPU-heavy API (AI/PDF/etc.)
2M requests, 300 ms CPU, 2 s wall (waiting on upstream), 10 KB, 20 GB
$16.40$54.29Cloudflare by $37.89 (3.3×)$36.62
Line items

Cloudflare Workers Paid

Workers Paid minimum$5.00
CPU-ms over 30M @ $0.02/M$11.40
$16.40

Vercel Pro (no in-instance concurrency)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled (on-demand CDN)$0.00
Active CPU @ $0.128/h$21.33
Provisioned memory (2 GB) @ $0.0106/GB-h$23.56
Invocations @ $0.60/M$1.20
Fast Origin Transfer @ $0.06/GB$1.20
CDN requests on-demand @ $2.00/M$4.00
Fast Data Transfer on-demand @ $0.15/GB$3.00
$20 usage credit$-20.00
$54.29

3 · Unit prices, side by side overlapping resources only

The lower price for each resource is marked green and the higher one red. Rows without a colour use different billing units, so they can't be compared directly.

cheaperpricier
ResourceCloudflare (Workers Paid)Vercel (Pro)Notes
Plan base fee$5 / account / mo (min.)$20 / mo incl. 1 deploying seat + $20 usage credit (credit is per team); extra seats $20 eachCloudflare lists no per-seat fee.
Compute requests10M incl., then $0.30 / 1M Worker requests$0.60 / 1M invocations (from 1st unit, credit applies) + every public request is also a CDN request
CPU time30M CPU-ms incl., then $0.02 / 1M CPU-ms = $0.072 / CPU-hourActive CPU $0.128 / CPU-hour (iad1; up to $0.221)Assumes equal CPU-ms per request on both runtimes.
Memory / wall-clock durationNot billed (128 MB per isolate, fixed)Provisioned memory $0.0106 / GB-hour (iad1), billed during I/O waits; 2 GB defaultVercel gives 2–4 GB per instance; Cloudflare caps at 128 MB.
Static asset requestsFree, unlimited (unless Workers Cache is enabled or the Worker runs first)Count as CDN requests: Flat Rate tiers (1M incl.; $20 → 10M; $100 → 50M; $300 → 150M) or $2.00 / 1M on-demand
Bandwidth / egress$0 (Containers excepted)1 TB incl. in Flat Rate tier (50 TB on paid tiers); on-demand $0.15 / GB; plus Fast Origin Transfer $0.06 / GB (request + response bytes to/from Functions, ISR, Blob on cache miss)
Object storage (R2 vs Blob)$0.015 / GB-mo (10 GB free)$0.023 / GB-mo
Object writes$4.50 / 1M Class A (1M free)$5.00 / 1M advanced ops
Object reads$0.36 / 1M Class B (10M free)$0.40 / 1M simple ops (cache misses) + CDN requests (Flat Rate tier or $2.00 / 1M) + Fast Origin Transfer on misses
Object egress$0Blob Data Transfer: covered by Flat Rate CDN tier for eligible traffic; otherwise $0.05 / GB (bulk file/download hosting is ineligible)
Key-value reads (KV vs Global Config)$0.50 / 1M (10M incl.)$3.00 / 1MGlobal Config is capped at 1 MB/store — it is a config store, not general KV.
Key-value writes$5.00 / 1M (1M incl.)$1.00 / 100 = $10,000 / 1MMetering differs: Global Config counts whole-store reads/updates; KV counts per key.
Image transformationsImages Free: 5,000 / mo. Separate Images Paid plan: 5,000 incl., then $0.50 / 1,000 unique transformations (each counted once per month)$0.05 / 1,000, billed per cache MISS/STALE (+ cache reads $0.40/1M, writes $4.00/1M, 8 KB units)Cloudflare also bills $1 / 100k deliveries and $5 / 100k stored for images stored in Images.
Queue operations1M incl., then $0.40 / 1M (64 KB units)$0.60 / 1M (4 KiB units)Vercel's smaller chunk size means >4 KiB messages cost more operations; idempotent sends and concurrency-limited push count 2×; retries add ops on both.
Durable workflowsSteps: 500k incl., then $0.80 / 100k; storage 1 GB-mo incl., then $0.20 / GB-mo; plus Workers requests + CPUEvents: $0.02 / 1k; data written $0.50 / GB; retained $0.50 / GB-mo; plus Functions + Queues usageDifferent billing units (steps vs events) — not directly comparable.
CI build minutes6,000 min incl. (4 vCPU), then $0.005 / min$0.0035 / vCPU-min (Standard 4 vCPU = $0.014 / min); none included; each deployment rounded up to a whole minute
Cron jobsNo separate fee (billed as requests + CPU); 250/account, as often as once/minuteNo separate fee (billed as function usage). Legacy Cron Jobs: 100/project, 1/min. Schedules (beta): up to 10,000/team on Pro
WAF / DDoSUnmetered DDoS; WAF custom rules, 1 rate-limiting rule and Free Managed Ruleset on all zone plans (more on paid zone plans)DDoS + custom rules free; rate limiting $0.50 / 1M allowed requestsNot modelled in scenarios.

4 · Object storage R2 vs Vercel Blob, standalone accounts

R2 doesn't need Workers Paid, but it is its own subscription. Blob needs Vercel Pro once usage goes past the Hobby limits, so the $20 platform fee and $20 credit are included. Blob downloads incur CDN requests, Blob Data Transfer, and Fast Origin Transfer on cache misses. Flat Rate CDN covers CDN requests and Blob Data Transfer for eligible application traffic, but bulk file or download hosting is ineligible. The main Vercel column assumes the traffic is eligible and takes the cheaper of Flat Rate and on-demand. The last column assumes it is ineligible, so everything is billed on-demand. Vercel's cache misses are assumed at 20% of both requests and bytes. R2 reads are counted conservatively: every download is a Class B operation, and every upload is one single-part operation. R2 rounds usage up to the next whole billing unit.

Bucket profileCloudflare R2Vercel Blob (Pro, Flat Rate eligible)CheaperVercel Blob if ineligible
Small bucket
50 GB stored, 100k uploads, 2M reads, 200 GB out
$0.60$20.00Cloudflare by $19.40 (33.3×)$20.00
Line items

R2 (no Workers Paid needed)

Storage over 10 GB @ $0.015/GB-mo$0.60
$0.60

Vercel Blob on Pro, Flat Rate eligible

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled / ineligible (on-demand CDN)$0.00
Storage @ $0.023/GB-mo$1.15
Advanced ops (uploads) @ $5.00/M$0.50
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$0.16
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$2.40
CDN requests on-demand @ $2.00/M$4.00
Blob Data Transfer on-demand @ $0.05/GB$10.00
$20 usage credit$-18.21
$20.00

Vercel Blob on Pro, ineligible (on-demand)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled / ineligible (on-demand CDN)$0.00
Storage @ $0.023/GB-mo$1.15
Advanced ops (uploads) @ $5.00/M$0.50
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$0.16
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$2.40
CDN requests on-demand @ $2.00/M$4.00
Blob Data Transfer on-demand @ $0.05/GB$10.00
$20 usage credit$-18.21
$20.00
Mid bucket
1 TB stored, 1M uploads, 20M reads, 5 TB out
$18.45$189.60Cloudflare by $171.15 (10.3×)$379.60
Line items

R2 (no Workers Paid needed)

Storage over 10 GB @ $0.015/GB-mo$14.85
Class B (reads) over 10M @ $0.36/M$3.60
$18.45

Vercel Blob on Pro, Flat Rate eligible

Pro platform fee (1 seat)$20.00
Flat Rate CDN: $100/mo tier covers CDN requests + Blob Data Transfer$100.00
Storage @ $0.023/GB-mo$23.00
Advanced ops (uploads) @ $5.00/M$5.00
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$1.60
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$60.00
$20 usage credit$-20.00
$189.60

Vercel Blob on Pro, ineligible (on-demand)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled / ineligible (on-demand CDN)$0.00
Storage @ $0.023/GB-mo$23.00
Advanced ops (uploads) @ $5.00/M$5.00
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$1.60
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$60.00
CDN requests on-demand @ $2.00/M$40.00
Blob Data Transfer on-demand @ $0.05/GB$250.00
$20 usage credit$-20.00
$379.60
Large bucket
10 TB stored, 5M uploads, 200M reads, 50 TB out
$236.25$3,771.00Cloudflare by $3,534.75 (16.0×)$3,771.00
Line items

R2 (no Workers Paid needed)

Storage over 10 GB @ $0.015/GB-mo$149.85
Class A (writes) over 1M @ $4.50/M$18.00
Class B (reads) over 10M @ $0.36/M$68.40
$236.25

Vercel Blob on Pro, Flat Rate eligible

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled / ineligible (on-demand CDN)$0.00
Storage @ $0.023/GB-mo$230.00
Advanced ops (uploads) @ $5.00/M$25.00
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$16.00
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$600.00
CDN requests on-demand @ $2.00/M$400.00
Blob Data Transfer on-demand @ $0.05/GB$2,500.00
$20 usage credit$-20.00
$3,771.00

Vercel Blob on Pro, ineligible (on-demand)

Pro platform fee (1 seat)$20.00
Flat Rate CDN disabled / ineligible (on-demand CDN)$0.00
Storage @ $0.023/GB-mo$230.00
Advanced ops (uploads) @ $5.00/M$25.00
Simple ops (cache-miss reads, 20% assumed) @ $0.40/M$16.00
Fast Origin Transfer on cache misses (20% of bytes) @ $0.06/GB$600.00
CDN requests on-demand @ $2.00/M$400.00
Blob Data Transfer on-demand @ $0.05/GB$2,500.00
$20 usage credit$-20.00
$3,771.00

5 · Other overlapping services usage cost only, excluding plan fees and credit

Key-value: Workers KV vs Global Config

WorkloadKVGlobal ConfigCheaper
1M reads, 100 writes$0.00$4.00Cloudflare by $4.00 (∞)
20M reads, 1,000 writes$5.00$70.00Cloudflare by $65.00 (14.0×)
200M reads, 10,000 writes$95.00$700.00Cloudflare by $605.00 (7.4×)

Global Config holds at most 1 MB per store and is built for feature flags and config. One read fetches the whole store, while KV bills per key, so only the read-heavy config case compares like for like. For general key-value storage on Vercel you need Marketplace Redis, which the provider prices.

Image transformations

WorkloadCF ImagesVercel Image Opt.Cheaper
5,000 transformations / mo$0.00$0.25Cloudflare by $0.25 (∞)
50,000 transformations / mo$22.50$2.50Vercel by $20.00 (9.0×)
500,000 transformations / mo$247.50$25.00Vercel by $222.50 (9.9×)

Transformations only. The units differ: Cloudflare counts each unique transformation once per month, while Vercel bills every cache MISS or STALE, so the same variant can be billed more than once. Cloudflare's rate needs the separate Images Paid plan. Vercel's image cache reads and writes (in 8 KB units) and CDN requests and transfer are extra. So are Cloudflare's Images storage and delivery fees, for images stored in Images.

Queues

WorkloadCF QueuesVercel QueuesCheaper
1M messages / mo (3 ops each)$0.80$1.80Cloudflare by $1.00 (2.2×)
10M messages / mo (3 ops each)$11.60$18.00Cloudflare by $6.40 (1.6×)
30M messages / mo (3 ops each)$35.60$54.00Cloudflare by $18.40 (1.5×)

Assumes messages of 4 KiB or less, delivered once, with 3 operations per message: write/read/delete on Cloudflare and send/receive-or-notify/delete on Vercel. Retries add operations on both platforms. On Vercel, idempotent sends and concurrency-limited push deliveries count double. Consumer compute is excluded.

CI build minutes

UsageWorkers BuildsVercel Standard (4 vCPU)CheaperVercel Basic (2 vCPU)
300 build-min / mo$0.00$4.20Cloudflare by $4.20 (∞)$2.10
2,000 build-min / mo$0.00$28.00Cloudflare by $28.00 (∞)$14.00
10,000 build-min / mo$20.00$140.00Cloudflare by $120.00 (7.0×)$70.00

Workers Builds on the Paid plan uses 4 vCPU / 8 GB machines. Vercel Pro's default is Elastic machines (4–30 vCPU) at $0.0035 per vCPU-minute. Vercel rounds each deployment up to a whole minute, including post-build time.

6 · Feature parity non-overlapping features are not priced above

CloudflareVercelAvailability
WorkersVercel Functions (Fluid compute)Both
Static Assets / PagesVercel CDN static hostingBoth
R2Vercel BlobBoth
Workers KVGlobal Config (1 MB config store); ephemeral Runtime Cache; general KV via Marketplace (Upstash)Partial
QueuesVercel Queues (beta)Both
WorkflowsVercel WorkflowsBoth
ImagesImage OptimizationBoth
Cron TriggersCron Jobs → SchedulesBoth
ContainersDaemons (beta) / container images as FunctionsPartial
AI GatewayAI GatewayBoth
SandboxSandboxBoth
WAF / DDoSVercel FirewallBoth
D1 (SQLite DB)None first-party — Marketplace Postgres (Neon, Supabase), provider-pricedCloudflare only
Durable ObjectsNo equivalent stateful actor with built-in storage (Workflows, Drives, Sandbox store other kinds of durable state)Cloudflare only
HyperdriveNoneCloudflare only
Workers AI (hosted inference)None (AI Gateway proxies 3rd-party providers)Cloudflare only
VectorizeNone first-party — MarketplaceCloudflare only
Analytics EngineObservability custom metrics / querying (narrower scope)Partial
Browser Run (formerly Browser Rendering)None dedicated (DIY in Sandbox)Cloudflare only
Email Routing / SendingNoneCloudflare only
vinext ISR support; Workers Cache stale-while-revalidate + purgeISR (Incremental Static Regeneration)Both
Web Analytics (real-user Core Web Vitals: LCP, INP, CLS)Speed Insights (real-user Core Web Vitals)Both
No equivalent identifiedv0Vercel only
Previews (Workers) — no per-seat feePreview deployments per branchBoth

7 · Method, assumptions & known discrepancies

Primary sources