Browse like a file manager
Breadcrumbs, sorting by name, size and date, folder sizes worked out in the background, and full keyboard navigation.
sThree Browser is a safe, open-source S3 browser. Your credentials stay encrypted on your device, and every request goes straight from you to your storage.
Works with AWS S3, Cloudflare R2, MinIO and any S3-compatible storage.
Most tools pass your keys through someone's server. sThree doesn't have one. The host only hands your browser some static files; after that it's just you and your bucket.
Connections and credentials are one AES-256-GCM ciphertext, keyed from your master password with scrypt. On desktop it's also bound to the OS keychain.
Every S3 request is signed locally and sent straight to the storage endpoint. The site's host never sees a key, a file or a request.
No analytics, no telemetry. This page doesn't load a single file from anywhere else either.
Breadcrumbs, sorting by name, size and date, folder sizes worked out in the background, and full keyboard navigation.
Large files go up in parallel parts. Cancel one, and it cleans up after itself.
Share a file, not your keys. Links stop working on schedule.
Images, video, audio and code, previewed right beside the list.
Folder deletes show how many objects go and ask you to type the name.
After 15 idle minutes, or when you press Lock, every decrypted secret is cleared.
Connections to every provider in colour-coded groups. Or set one to ask for keys each session and never save them.
AWS S3Cloudflare R2MinIOWasabiAny S3-compatible API
Light, dark, or follow the system. Desktop installers are built from source for now.
The web version is a folder of static files in a 13 MB image. No application server, a non-root user, and nothing that ever touches your data.
GET /health for your orchestratordocker run -d -p 8888:8888 --name sthree-browser ghcr.io/mohamadtahir/sthree-browser:latest
Open http://localhost:8888, then serve it over HTTPS.
Your browser talks to S3 directly, so each bucket must allow your site's origin. The app shows this exact rule when one is missing.
[{
"AllowedOrigins": ["https://sthree.example.com"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag", "Content-Length", "Content-Type", "Last-Modified"],
"MaxAgeSeconds": 3600
}]
Create a master password, add a key and a bucket, and you're in. No account, no sign-up.