Lowkey Media Viewer

A fast, minimal viewer for the images, videos, audio, and comics already on your hard drive. Free and open source. Built for people who have a real media library and would rather look at it than fight their software.

Works on Windows, macOS, and Linux

Supports .jpg, .webp, .png, .gif, .mp4, .mov, .webm, comic book archives .cbz / .cbr, audio files, and more

Download | Free

Support on Patreon

Version 2.23.2

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 file 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 recursive 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.

Interface & Navigation

The main design principle of Lowkey Media Viewer is that you should spend most of your time and screen real estate on your images and videos.

Using Panels

There are four panels: List View (Left), Detail View (Middle), MetaData (Right), and Tagging (Bottom). To open a closed panel, drag it open from the edge of the screen. To close a panel, drag the border back to the edge.

Using the Command Palette

Right-click anywhere to bring up the command palette. This is the primary location of all controls and options.

Using the Context Palette Requires Media Server

Shift + right-click to open the context palette, the launcher for AI and batch actions. The command palette holds the viewer's own settings; the context palette acts on exactly what you clicked.

  • The selected media item or detail view: actions target that single file.
  • Any other item or empty panel space: actions target your whole current list, with filters applied.
  • A tag or category: actions target every item carrying that tag or category.

The header shows what you're acting on and how many items that is. For a single file it also offers two quick searches, Find visually similar and Find this person (face match). See Visual Search and Faces & People.

The palette is organized into three blocks:

  • Generate: pick one or more operations (Tags, Descriptions, Transcripts, File info, Embeddings, Faces) and hit Run to launch them as a single job on the server. A Missing / All toggle decides whether to fill in only what's missing (the default) or regenerate everything. Operations that need a model or tool you haven't installed show a small setup badge with a one-click download right in the palette.
  • Workflows: every workflow saved on the server, with a filter box and arrow-key navigation. Click one (or press Enter) to run it against the current context.
  • Active Jobs: a footer listing the jobs currently running or queued, each with a live status and a cancel button, so you can keep working while batches run.

When you shift + right-click a person's tag, the palette also offers a Rename field for that person. If you're not signed in to the Media Server, the palette shows a login prompt in place of the action blocks.

Resizing List View Grid

Modify the size of items in the list view grid using the grid tab grid in the command palette.

Shuffle

Shuffle images by clicking the shuffle icon shuffle in the command palette or pressing the X key. Use sorting options in the command palette to return to a sorted view.

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.

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.

Face Scan Demo Video

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.
People View Demo Video

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.

Face Review Demo Video

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.

Find This Person Demo Video

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

.jpg .jpeg .png .gif .webp .avif .bmp .svg .jfif .pjpeg .pjp

Video

.mp4 .mov .webm .mkv .m4v .ogg

Audio

.mp3 .wav .flac .aac .ogg .m4a .opus .wma .aiff .ape

Archives

.cbz .cbr .zip

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.