You have an MKV file. Your TV won't play it. Your iPhone pretends it doesn't exist. Your editing app shrugs.
So you Google "mkv to mp4 converter" and land on a website with a big upload button. You feed it a 4 GB movie file. You wait 40 minutes for the upload. Then you wait again for the "conversion." Then you download the whole thing back.
Here's the part nobody tells you. That entire process was probably unnecessary.
In most cases, the video inside your MKV file is already in the exact format MP4 uses. You don't need to convert anything. You need to change the box it ships in. That takes about ten seconds on your own machine, costs nothing, and loses zero quality.
Let me show you why, and then how to do it on every platform you own.
MKV and MP4 are boxes, not videos
This is the one concept that makes everything else click.
MKV and MP4 are containers. A container is a wrapper file that holds streams: one video stream, one or more audio streams, maybe some subtitle tracks. The Matroska project (the format behind MKV) describes a container as "an envelope for which there can be many audio, video and subtitles streams, allowing the user to store a complete movie or CD in a single file."
The actual picture you see is not "MKV video" or "MP4 video." It's a stream encoded with a codec — usually H.264 or H.265 for modern files. The container just carries it.
Think of it like shipping. The codec is the product. The container is the box. MKV is a big flexible box that accepts almost anything. MP4 is a standardized box that couriers everywhere recognize.
So when your TV rejects an MKV file, it usually isn't rejecting the video. The H.264 stream inside would play fine. The TV just doesn't understand the box.
Which means the fix is not re-encoding the video. The fix is moving the streams from one box to another. That operation is called a remux, and it's the difference between a 10-second job and a 40-minute one.
Why MKV exists at all
If MP4 plays everywhere, why does anyone use MKV?
Because MKV does things MP4 handles poorly or not at all:
- Any codec. Matroska is built on an extensible structure, so it can hold basically any video or audio format ever made. MP4 has a stricter list of what's allowed inside.
- Multiple audio tracks. English, Finnish, director's commentary — all in one file, selectable at playback.
- Rich subtitles. MKV carries styled subtitle formats like ASS/SSA with fonts, colors, and positioning. It even lets you toggle subtitle, audio, and video streams on the fly.
- Chapters and error resilience. Matroska supports chapter entries and can recover playback from a damaged stream.
That's why the format dominates video archiving and high-quality rips. It's the better box for storing video.
MP4 wins on a different axis: compatibility. It's the container that phones, TVs, browsers, editing apps, and social platforms all agree on. Boring, standardized, universal.
So the honest answer to "which is better" is: MKV for storage, MP4 for playback. And converting between them should cost you nothing, because the product inside the box doesn't change.
The fast way: remux with ffmpeg
FFmpeg is the free, open-source tool that nearly every video app secretly uses under the hood. One command does the whole job:
ffmpeg -i input.mkv -c copy output.mp4
That -c copy flag is the entire trick. It tells FFmpeg to copy the streams instead of re-encoding them. The official FFmpeg documentation is explicit about what this means: stream copy is "useful for changing the elementary stream count, container format, or modifying container-level metadata. Since there is no decoding or encoding, it is very fast and there is no quality loss."
Read that again. No decoding. No encoding. No quality loss. A 4 GB movie remuxes in seconds because your computer is just rewriting the wrapper, not touching the video.
Installing ffmpeg
Mac:
brew install ffmpeg
(Get Homebrew from brew.sh first if you don't have it.)
Windows:
winget install ffmpeg
Run that in Terminal or PowerShell, restart the window, done.
Linux:
sudo apt install ffmpeg
When the simple command fails
Sometimes -c copy throws an error. That's not a bug. It's the container telling you one of the streams doesn't fit in an MP4 box. Two usual suspects:
1. Subtitles. MKV files often carry SRT or styled ASS subtitles. MP4 doesn't accept those formats directly. Tell FFmpeg to convert just the subtitle track to MP4's native text format and copy everything else:
ffmpeg -i input.mkv -c:v copy -c:a copy -c:s mov_text output.mp4
Video untouched. Audio untouched. Only the tiny subtitle track gets rewritten. Note that styled ASS subtitles lose their fonts and positioning in the process — mov_text is plain text. If the styling matters, burn the subtitles in (that requires a re-encode) or keep the MKV and use a player that reads it.
2. Audio codecs. Some MKV files carry DTS or TrueHD audio, which MP4 players commonly choke on. Convert only the audio, copy the video:
ffmpeg -i input.mkv -c:v copy -c:a aac output.mp4
The video stream — the heavy part, the part where quality lives — still transfers untouched. Re-encoding a few hundred megabytes of audio takes a minute. Re-encoding the video would take an hour.
3. Genuinely incompatible video. If the video stream itself is something MP4 can't hold, a copy won't work and you'll need a real re-encode:
ffmpeg -i input.mkv -c:v libx264 -crf 18 -c:a aac output.mp4
This is the slow path. It's also the only case where "conversion" actually means conversion. For the common case — an H.264 or H.265 stream that just lives in the wrong box — you never need it.
Your cheat sheet for today
Save this. It covers every situation you'll actually hit:
| Situation | Command | Speed | Quality |
|---|---|---|---|
| Standard MKV → MP4 | ffmpeg -i in.mkv -c copy out.mp4 |
Seconds | Lossless |
| Has subtitles | ffmpeg -i in.mkv -c:v copy -c:a copy -c:s mov_text out.mp4 |
Seconds | Video lossless |
| DTS/TrueHD audio | ffmpeg -i in.mkv -c:v copy -c:a aac out.mp4 |
~1 min | Video lossless |
| Incompatible video codec | ffmpeg -i in.mkv -c:v libx264 -crf 18 -c:a aac out.mp4 |
Slow | Slight loss |
Start at the top. Only move down the table when the command above it errors out.
The point-and-click way: VLC
Not everyone wants a terminal. Fair. VLC — the free media player you probably already have — converts files too.
- Open VLC. Go to Media → Convert / Save (File → Convert / Stream on Mac).
- Add your MKV file.
- Pick an MP4 profile (something like "Video - H.264 + MP3 (MP4)").
- Choose a destination filename ending in .mp4. Hit Start.
One honest caveat: VLC's convert feature transcodes by default, which means re-encoding. The VideoLAN documentation itself notes that "transcoding can be very slow" and that if your input already matches the output format you want, "you don't have to transcode at all." You can dig into VLC's profile settings and tick "Keep original video track" to get copy behavior, but the defaults will re-encode and cost you time and a little quality.
VLC is the convenient option, not the optimal one. For a one-off file on a machine where you can't install anything, it's fine.
And here's the tip that skips conversion entirely: VLC plays MKV files natively, on every platform including iPhone and Android. If your only goal is watching the file on your phone, don't convert it. Copy it into VLC's mobile app and press play.
HandBrake: good tool, wrong job
HandBrake comes up in every "mkv to mp4" search, so let's be precise about what it does.
HandBrake is a video transcoder. It re-encodes. Always. This isn't my opinion — the official HandBrake documentation lists "pass-through video without conversion" under things HandBrake does not do, and states plainly that "video is always converted."
So every HandBrake conversion, even MKV to MP4 with identical codecs, decodes and re-encodes your entire video. That means:
- It's slow. Real encoding time, not seconds.
- It loses a little quality. Every generation of lossy re-encoding does.
That doesn't make HandBrake bad. It makes it a different tool. HandBrake is excellent when you want to re-encode: shrinking a 20 GB file to 4 GB, converting an ancient codec, standardizing a batch of mixed files for a device with strict requirements. Its presets ("Fast 1080p30" and friends) make that genuinely easy, and it outputs MP4, MKV, or WebM.
But if your video is already H.264 and you just need an MP4 box? HandBrake is a bakery you visited to move a cake between plates. It will insist on baking you a new cake.
Phones: convert less, play more
iPhone. iOS has no built-in MKV conversion, and most App Store "converter" apps are subscription traps wrapped around FFmpeg. Your realistic options: play the MKV directly in VLC for iOS (no conversion needed), or do the remux on your Mac or PC in ten seconds and AirDrop the MP4 over. The second option gives you a file that works in Photos, iMovie, and Messages.
Android. Same logic. VLC for Android plays MKV directly. If you genuinely need an MP4 on-device, Termux users can install FFmpeg and run the exact same -c copy command from the cheat sheet. Everyone else is faster doing it on a computer.
The pattern here is worth noticing: the phone "converter" app category exists mostly to charge you for things your computer does free in seconds. This is the same lesson from why I stopped uploading files to random converter sites — the friction is the product they're selling.
I'll be straight about my own app here, because the philosophy is identical even though the file types aren't. ConvertApps doesn't touch video — it converts images and PDFs (HEIC, JPG, PNG, WebP, batch jobs) entirely on-device, offline, nothing uploaded anywhere. Same rule as the remux trick: the conversion your phone can do locally should never travel through someone's server.
"Converting loses quality" — the myth, sorted
You've heard this one. Someone warns you that every conversion degrades your video, like a photocopy of a photocopy.
Half true, and the half matters.
Re-encoding loses quality. When a tool decodes your H.264 stream and encodes a new one, the new encoder makes lossy compression decisions on top of the old ones. Do that enough times and the damage compounds. This is what HandBrake does, what VLC's default convert does, and what most online converters do.
Remuxing loses nothing. A -c copy remux never decodes the video. The compressed stream lands in the new container bit-for-bit identical. The FFmpeg docs say it directly: no decoding, no encoding, no quality loss. You could remux a file between MKV and MP4 a thousand times and the video stream would still be byte-identical to the original.
So the myth survives because most people have only ever used tools that re-encode. They watched quality drop and blamed "conversion." The conversion was never the problem. The unnecessary re-encode was.
The privacy tax of online converters
One more reason to do this locally, and it's the one that should bother you most.
Every "free online MKV converter" works the same way: your file uploads to their server, their server runs FFmpeg (the same free tool you could run yourself), and you download the result. For a video file, that means gigabytes of your data — home videos, screen recordings, whatever it is — sitting on infrastructure owned by someone whose business model you can't see.
You pay three times. You pay in upload time, because pushing 4 GB up a home connection is slow. You pay in download time to get it back. And you pay in privacy, because you just handed a stranger a copy of your file to save yourself one terminal command.
Local conversion wins on every axis. Faster, free, private, and for MKV to MP4 it's usually lossless too. I wrote a full breakdown of this in the case for offline file conversion — the short version is that almost every file conversion you do regularly can happen on hardware you already own.
That's the standard I hold my own tools to. It's why ConvertApps processes every image and PDF on the device itself, with no server in the loop at any step. Video remuxing on your computer, image and PDF conversion on your phone — different files, same principle. Nothing leaves your machine.
FAQ
Does converting MKV to MP4 reduce quality?
Not if you remux. A remux (ffmpeg -c copy) moves the existing video stream into a new container without decoding it, so the output is bit-identical to the source. Quality only drops if a tool re-encodes the video, which HandBrake always does and VLC does by default.
Why won't my TV or iPhone play MKV files?
MKV is a container many consumer devices simply don't parse, even when the video inside is standard H.264 they could play fine. MP4 is the container with near-universal device support. Remuxing to MP4 fixes playback in most cases because the video stream itself was never the problem.
Is MKV better than MP4?
They're built for different jobs. MKV holds nearly any codec, multiple audio tracks, styled subtitles, and chapters, which makes it better for storing video. MP4 supports fewer features but plays on almost everything, which makes it better for sharing and playback. Neither is "higher quality" — quality comes from the codec and bitrate inside, not the container.
What happens to subtitles when I convert MKV to MP4?
They break unless you handle them. MP4 doesn't accept SRT or ASS subtitle tracks directly, so a plain stream copy errors out or drops them. Convert the subtitle track with -c:s mov_text to keep plain-text subs, or burn them into the picture (a re-encode) if you need the styling.
Are free online MKV to MP4 converters safe?
You're uploading your full video file to a third-party server, so "safe" depends entirely on an operator you know nothing about. Beyond privacy, they're slow — uploading gigabytes takes longer than the entire local conversion. FFmpeg or VLC on your own machine does the identical job free with nothing leaving your computer.
Change the box, not the cake: remux locally in seconds, re-encode only when something actually doesn't fit.
— Dolce
Comments
Comments powered by Giscus. Sign in with GitHub to comment.