Documentation

Everything you need to know about using MKV Mender. New to the project? Start with our overview or try the web app.

🚀 Quick Start

Get started with MKV Mender in under 5 minutes

1

Install

Run the install script to get the CLI

2

Register

Create an account to contribute names

3

Rename

Look up and rename your media files

# Install MKV Mender
$ curl -sSL https://raw.githubusercontent.com/quentinsteinke/mkvmender/main/install.sh | bash
# Register an account
$ mkvmender register --username myusername
# Look up a file
$ mkvmender lookup movie.mkv

📦 Installation

Automatic Installation (Recommended)

The easiest way to install MKV Mender is using our install script:

$ curl -sSL https://raw.githubusercontent.com/quentinsteinke/mkvmender/main/install.sh | bash

Manual Installation

Download the binary for your platform from the releases page:

macOS (Apple Silicon): mkvmender-darwin-arm64
macOS (Intel): mkvmender-darwin-amd64
Linux (x86_64): mkvmender-linux-amd64
Linux (ARM64): mkvmender-linux-arm64
Windows (x86_64): mkvmender-windows-amd64.exe

Build from Source

If you prefer to build from source, check out our GitHub repository:

$ git clone https://github.com/quentinsteinke/mkvmender.git
$ cd mkvmender
$ go build -o mkvmender ./cmd/cli
$ sudo mv mkvmender /usr/local/bin/

Prefer not to install? Use our web application instead - no installation required.

🔐 Authentication

To upload names and vote, you need to create an account.

Register

Create a new account with a unique username:

$ mkvmender register --username johndoe
✓ Registration successful!
API Key: abc123xyz...
Save this key - you'll need it to log in

⚠️ Important: Save your API key securely. It won't be shown again!

Login

Configure your API key for future commands:

$ mkvmender login --api-key abc123xyz...
✓ Login successful!
Configuration saved to ~/.mkvmender/config.yaml

Configuration File

Your credentials are stored at ~/.mkvmender/config.yaml:

# MKV Mender Configuration
api_key: abc123xyz...
base_url: https://mkvmender.org

🎬 Core Workflows

Looking Up Files

Query the community database for naming suggestions:

$ mkvmender lookup movie.mkv
✓ File hash: abc123...
✓ Found 5 community submissions:
1. The.Matrix.1999.1080p.BluRay.x264.mkv [↑ 142 ↓ 3]
2. Matrix.1999.BluRay.1080p.mkv [↑ 89 ↓ 12]
3. The.Matrix.1999.mkv [↑ 45 ↓ 8]

Renaming Files

Interactively select and apply a community-approved name:

$ mkvmender rename movie.mkv
Select a name:
1. The.Matrix.1999.1080p.BluRay.x264.mkv [↑ 142 ↓ 3]
2. Matrix.1999.BluRay.1080p.mkv [↑ 89 ↓ 12]
Choice: 1
✓ Renamed: movie.mkv → The.Matrix.1999.1080p.BluRay.x264.mkv

💡 Tip: Use --dry-run to preview changes without applying them

Contributing Names

Submit your own naming conventions to help the community:

$ mkvmender upload movie.mkv \
--type movie \
--name "The.Matrix.1999.1080p.BluRay.x264.mkv" \
--title "The Matrix" \
--year 1999 \
--quality 1080p \
--source BluRay
✓ Submission uploaded successfully!

For TV shows, also include season and episode:

$ mkvmender upload episode.mkv \
--type tv \
--name "Breaking.Bad.S01E01.1080p.mkv" \
--title "Breaking Bad" \
--year 2008 \
--season 1 \
--episode 1

Advanced Features

Voting System

Vote on submissions to help identify the best naming conventions:

$ mkvmender vote movie.mkv
Select a submission to vote on:
1. The.Matrix.1999.1080p.BluRay.x264.mkv [↑ 142 ↓ 3]
Choice: 1
Vote (up/down): up
✓ Vote recorded! [↑ 143 ↓ 3]

Search by Title

Find naming conventions without having the file:

$ mkvmender search "Breaking Bad"
✓ Found 1 title with multiple submissions
Breaking Bad (2008-2013) - TV Show
→ Season 1 (8 episodes)
→ Season 2 (13 episodes)
Navigate? (y/n): y

