everything you need
to browse cloud storage

// aws s3 · azure blob · gcp cloud storage. no electron. no docker.
01 / thumbnail-grid
thumbnail grid
Lazy-loading image grid with adjustable thumbnail sizes. Drag the size slider — CSS grid reflows instantly. Supports images and video previews.
// browser-native loading="lazy"
// grid-template-columns: repeat(auto-fill, minmax(Npx, 1fr))
my-bucket/photos/
$ bucketlens listing my-bucket/photos/ ... vacation-2024/ IMG_4821.jpg 3.2 MB IMG_4822.jpg 2.8 MB IMG_4823.jpg 4.1 MB DSC_0091.png 6.7 MB clip-001.mp4 48.3 MB clip-002.mp4 52.1 MB ... 142 objects (1.2 GB)
02 / prefix-navigation
S3 prefix navigation
Navigates S3 CommonPrefixes as folders. Breadcrumb path updates as you drill down. Prefix-aware — works with any bucket structure.
// Delimiter="/" on list_objects_v2
// CommonPrefixes → virtual folders
aws s3 ls
$ aws s3 ls s3://my-bucket/ PRE photos/ PRE videos/ PRE backups/ $ aws s3 ls s3://my-bucket/photos/ 2024-01-15 10:22:01 3354624 IMG_4821.jpg 2024-01-15 10:22:04 2936218 IMG_4822.jpg PRE vacation-2024/ ← BucketLens does this for you
03 / lightbox
lightbox + video playback
Full-screen viewer for images and video. Arrow key navigation, ESC to close. Videos play inline with native controls.
// mp4 · webm · mov · avi · mkv
// images proxied through Flask
keybindings
# keyboard shortcuts ← → arrow keys navigate images ESC close lightbox space play/pause video # supported formats images jpg · png · gif · webp bmp · svg · tiff · avif video mp4 · mov · webm avi · mkv
04 / keyboard-nav
keyboard-first navigation
Navigate your buckets without touching the mouse. Full vim-style controls — j/k to scroll, h/l to go up/down folders, gg/G to jump to top/bottom. Because if you're already living in the terminal, why pick up the mouse to check your buckets?
// vim motions. in a bucket browser.
// h · l · j · k · gg · G · x · V
keybindings
# navigation j / k scroll down / up h / l parent folder / open gg / G jump to top / bottom # selection x toggle select V select all Ctrl+C copy cloud URI # lightbox j / k next / prev image ESC close
05 / upload
drag & drop upload
Drag files onto the browser window to upload to the current bucket prefix. Or use the file picker. Multi-file supported. Progress toast shows upload status.
// PUT directly to your bucket
// multipart/form-data → boto3
upload log
# uploading to my-bucket/photos/ uploading photo-001.jpg [████████████████████] 100% uploading photo-002.jpg [████████████████████] 100% uploading video-trip.mp4 [████████████████████] 100% ✓ 3 files uploaded to my-bucket/photos/
06 / delete
2-step delete with audit log
Delete requires two explicit confirmations and typing the bucket name. Every deletion is logged to SQLite and plaintext. Because rm -rf happens.
// bucketlens_audit.log
// bucketlens_audit.db (SQLite)
bucketlens_audit.log
# audit log — append-only 2025-01-15T22:14:33Z action DELETE provider aws bucket my-bucket key photos/img.jpg status success 2025-01-15T22:14:34Z action DELETE provider aws bucket my-bucket key photos/img2.jpg status success
07 / multi-cloud
multi-cloud support
AWS S3 and Azure Blob Storage supported today. GCP coming soon. Same UI, your existing credentials.
// aws configure
// az login
// gcloud auth application-default login
provider selector
# choose your cloud provider ✓ AWS S3 ✓ Azure Blob Storage ✓ GCP Cloud Storage same interface, different backend uses existing credentials
get started in 30 seconds
# prerequisites python 3.8+ aws cli configured → aws configure
pip install bucketlens bucketlens # → open http://127.0.0.1:8080
# optional: aws profile + custom port AWS_PROFILE=prod bucketlens BucketLens_PORT=9090 bucketlens