Overview
Most media apps want to take over your files — importing them into a private library, re-encoding them, asking you to sign in. Lowkey Media Viewer doesn't. Point it at a directory and it just opens. Files stay where you put them, in the formats you already have. Tags live in a local SQLite database you own and can back up. No account, no cloud sync, no telemetry.
It's built for the kind of library that's hard to handle with existing tools: tens of thousands of images and videos accumulated over years, mixed formats, comic archives, audio files, screenshots, weird old .webms. If you want to view those files, tag them, find them again later, and never lose them to a service shutting down — this is for you.
Why use it
- Fast. Opens enormous folders without hanging. Renders 4K videos and high-res images without stutter. Tested against libraries with 100,000+ files.
- Local-first. Your media stays where you put it. Tags live in a SQLite database in your home directory that you own and can back up. No sync, no cloud, no account.
- Free and open source. MIT licensed. No paywalled features. Support the project on Patreon if you want, but you never have to.
- Stays out of the way. Dark UI by default. Toolbars, sidebars, and metadata panels all toggle off so you can fill the screen with just the media. Hotkeys for everything.
- Handles awkward stuff. Comic archives (.cbz, .cbr) open like directories. Video subtitles get picked up automatically. Audio gets a WebGPU visualizer. Transcripts are editable in place.
- Cross-platform. Native installer for Windows, signed and notarized DMG for macOS (Apple Silicon + Intel), and AppImage for Linux.
What's inside
- Viewing — images (JPG, PNG, GIF, WebP, BMP, SVG, JFIF), video (MP4, MOV, MKV, WebM, FLV, M4V) with subtitle pickup and audio-track selection on multi-track files, audio (MP3, M4A, AAC, OGG, WAV) with a WebGPU spectrum visualizer, and comic archives (.cbz, .cbr) opened like directories
- Organizing — drag-to-tag, bulk apply, stored category slots (1–9), command palette, context palette, Battle Mode ELO rating, duplicate detection, custom tag previews
- Finding things — fuzzy tag search across every category, filename search, description search, transcript-driven video navigation, OR/AND/Exclusive tag filtering
- Metadata & transcripts — markdown notes on tags and categories, in-place transcript editing (Enter saves, Shift+Enter for newline), per-cue delete, substring search through transcripts, automatic SRT/VTT sidecar pickup
- Built for big libraries — virtualized scrolling for 50,000+ tags or items, thumbnails generated on-demand and cached, library and query state persisted across launches
Want batch processing or AI tagging?
Lowkey Media Server is an optional companion that adds a job queue, auto-tagging via ONNX or Ollama vision models, video transcription via Faster Whisper, HLS streaming, and a workflow editor. The viewer detects it automatically once both are running. The viewer is stable; the server is in beta. See the Media Server docs.
Supported File Types
Lowkey Media Viewer reads a wide range of image, video, and audio formats natively. Comic book archives are extracted automatically and their contents load like a directory.
- Images jpg, jpeg, png, gif, bmp, svg, jfif, pjpeg, pjp, webp, avif
- Video mp4, mov, webm, mkv, m4v, ogg
- Audio mp3, wav, flac, aac, ogg, m4a, opus, wma, aiff, ape
- Archives cbz, cbr, zip
Images
Video
Audio
Archives
File Management
Beyond viewing and tagging, Lowkey Media Viewer can act on the underlying files themselves — copy them out to another folder or remove them from disk — without ever leaving the keyboard. These actions work on the active file (the item currently in the detail view) or on your whole filtered list.
Copy the Active File
Press Ctrl + C to copy the active file to the system clipboard as a real file reference. Switch to Explorer, Finder, or your Linux file manager and paste (Ctrl + V) to drop a copy wherever you like — exactly as if you'd copied the file from the file manager itself.
Copy the Whole List
Press Ctrl + Shift + C to copy every item in your current list view at once. Whatever your active filter, search, or tag selection has narrowed the list down to is placed on the clipboard together, so you can paste the entire set into another folder in a single step — handy for pulling a whole tag or search result out to disk.
Delete the Active File
Press Delete to remove the active file. It's sent to your operating system's Recycle Bin / Trash rather than being erased outright, its entry is removed from the library, and the viewer advances to the next item so you can keep moving. If the file can't be moved to the trash for some reason, it's deleted directly — so treat Delete as a destructive action.
All three shortcuts appear in the Keyboard Shortcuts table and can be rebound from the Hotkeys tab of the command palette.
Display & Scaling
Scale Modes
Control how media is displayed in the detail view:
- Fit - Scale to fit within the window
- Cover - Fill the window (may crop edges)
- Actual - Display at 100% zoom
- Zoom - Configurable zoom levels (140%+)
Grid & Masonry Layouts
Choose between traditional grid layout or Pinterest-style masonry layout for your thumbnail view. Toggle between layouts in the command palette under List settings.
Curation & Tagging
The tagging panel lets you create collections of images and videos. Tags are saved to a local SQLite database in your home directory.
Creating a Category and Tag
Organize your media with categories and tags. Categories group related tags together.
Tagging an Image or Video
Apply a tag by dragging it onto an image in the detail view or list view.
Using an Image as the Tag Preview
Hold Shift before dragging a tag onto an image to use that image as the tag preview. You can also toggle the "Apply Tag Preview" option in the Tagging panel sidebar.
Tag All Images in the Current List
Hold Ctrl before dragging a tag onto an image to apply it to every image in the current list. Or select "Tag All Images" in the Tagging Panel Sidebar.
Reordering Tags and Media
Drag tags and media to reorder them in a collection. Media can only be dragged when sorting by Weight.
Selecting Tags to View
View individual tags or combinations. When selecting multiple tags, choose between:
-
OR mode - Media with at least one selected tag
-
AND mode - Media with all selected tags
-
Exclusive mode - Selective filtering
Toggle filtering mode in the Tagging Panel Sidebar.
Searching Tag and File Names
Use text inputs in the Tagging panel to search files by filename or search tags in your collection.
Edit and Delete Tags
Edit tag names or delete tags. Editing updates all associated assignments. Deleting removes all assignments (not reversible).
Tag & Category Descriptions
Tags and categories now support descriptions. Add notes about what a tag is for, what to include, or anything else worth remembering — descriptions appear inline in the tagging panel and can be edited from the redesigned tag and category modals.
Video & Audio Playback
Playback Controls
Full video and audio playback with:
-
Play/Pause toggle (spacebar)
- Progress bar with scrubbing and hover preview
- Time display (current/total)
-
Volume control with mute toggle
Autoplay Settings
Configure autoplay behavior in the command palette:
- Enable/disable autoplay on media selection
- Set delay before playing (5-second increments)
- Configure video loop count before advancing
Looping
Set custom loop durations (1s, 2s, 5s, 10s) for focused viewing of specific segments.
Metadata & Transcripts
View file metadata, Stable Diffusion parameters, gallery-dl metadata, and transcripts in the Metadata panel.
Viewing Transcripts
View VTT transcripts located in the same folder as the media file.
Transcripts must have the same filename with a .vtt extension.
Click cues to jump to timestamps, and toggle "Follow Transcript"
( on /
off)
to auto-scroll along with the video.
Generating Transcripts
Generate transcripts using the Whisper command if installed locally. Learn how to install Whisper.
Editing Transcripts
Transcripts are editable in place. Click any cue's text to edit it — Enter saves the change back to the .vtt file, Shift + Enter inserts a line break inside the cue. The Insert button at the top of the transcript panel adds a new cue for the current playhead position, and a small × on each cue (visible on hover) deletes that cue from the file. A substring search box above the cue list filters the transcript on every keystroke and lets you jump between matches with the prev / next buttons, so long transcripts stay navigable.
Captions & Subtitles
Drop an .srt or .vtt file next to a video (matching the video's filename) and Lowkey Media Viewer renders it as captions over the player. The viewer transparently converts SRT to WebVTT, strips byte-order marks, and normalizes line endings so caption files saved by any tool render correctly. Toggle captions on or off from the volume popover in the player controls; multi-track videos expose an audio-track picker in the same popover so you can switch languages without leaving the video.
Advanced Features
Battle Mode (ELO Rating)
Compare two media items side-by-side and vote for your preference. The ELO rating system automatically updates scores based on your choices. Great for ranking and curating large collections.
Duplicate Detection
Find and manage duplicate or similar media files. Merge duplicates to consolidate entries while preserving tag assignments.
Keyboard Shortcuts
Customize all keyboard shortcuts in the Hotkeys tab of the command palette.
| Action | Default Shortcut |
|---|---|
| Next item | Right Arrow |
| Previous item | Left Arrow |
| Play/Pause | Space |
| Shuffle | X |
| Refresh library | R |
| Apply stored tag (slot 1-9) | 1 – 9 |
| Store current tag to slot (1-9) | Ctrl + 1-9 |
| Apply most recent tag | A |
| Preview tag before applying (hold) | Shift |
| Apply tag to all filtered items (hold) | Ctrl |
| Switch to stored category (1-9) | Shift + 1-9 |
| Store current category to slot (1-9) | Alt + 1-9 |
| Move current item to top | [ |
| Move current item to end | ] |
| Copy current file to clipboard | Ctrl + C |
| Copy all filtered files to clipboard | Ctrl + Shift + C |
| Delete current file | Delete |
| Minimize window | Escape |
| Toggle fullscreen | F11 (Ctrl + Cmd + F on macOS) |
Contact & Support
Have a question or feature request? All development is driven by community feedback, and updates are free forever.