R2 Client is a fast, native app for Cloudflare R2, AWS S3, MinIO, and RustFS. Manage multiple accounts, transfer between providers, and preview files — without ever opening a browser tab.
Every feature you expect from a serious storage client — and the ones you didn't know you needed.
Add any combination of R2, S3, MinIO, or RustFS accounts — plus multiple API tokens per account with different bucket permissions. Switch backends with a click.
Stream files directly between accounts and providers — no temp files, no local disk hit. Server-side copy when possible. Up to 5 concurrent transfers with 4 parallel parts each.
Images, video, PDFs, Markdown, and 30+ code languages — rendered with Monaco, inline.
Select hundreds of files. Download, move, delete, rename. Pause, resume, cancel.
Drop a 10 GB file, close your laptop, pick up where you left off. Parallel parts by default.
Rust backend, tiny binary, no Electron tax. Opens in under a second.
Copy provider-aware links to the clipboard with one shortcut. Custom domains supported.
Auto-generated via ffmpeg. Scrub through a bucket of .mp4s the way you expect.
Provider-aware auth, endpoints, path-style rules, and public-link builders — not a leaky S3 abstraction.
Account ID + API Token, multiple tokens per account, per-bucket public domain.
zero egressAccess keys, region, optional custom endpoint and force path-style for clones.
regions · endpointsSelf-hosted friendly. Custom endpoint + scheme, optional path-style toggle.
self-hostedPath-style always on. Drop in the endpoint and your keys — done.
path-style forcedDownload the installer for your platform, or build from source with Bun + Rust. Tauri keeps the binary small and the boot fast.
On first launch the Add Account dialog opens. Pick your provider, paste your credentials, and click Load to fetch buckets.
Click any bucket in the sidebar. Upload, preview, rename, generate signed URLs, or select across folders for a batch transfer.
Select files → Batch Move → pick a destination account and bucket. Toggle Delete original for move vs. copy. Queue runs in the background.
# The easy way — install via Homebrew brew install dickwu/tap/r2 # Optional: ffmpeg enables video thumbnail previews brew install ffmpeg # If you grabbed the .dmg instead, macOS may block the app. # Open System Settings → Privacy & Security → "Open Anyway", # or remove the quarantine flag manually: sudo xattr -d com.apple.quarantine /Applications/r2.app/ # Fresh-start fix if the app refuses to launch rm -rf ~/Library/Application\ Support/com.lifefarmer.r2/ rm -rf ~/Library/Caches/com.lifefarmer.r2/
# Install the downloaded .deb sudo dpkg -i r2_0.1.60_amd64.deb # Or run the .AppImage directly chmod +x r2_0.1.60.AppImage && ./r2_0.1.60.AppImage # Optional: ffmpeg enables video thumbnail previews sudo apt install ffmpeg # Debian / Ubuntu sudo dnf install ffmpeg # Fedora
# Run the downloaded .msi installer, then launch R2 Client # from the Start menu. Auto-updates are enabled by default. # Optional: ffmpeg enables video thumbnail previews choco install ffmpeg # via Chocolatey winget install ffmpeg # via winget
# Clone and install git clone https://github.com/dickwu/r2.git cd r2 bun install # Run the dev build bun run tauri dev # Or produce a signed release bun run tauri build
The main changes from recent releases.