Interactive, multi-format, command-line metadata editor with right-click integration. Available on Windows, macOS and Linux.
Project description
metmux
Interactive, multi-format, command-line metadata editor with right-click integration.
100% local: no network, no telemetry.
Compatible with: Windows, macOS, Linux.
metmux is a Python program that lets you edit the metadata of a wide variety of files through a TUI (an interactive interface in the terminal).
Its name is a contraction of metadata multiplexer: met for metadata, its core business; mux for multiplexer, the system that picks the right specialised engine (exiftool, ffmpeg, mutagen…) according to the file type.
Its goal is practicality: it launches with a simple right-click on any file(s) or folder(s). It is a single tool where several would normally be needed, in a language that is literal and quick to use.
Installation
pipx install metmux
or, in an environment you manage yourself:
pip3 install metmux
Both bring mutagen (the audio engine) automatically. Two external programs unlock the other engines; pip cannot install them, and metmux tells you at startup if one is missing:
| Tool | Unlocks | Required? |
|---|---|---|
| exiftool | images, PDF, and the dates of all files | yes |
| ffmpeg / ffprobe | video containers (MKV, AVI, WebM…) | recommended |
- Windows:
winget install -e --id OliverBetz.ExifToolandwinget install -e --id Gyan.FFmpeg - macOS:
brew install exiftool ffmpeg - Debian / Ubuntu:
sudo apt install libimage-exiftool-perl ffmpeg
Manual installations and other systems: full installation guide.
Usage
metmux photo.jpg # edit one file
metmux --mode=group ~/Music # batch editing (same fields on all the files)
metmux --mode=wipe secret.jpg # erase all metadata
Everything then happens at a single > prompt: field names, values, date shifts, wipe, undo, rename. metmux --help lists the modes, and the help panel inside the session documents every command.
The recommended way to launch metmux is the right-click integration (Windows, macOS, Linux). It relies on the scripts of the integrations/ folder, which live in the repository rather than in this package.
Supported formats
Images and RAW (jpg, png, webp, heic, cr3, nef, dng…), PDF, audio (mp3, flac, ogg, opus, m4a…), video (mp4, mov, mkv, avi, webm…), Office (docx, xlsx, pptx, odt…), EPUB, CBZ, Jupyter notebooks, playlists, e-mail, property lists, SQLite databases, and more. Whatever the format, the file name and the file-system dates stay editable.
The full table, engine by engine: supported formats.
Documentation
The complete documentation lives on GitHub: English · Français.
License
GNU GPL v3.0 or later © 2026 Michaël Bruzy.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file metmux-1.0.0.tar.gz.
File metadata
- Download URL: metmux-1.0.0.tar.gz
- Upload date:
- Size: 229.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7685fec869b21f87df8c73cdf755e622cff0a39cdeef1fe30d34bfda0118105
|
|
| MD5 |
3486901f5c81600677f156273446b94e
|
|
| BLAKE2b-256 |
1cf86a0bc34ecbfabd3a3c0ad962b0774850f8bdfb0e33f867e943f058f60e36
|
File details
Details for the file metmux-1.0.0-py3-none-any.whl.
File metadata
- Download URL: metmux-1.0.0-py3-none-any.whl
- Upload date:
- Size: 117.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29b4ebe1c6cc34c27ccd00f26bc13ed9283333903e31682179ca1d1b7139b43a
|
|
| MD5 |
f33e896b02b30dbad64c53c8c64df10e
|
|
| BLAKE2b-256 |
e885ff644ac6b74e019374fbca238166683a7bc021b7d102a49f0aae9bcfaa73
|