R2 Image Gallery

Every image below is fetched live from Cloudflare R2 through a Worker binding. No CDN tricks, no signed URLs, no API calls — just env.BUCKET.get(key).

Your uploads (2 from drag-and-drop · newest first)

Sample images (4 pre-loaded for demo)

How this page works: When your browser requested the images above, the Worker called env.BUCKET.get("images/sample-1.jpg") — a native Cloudflare binding, not an external API call, not an S3 SDK request. R2 returned the bytes; the Worker streamed them to you with the right Content-Type header. No signing, no auth tokens to manage, no SDK to install.
The egress story (this page, scaled up):
Total payload per page view: 0.17 MB.
If this page were viewed 1,000,000 times/month = 162.1 GB of bandwidth.

On AWS S3 (egress $0.09/GB): $15/month
On Vercel Blob (egress ~$0.15/GB): $25/month
On Cloudflare R2 (zero egress): $0/month — forever
Upload your own file → Watch the meter → Refresh gallery View as JSON Back to demo dashboard