Educational — Cloud egress & data-transfer cost guides. FinOps-lite estimators. Not a quote, broker, or savings guarantee. Launching soon where incomplete.
app-assets · Educational

Cloud egress: Vercel Blob vs Cloudflare R2 for app assets

Updated

Platform-bundled blob storage vs standalone object storage — model delivery path, not logo preference.

Path matrix: Vercel Blob vs Cloudflare R2 app-asset delivery (educational)
DimensionVercel Blob (typical)R2 (typical)Model
Delivery pathOften via Vercel/platform edgeCloudflare fetch / custom domainWho terminates TLS + cache
Egress framingPlatform bandwidth quotas/pricingStorage egress marketing + opsQuota cliffs
DX couplingTight with Vercel app deployIndependent of app hostPortability
CDN controlPlatform defaultsExplicit Cache-Control / WorkersHit ratio ownership
Multi-region storyPlatform-definedBucket location choicesLatency vs cost

Provider source footnotes

  1. Vercel Blob documentation / pricing — as-of Unknown until verified
  2. Cloudflare R2 pricing — as-of Unknown until verified
  3. Vercel pricing (platform bandwidth context) — as-of Unknown until verified

Dated starting points only — Unknown until verified means no invented $/GB. PipeToll does not scrape private consoles or guarantee figures.

Path-class vocabulary: path template, Unknown until verified. Clone pages that only paste public $/GB miss platform quotas and DX lock-in. Use path templates: browser ← edge ← blob versus browser ← R2/custom domain.

Path templates to model

Common traps

Comparing only storage $/GB ignores platform bandwidth quotas. Assuming high CHR without measuring misses understates origin fill. Portability costs (migration egress) are easy to skip in vendor switches. No guaranteed savings from either logo.

FinOps checklist

  1. Capture client GB, CHR, and bill lines for 30 days.
  2. Map whether edge bandwidth and origin storage are separate invoices.
  3. Use Mode C for origin-fill sensitivity.
  4. Document DX/portability constraints beside cost — not cost alone.
  5. Read CDN origin egress and CHR.

FinOps-lite Unknown until verified

Worked example (educational): 1 TB client downloads at 85% CHR

If users download 1,000 GB and cache hit ratio is 0.85, origin fill ≈ 150 GB. Multiply by the origin provider’s $/GB (Mode C). Platform bandwidth quotas may bill the 1,000 GB edge side separately — two bills, one user journey. Synthetic only; no savings guarantee.

Open calculator

FAQ on this path

Is platform blob storage “included” egress?

Sometimes bandwidth is wrapped in plan quotas. Overage cliffs and separate blob pricing still need a path model.

When does standalone R2 win on clarity?

When you want explicit Cache-Control, Workers, and portable buckets independent of the app host — clarity ≠ guaranteed savings.

What is the first metric to capture?

Client download GB, cache hit ratio, and which bill line (platform vs storage) moves when CHR changes.