Overview
Most media apps want to take over your files: import them into a private library, re-encode them, ask you to sign in. Lowkey Media Viewer doesn't. Point it at a directory and it opens. Your files stay where they are, in the formats you already have, and tags go into a local SQLite database you can copy and back up like any other file. There's no account and nothing phones home.
It's aimed at the kind of library other tools choke on: tens of thousands of images and videos piled up over years, mixed formats, comic archives, audio, screenshots, weird old .webms. If you want to view that stuff, tag it, find it again later, and not lose it when some service shuts 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. Nothing syncs anywhere, and there's no account.
- Free and open source. MIT licensed, no paywalled features. There's a Patreon if you want to support the project, but nothing is behind it.
- 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. See the Media Server docs.
Getting Started
Download the installer for your platform from the button at the top of this page: a native installer for Windows, a signed and notarized DMG for macOS (Apple Silicon and Intel), or an AppImage for Linux. Launch it and point it at a folder. There's no import step, no account, and nothing to configure first.
Open a File/Directory
When you launch Lowkey Media Viewer you will be asked to select a
file. Opening a file automatically loads other files in the
directory into the list view. You can also associate media file
types with LowKey Media Viewer and open files directly. Change
files anytime using the file icon
in the Command Palette.
Recursive File Loading
By default, opening a file loads only the media sitting directly
in that file's folder. Toggle Recursive mode with
the
button in the command palette to pull in everything from nested
subfolders as well, so an entire directory tree loads into a single
list view. The button highlights while recursive mode is active,
and switching it reloads the current library. Sorting and shuffle
then span every file found across the subfolders, which makes it an
easy way to browse a deeply nested collection as one continuous
set.
Open a Comic Archive
Comic book archives (.cbz, .cbr, and .zip) open just like directories. Pick one from the file dialog, drag it onto the window, or double-click it in Explorer or Finder. The viewer extracts the contents and loads every page into the list view automatically. RAR-based comic archives (.cbr) are extracted with a bundled UnRAR binary, so no external dependency is required. Reopening the same archive is instant, and the temporary extraction is cleaned up when you quit the app.
Comic View Mode
Comic Mode shows two pages at once in the detail view instead of a single item: the active page on the left and the page after it on the right. Reading .cbz / .cbr archives (or any folder of sequential images) then feels like an open book. The detail panel splits in half to fit the pair, and moving to the next item slides the spread forward. Turn it on from the image settings in the command palette.
Drag & Drop Import
Drop files straight onto the viewer to import them into your current folder. A drop zone appears on the main panels while you drag. Hold Shift while releasing to move files instead of copying. When you're viewing a tag instead of a folder, dropped files are placed in your configured default import path and the active tags are applied automatically.
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.
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.
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.
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 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 tag and category modals.
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.
Search & Filtering
There are several ways to narrow a library down: filter by tags, search filenames and descriptions, find images that look like another image, describe what you want in plain words, or draw a box around anything on screen and find more like it.
Tag and text filtering work out of the box. The visual and semantic searches run on on-device image embeddings (SigLIP 2) through the optional Media Server, so nothing leaves your machine. See Setup Requirements.
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.
Search & Filter Chips
The search input builds a composable query out of chips. Mix and match filters and they all apply together:
- #tag - Media with a tag
- in:category - Media tagged in a category
- path: - Filename or folder contains text
- description: - Description contains text
- hash: - File hash contains text
- faces:ungrouped - Media with detected but ungrouped faces (see Faces & People)
Click a chip to exclude it (NOT), and click the join between chips to switch each one between AND and OR. Visual searches below appear as chips too, so you can combine "looks like this" with regular tag and text filters. Remove the chip to get your previous view back.
Find Similar Images
Shift + right-click any image (in the detail view, or the selected item in list view) to open the Context Palette, then choose Find Similar. The library reorders by visual similarity to that image, with a match score badge on every result.
Search by Meaning
Toggle the ✨ button in the search input and describe what you're looking for ("a red car at night", "handwritten notes", "two people on a beach"), then press Enter. Text is matched against the images themselves, not tags or filenames, so it finds things you never got around to tagging. The toggle stays on until you turn it off.
Screen Clip Search
Hold Alt and drag a box around anything on screen (part of an image, a frame of a paused video, a detail inside a larger picture) and the viewer searches your library for visually similar media. The clip appears as a chip in the search input with its own thumbnail, and composes with your other filters like any other search. Screen clip capture is a desktop-app feature; in the browser you can still search by uploading an image.
Blending Image + Text
Any visual search can be steered with words. Hover a similar-image, screen-clip, or text chip and a small blend editor pops up. Type something like "at night" or "close up" into the "Add concept…" box and press Enter to fold that concept into the search. A slider sets how strongly it pulls (it starts at 50%), so you can nudge "images like this one" toward "images like this one, but at night." The chip shows a small ✨ badge with the blended text so you can always see what's active.
Composite Queries
Blends aren't limited to one image and one phrase. A single visual chip can hold a whole recipe of nodes: images, screen clips, and text concepts, each with its own weight. While your filter mode is AND or OR, running another Find Similar or capturing another clip stacks it into the existing visual chip as a new node instead of adding a separate filter (in Exclusive mode it replaces the search, as before). The chip's badge switches to ⊕ with a node count.
Hover the chip to open the node editor, where you can:
- Adjust weights: each node has a slider (5–100%) controlling its share of the search.
- Steer away: the − toggle turns a node negative, pushing results away from that image or concept ("like these two photos, but not blurry").
- Remove nodes: the × on each row drops it from the blend. The first (base) node anchors the search and always stays.
- Add concepts: the same "Add concept…" box adds more text nodes.
Everything in the chip is combined into a single query on the server, one weighted direction in the same visual space, rather than several separate searches mashed together. Results are ranked with a match-score badge on every item.
Setup Requirements
Visual search uses the Lowkey Media Server's embedding backend:
- Run the Lowkey Media Server and log in from the viewer (the desktop app and server share the same library database).
- Install the SigLIP 2 model (~1.5 GB, one-time) from the server's Dependencies page.
- Generate embeddings for your library, either with one click from the Context Palette (Generate embeddings) or as a batch job on the server. New media can be embedded as it's ingested.
Faces & People Requires Media Server
The viewer can find the faces in your library, group them into people, and let you name, curate, and search by them. It works on photographs as well as drawn or anime-style characters, routing each image to the right recognition model automatically. Like visual search, it all runs on your own machine through the Media Server, and no faces leave your computer.
Scanning for Faces
Two ways to start: open the People category in the tagging panel and click Scan library for faces, or Shift + right-click anything and pick the Faces chip in the Context Palette's Generate block. The scan detects faces, computes a compact signature for each one, and groups them as it goes, so new people start appearing in the People view while the scan is still running. Videos are scanned on a representative frame.
The People View
Select the People category in the tagging panel to see everyone found in your library. Each person is a card with a face-crop preview, their name, a media count, and a green ✓ badge showing how many of their faces you've personally confirmed. People you've named come first, followed by automatic groups labeled Unknown #1, Unknown #2, and so on.
- Click a card to filter the library to that person. Person names behave exactly like tags, so they combine with all your other filters.
- Drag a card onto a media item to tell the viewer that person is in it.
- Drag the "New group" chip onto an item to start a brand-new person from the face in that image.
- Group new faces (toolbar) folds newly scanned faces into your existing people; Rebuild groups dissolves the automatic "Unknown" groups and regroups from scratch. Named people and faces you've confirmed are never touched.
Naming, Merging & Deleting
The ✎ button on a card opens the person editor: rename them, pick a new preview face, or merge them into another person with the Merge into picker. You can also merge by simply dragging one person's card onto another. Deleting offers two strengths: Delete person ungroups their faces (the faces stay and can be regrouped later) and remembers not to re-form that same group on its own, while Delete person and faces also discards the face data so a bad group can't come back. Your media files are never touched either way.
Reviewing a Person's Faces
Automatic grouping is good but not perfect, so every card has a review button that opens all of that person's faces in a grid, sorted suspects first: the faces least like the rest of the group float to the top, which is where the mistakes usually are. On each face:
- ✓ It's them confirms (locks) the face. Locked faces are treated as ground truth: they anchor who the person "is" and survive every regroup.
- ✕ Not them removes the face and permanently bars it from this person, even if the group is later dissolved and rebuilt.
Lock all confirms the whole group at once when it looks right, and the checkbox mode lets you sweep a messy group in one pass: check the keepers and hit Keep checked, discard rest.
Ungrouped Faces
Faces that haven't matched anyone yet collect behind a
Not grouped yet card at the end of the
People view. Click it to filter the library with the
faces:ungrouped predicate (media that has
faces, none of them grouped), or open its review grid to
deal with the faces directly: pick a person from the
Assign clicked faces to… dropdown and click
faces to file them, or hit + on a face to
start a new person from it.
Find This Person
Shift + right-click any image and choose Find this person in the Context Palette to search your whole library for the person in that photo, with no naming or grouping required. In the desktop app you can also hold Shift + Alt and drag a box around a face anywhere on screen to search from just that region. The search lands in the input as a face chip and composes with your other filters like everything else.
Tuning the Grouping
The Tune button in the People view opens three sliders if the automatic grouping is too eager or too shy:
- Match strictness: looser makes bigger groups that may mix people, stricter makes purer, smaller ones.
- Minimum group size: how many matching faces it takes before a new "Unknown" person is created.
- Face quality floor: ignore blurry or tiny detections when forming new groups.
Regroup with these settings rebuilds every automatic group under the new values. Faces you've confirmed and rejections you've made always survive, so your curation is never thrown away.
Setup Requirements
Face recognition uses the Lowkey Media Server:
- Run the Lowkey Media Server and sign in from the viewer.
- Install the face models from the server's Dependencies page (or straight from the Context Palette's setup prompts): the face detector and recognizer for photos, plus the anime head detector and character recognizer if your library includes drawn artwork. The SigLIP 2 model used by visual search also powers the automatic photo-vs-anime routing.
- Run a face scan. On Windows the server can use your GPU (DirectML) to speed this up considerably.
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.
File Management
Lowkey Media Viewer can also act on the underlying files: copy them out to another folder, or remove them from disk, without 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.
Duplicate Detection
Find and manage duplicate or similar media files. Merge duplicates to consolidate entries while preserving tag assignments.
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
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.