Sort results by different criteria:

# Sort by vote score (default: relevance)
$ mkvmender search "Matrix" --sort votes
# Disable fuzzy search for exact matches
$ mkvmender search "The Matrix" --no-fuzzy

Batch Processing

Process entire directories at once. Perfect for organizing large media libraries:

$ mkvmender batch /path/to/movies/
✓ Processing 12 files...
[1/12] movie1.mkv - Found 5 submissions
[2/12] movie2.mkv - Found 3 submissions
...

Options for batch processing:

# Preview changes without applying
$ mkvmender batch /movies/ --dry-run
# Process only specific file types
$ mkvmender batch /movies/ --ext .mkv,.mp4

📚 Command Reference

mkvmender register

Create a new user account

$ mkvmender register --username <name> [--url <base_url>]
Flag Description Required
--username Your desired username Yes
--url API base URL (default: https://mkvmender.org) No

mkvmender login

Configure API credentials

$ mkvmender login --api-key <key> [--url <base_url>]
Flag Description Required
--api-key Your API key from registration Yes
--url API base URL No

mkvmender hash

Display SHA-256 hash of a file

$ mkvmender hash <file>

mkvmender lookup

Query database for naming submissions

$ mkvmender lookup <file>

mkvmender rename

Interactively rename a file

$ mkvmender rename <file> [--dry-run]
Flag Description Required
--dry-run Preview changes without applying No

mkvmender upload

Submit a naming convention to the community

$ mkvmender upload <file> --type <movie|tv> [options]
Flag Description Required
--type Media type: movie or tv Yes
--name Proposed filename No
--title Title of the media No
--year Release year No
--season Season number (TV only) No
--episode Episode number (TV only) No
--quality Video quality (e.g., 1080p, 4K) No
--source Source (e.g., BluRay, WEB-DL) No

mkvmender vote

Vote on naming submissions

$ mkvmender vote <file>

mkvmender search

Search for titles without having the file

$ mkvmender search <query> [--sort <method>] [--no-fuzzy]
Flag Description Default
--sort Sort by: relevance, votes, date, title relevance
--no-fuzzy Disable fuzzy matching false

mkvmender batch

Process multiple files in a directory

$ mkvmender batch <directory> [--dry-run] [--ext <extensions>]
Flag Description Default
--dry-run Preview changes without applying false
--ext File extensions to process (comma-separated) .mkv,.mp4,.avi,.m4v

🔧 Troubleshooting

Connection Errors

If you see "failed to connect to server":

  • Check your internet connection
  • Verify the base URL in ~/.mkvmender/config.yaml
  • Try running mkvmender login --url https://mkvmender.org

Authentication Issues

If commands fail with "authentication required":

  • Verify your API key is correct in the config file
  • Try logging in again with mkvmender login
  • If you lost your API key, register a new account

File Not Found

If you see "no submissions found for this file":

  • This file hasn't been submitted to the database yet
  • Be the first! Use mkvmender upload to contribute
  • Try searching by title instead: mkvmender search "Movie Title"

Permission Errors

If you see permission errors when renaming:

  • Ensure you have write permissions for the file's directory
  • Try running the command with appropriate permissions
  • Check if the file is currently open or in use by another program

FAQ

How does the hashing work?

MKV Mender uses SHA-256 hashing of the entire file content. This means identical files will have the same hash, regardless of the filename. Even small changes to the file will result in a completely different hash.

Can multiple users submit names for the same file?

Yes! That's the whole point. The community votes to identify the best naming convention for each file. Popular submissions rise to the top.

Is my file uploaded to a server?

No! Only the file's SHA-256 hash and size are shared, along with your proposed filename. Your actual media files never leave your computer.

How do I change my username?

Currently, usernames cannot be changed. You would need to register a new account with a different username.

What's the difference between movies and TV shows?

TV shows require season and episode metadata. This allows for better organization and navigation when searching for specific episodes.

Can I delete my submissions?

Currently, only administrators can delete submissions. If you need a submission removed, please contact support or file a GitHub issue.

How can I contribute to the project?

Visit our GitHub repository to report issues, suggest features, or contribute code. We welcome all contributions!