Proxies readonly requests to Cloudflare R2 via Cloudflare Workers.
If you want an uploader, try Aster!
If you see a bug or something missing, please open an issue or pull request!

HEAD, GET, and OPTIONS requestsetag, cache-control, expires, last-modified)content-type, content-encoding, content-language, content-disposition)range, if-range, returns content-range)if-modified-since, if-unmodified-since, if-match, if-none-match)index.html in 0.5.0Create your R2 bucket(s) if you haven't already (replace bucket_name and preview_bucket_name appropriately):
pnpm install
pnpm wrangler r2 bucket create bucket_name # required
pnpm wrangler r2 bucket create preview_bucket_name # optional
You can also do this from the Cloudflare dashboard.
Edit wrangler.toml to have the correct bucket_name and optionally, preview_bucket_name (you can set it to bucket_name) if you're going to run this locally.
You can do this from a fork, if using the GitHub Actions method.
You may edit CACHE_CONTROL to the default cache-control header or remove it entirely to fall back to nothing. If you set CACHE_CONTROL to "no-store" then Cloudflare caching will not be used.
Note: Due to how custom domains for workers work, you MUST use a route to take advantage of caching. Cloudflare may fix this soon. Also note that *.workers.dev domains do not cache responses. You MUST use a route to your own (sub)domain.
If you want to deploy render with multiple domains for one worker, check out multi-render! It uses render as a package to serve multiple buckets to multiple domains with custom configurations.
pnpm wrangler publish # or `pnpm run deploy`
CF_API_TOKEN (with the Edit Cloudflare Workers template) and CF_ACCOUNT_ID in the repo settingswrangler.toml as needed (this will trigger the workflow)You may use this worker's functionality as a package by installing and importing render2:
npm install render2
Usage:
import render from "render2";
render.fetch(req, env, ctx);
You can see an awesome example with Erisa's multi-render!
Install deps:
pnpm install
To launch the development server:
pnpm run dev
TypeScript
100.0%
Proxies readonly requests to Cloudflare R2 via Cloudflare Workers.
If you want an uploader, try Aster!
If you see a bug or something missing, please open an issue or pull request!

HEAD, GET, and OPTIONS requestsetag, cache-control, expires, last-modified)content-type, content-encoding, content-language, content-disposition)range, if-range, returns content-range)if-modified-since, if-unmodified-since, if-match, if-none-match)index.html in 0.5.0Create your R2 bucket(s) if you haven't already (replace bucket_name and preview_bucket_name appropriately):
pnpm install
pnpm wrangler r2 bucket create bucket_name # required
pnpm wrangler r2 bucket create preview_bucket_name # optional
You can also do this from the Cloudflare dashboard.
Edit wrangler.toml to have the correct bucket_name and optionally, preview_bucket_name (you can set it to bucket_name) if you're going to run this locally.
You can do this from a fork, if using the GitHub Actions method.
You may edit CACHE_CONTROL to the default cache-control header or remove it entirely to fall back to nothing. If you set CACHE_CONTROL to "no-store" then Cloudflare caching will not be used.
Note: Due to how custom domains for workers work, you MUST use a route to take advantage of caching. Cloudflare may fix this soon. Also note that *.workers.dev domains do not cache responses. You MUST use a route to your own (sub)domain.
If you want to deploy render with multiple domains for one worker, check out multi-render! It uses render as a package to serve multiple buckets to multiple domains with custom configurations.
pnpm wrangler publish # or `pnpm run deploy`
CF_API_TOKEN (with the Edit Cloudflare Workers template) and CF_ACCOUNT_ID in the repo settingswrangler.toml as needed (this will trigger the workflow)You may use this worker's functionality as a package by installing and importing render2:
npm install render2
Usage:
import render from "render2";
render.fetch(req, env, ctx);
You can see an awesome example with Erisa's multi-render!
Install deps:
pnpm install
To launch the development server:
pnpm run dev
TypeScript
100.0%