How to Mux Subtitles Into an MKV

By Flora Wang, video localization specialist · Published July 26, 2026 · 6 min read

TL;DR: Muxing is the opposite of extracting — instead of pulling a subtitle out, you package a video and a subtitle file together into one MKV. The subtitle becomes a soft, toggleable track you can switch on or off, and because muxing only repackages the streams, it is lossless and takes seconds, with no re-encoding. The standard tool is mkvmerge from MKVToolNix.

What does it mean to mux subtitles into an MKV?

Muxing (short for multiplexing) puts separate streams — a video stream, an audio stream, and a subtitle track — into one container file. Instead of two files sitting side by side (a .mp4 and a .srt), you end up with a single .mkv that carries everything. The subtitle rides along as its own track, so the player can turn it on or off, switch between languages, or restyle it — nothing about the picture changes. That is the key difference from burning a subtitle in, where the words are painted permanently into every frame.

It is also the exact reverse of extraction: extracting a subtitle pulls a track out of a container into its own file, while muxing puts a file into a container as a track. Muxing packages a video and a subtitle file into one MKV, adding the subtitle as its own selectable track rather than changing a single pixel of the video.

How do I mux an SRT into an MKV with mkvmerge?

The standard tool is mkvmerge, which installs as part of MKVToolNix (free, mkvtoolnix.download, or brew install mkvtoolnix). With it installed, the whole job is one command:

mkvmerge -o output.mkv input.mp4 subtitles.srt

That reads your video (input.mp4 — it does not have to be an MKV to start with) and your subtitle file, and writes a new output.mkv containing both. It finishes in seconds because nothing is re-encoded — the video and audio streams are copied across as-is, and the subtitle is simply added alongside them as a track. There is no quality loss and no waiting on an encoder.

Prefer not to touch the command line? MKVToolNix ships a GUI that does exactly the same thing: open it, drag both the video and the subtitle file into the source list, pick an output name, and click Start multiplexing. Muxing an SRT into an MKV is a single mkvmerge -o output.mkv input.mp4 subtitles.srt command (or a drag into the MKVToolNix GUI), and it takes seconds because the streams are copied, not re-encoded.

Soft (muxed) vs burned-in subtitles — which should I choose?

Muxing gives you a soft subtitle — a toggleable track. The viewer can turn it off, and you can add several languages as separate tracks in the same file and let the player choose. Burning in is the opposite: the text becomes a permanent part of the picture, always on, with no way to remove it or switch it off. Each frame is re-encoded with the words painted on.

Muxed (soft) subtitleBurned-in subtitle
On/offToggleable — viewer can turn it offAlways on — part of the picture
Multiple languagesYes, as separate tracksOne only, baked in
Video qualityUntouched — no re-encodeRe-encoded to add the text
Player supportNeeds a player that reads soft subtitlesPlays everywhere, no support needed

Choose muxing when you want flexibility — a subtitle viewers can toggle and multiple languages in one file; burn in only when the target player or platform cannot display soft subtitles at all. If you are unsure which kind you are dealing with, Embedded vs Burned-In Subtitles lays out the distinction.

Can I add more than one subtitle track?

Yes — that is one of the main reasons to mux instead of burn in. Add as many subtitle files as you like to the same mkvmerge command, and set a language flag before each one so players label them correctly:

mkvmerge -o output.mkv input.mp4 \
  --language 0:eng english.srt \
  --language 0:spa spanish.srt

The 0: refers to the first (and only) track inside each subtitle file, and eng / spa are ISO language codes. Each subtitle file becomes its own selectable track, so the viewer sees an "English" and a "Spanish" option in the player's subtitle menu. You can keep adding --language pairs for as many languages as you have. Adding several languages is just several subtitle files in one mkvmerge command, each with its own --language flag, and each becomes a separately selectable track.

Doing it on a Mac

MKVToolNix runs natively on the Mac, and mkvmerge — command line or GUI — does the muxing exactly as above. The one thing it does not do is create the subtitle in the first place; it can only package a subtitle file you already have.

That earlier step is where GeekLink fits. It produces the SRT you then mux: extracting burned-in subtitles from a video by OCR, transcribing speech with Whisper, or translating an existing subtitle into 40+ languages — all locally on your Mac, with nothing uploaded. And if you would rather bake the subtitle in permanently instead of muxing it, GeekLink also burns styled subtitles straight into the video. GeekLink makes the SRT (by OCR, speech recognition, or translation); once you have that file, mkvmerge muxes it into an MKV as a soft, toggleable track.

FAQ

What is the difference between muxing and burning in subtitles?

Muxing adds the subtitle as a separate toggleable track that viewers can turn on or off, while burning in bakes the words into the picture permanently. Muxed subtitles are lossless and flexible; burned-in subtitles are always on and re-encode the video.

Does muxing subtitles re-encode the video?

No. Muxing only repackages the existing video, audio, and subtitle streams into one container, so it is lossless and takes seconds — there is no encoding step and no quality loss.

What tool muxes subtitles into an MKV?

mkvmerge, which is part of MKVToolNix. You can use the command line (mkvmerge -o output.mkv input.mp4 subtitles.srt) or the MKVToolNix GUI by dragging both files in and clicking Start multiplexing.

Can I mux subtitles into an MP4 instead?

MP4 supports soft subtitle tracks too, but MKV handles SRT and ASS text tracks more reliably across players. To add a soft subtitle to an MP4, ffmpeg is the usual route; for the most compatible result, muxing to MKV with mkvmerge is the common choice.

How do I make the subtitle a specific language in the player?

Set the language flag when muxing, for example --language 0:eng before the subtitle file, so the player labels the track (English, Spanish, and so on) in its subtitle menu.

Related Articles

Don't have the subtitle file yet?

GeekLink makes the SRT — OCR, speech recognition, or AI translation — so you have something to mux, all locally on your Mac.

Free Download