everything you need
to browse S3

// no electron. no docker. no bullshit.
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 / 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/
05 / 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
coming soon
multi-cloud // coming soon
Azure Blob Storage and GCP Cloud Storage support in progress. Same UI, different provider. Switch clouds from the provider selector — no config changes needed.
aws ✓ azure — in progress gcp — in progress
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