selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

muxarr logo

Self-host muxarr

v0.9.13

Media track cleaner for audio and subtitle tracks

BetaOpen SourceGPL-3.0
Updated10 hours ago
LanguageC#
Setup difficultyModerate
Stars
184
Port
8183 (Web UI and API)
Requires
FFmpeg (ffmpeg, ffprobe), MKVToolNix (mkvmerge, mkvpropedit)
Docker
ghcr.io/kirovair/muxarr
Install with Docker Compose
Muxarr dashboard showing library overviewFile details with track previewProfile settings editorLibrary statistics and codec/language breakdownTrack names before metadata cleanupTrack names after metadata cleanup

What is muxarr?

Should you self-host muxarr?

muxarr scores 47/100 on selfhost.directory (how scoring works) and ranks #85 of 142 in Media Management. It has 184 GitHub stars.

It shipped 20 stable releases in the past year. The latest, v0.9.13, came out on 26 October 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is GPL-3.0-licensed and written mostly in C#.

Its closest alternative on selfhost.directory is Sonarr (81/100, 17 472 stars). It scores higher overall, so compare the two before you pick. See muxarr vs Sonarr side by side.

Features

  • Automatic processing via webhooks
  • Fallback languages
  • Language priority and track limits
  • Library overview and statistics
  • Notifications
  • Original language detection
  • Per-directory profiles
  • Post-processing commands
  • Regional language variant detection
  • REST API
  • Safe by default validation
  • Smart metadata fixes
  • Strip unwanted audio tracks
  • Strip unwanted subtitle tracks

muxarr README

How to install muxarr

Install muxarr with Docker Compose

Docker and Docker Compose

services: muxarr: image: ghcr.io/kirovair/muxarr:latest container_name: muxarr environment: - TZ=Europe/Amsterdam - PUID=1000 - PGID=1000 volumes: - /path/to/appdata:/config - /path/to/media:/media ports: - 8183:8183 restart: unless-stopped

Images published for linux/amd64 and linux/arm64

How to configure muxarr

  • ASPNETCORE_HTTP_PORTS8183HTTP port for the web UI (bare metal)

    HTTP port for the web UI (bare metal)

  • ConnectionStrings__DefaultConnection/config/muxarr.dbSQLite database path (bare metal)

    SQLite database path (bare metal)

  • MUXARR__AUTH__RESETSet to true to remove the login on the next start if you lost the password. Remove it again afterwards

    Set to true to remove the login on the next start if you lost the password. Remove it again afterwards

    values: true

  • PGID888Group ID for file permissions

    Group ID for file permissions

  • PUID888User ID for file permissions

    User ID for file permissions

  • TZUTCTimezone

    Timezone

  • UMASK022Permission mask for files Muxarr writes, e.g. 002 for group-writable libraries

    Permission mask for files Muxarr writes, e.g. 002 for group-writable libraries

muxarr releases & version history

FAQ

I lost my password, how do I reset it?

Start the container once with environment variable MUXARR__AUTH__RESET=true. Muxarr removes the login on that start. Then set a new password under Settings > Security and remove the variable.

What about hardlinks and seeding?

When Sonarr/Radarr import by hardlink, the download and library file share data. Enable 'Skip hardlinked files' in the profile to avoid editing the seeding copy or doubling disk space.

What are .muxtmp and .muxbak files?

.muxtmp is the new file being written; .muxbak is the original during the swap. Both exist only for seconds normally. If Muxarr was killed mid-swap, it cleans up on next start.

Can Muxarr tell regional dubs apart (VFQ, VFF, Latino, Castellano)?

Yes. Muxarr recognizes regional variants from language tags and track names, and lets you list French (Canada), Spanish (Latin America), etc. as languages of their own.

How do I set up fallback languages (e.g., German subs, English if none)?

Put German first, add English below it and click its fallback button. This makes English a fallback for German.

What about tracks with no language tag?

A file with exactly one untagged audio track is treated as the original language (if Sonarr/Radarr connected). With several untagged tracks, Muxarr does not guess. Add 'Undetermined' to the language list to keep them unconditionally.

How do I update Muxarr?

With Docker Compose: docker compose pull followed by docker compose up -d. Database and settings live in the /config volume and are migrated automatically.

Can I run Muxarr on a Raspberry Pi or a small NAS?

Yes. Since nothing is re-encoded, the work is mostly disk I/O. Images are published for amd64 and arm64.

Which files does Muxarr handle?

MKV, WebM, MP4 and M4V. Files stay in their own format; Muxarr does not convert between formats.

How do I get Plex, Emby or Jellyfin to notice the changed file?

Add the server under Settings › Notifications with the Completed trigger. Muxarr then asks it to refresh after each conversion.

Does Muxarr rename or move files?

Not by itself. Renaming is Sonarr's and Radarr's job. Muxarr only changes tracks and metadata inside media files.

Does Muxarr re-encode my files? Is there quality loss?

No. Muxarr copies video and audio unchanged and only removes selected tracks. When an MKV only needs metadata changes, it edits in place without rewriting the file.

More in Video

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…