Tools · Jan 09, 2026 · 9 min read
Why I moved my entire delivery pipeline to Cloudflare R2.
Client delivery used to be the worst part of my pipeline. Final films went out as download links from cloud storage, portfolio videos streamed from wherever was cheapest that month, and every bill had a line item I'd learned to dread: egress. The more people watched my work, the more I paid for the privilege.
The fix was moving everything — delivery masters, portfolio streams, image galleries — to Cloudflare R2. The headline reason is simple: R2 charges nothing for egress. Storage costs a little, requests cost a little, but bandwidth — the thing that scales with success — is free.
The migration itself was mostly boring, which is a compliment. R2 speaks the S3 API, so the upload tooling carried over with a changed endpoint. The real work was re-encoding the portfolio for streaming: every video became an HLS ladder — a master.m3u8 with quality variants — plus a poster frame and a tiny blur thumbnail generated at the same path. One convention, every video, no exceptions.
What broke: cache headers. R2 behind Cloudflare's CDN caches aggressively, which is what you want until you replace a file and the old version lives on for a day. Now every re-upload gets a new path instead of overwriting — versioned folders, never mutated files.
The numbers after switching: my delivery and hosting cost dropped to roughly the price of storage alone, and streaming got faster in India because the CDN edge is close. The portfolio site you're reading this on serves every frame of video from that bucket, and the server that renders the pages never touches a video byte.
If your work is video and your audience is growing, egress pricing is a tax on your own success. Move the bytes somewhere that doesn't charge you for being watched.