Cloudflare R2 control panel
Every file in your bucket.
One precise interface.
Browse, upload, and share R2 objects from the dashboard. Give each app its own service and least-privilege API token, then watch exactly how they use it.
Built for the people who actually ship files.
Browse like a file system
Folders from key prefixes, breadcrumbs, search, previews for images, video, PDFs and text.
Drop anything, anywhere
Drag files or whole folders onto the page. Parallel uploads with live progress and retry.
Services keep things apart
Every app gets its own key prefix, so a blog CDN and a backup job never collide.
Least-privilege tokens
Read-only, upload-only, or full access — scoped to one service. Rotate without downtime.
Usage you can read
Requests and transfer over time, broken down by service, token, and route.
Private by default
Files stay private unless you make them public. Share any file with a signed, time-limited link.
One request to upload.
Tokens carry their service and prefix, so integrations send just the file. The response tells you exactly where it landed — and who can open it: private, public, or through a signed link.
External API guidecurl -X POST "$SA_URL/api/files" \
-H "Authorization: Bearer $SA_TOKEN" \
-F "file=@./hero.png" \
-F "key=images/hero.png"
# → { "object": { "key": "blog/images/hero.png", ... } }
# → served at $SA_URL/files/blog/images/hero.png