How to Convert MOV to MP4 on Linux — 4 Free Methods
MOV files from iPhones, GoPros, and macOS screen recordings don't always play well on Linux. VLC handles them, but most other players on Ubuntu or Fedora refuse them outright. Converting to MP4 fixes the compatibility problem permanently — and on Linux, you have better tools for this job than any other OS.
This guide covers four methods: a zero-install browser tool, ffmpeg (with distro-specific install commands), VLC's built-in converter, and HandBrake for quality control.
ffmpeg -i input.mov -c copy output.mp4. This remuxes the video in seconds with zero quality loss. Install ffmpeg first: sudo apt install ffmpeg (Ubuntu/Debian), sudo dnf install ffmpeg (Fedora), or sudo pacman -S ffmpeg (Arch). No GUI, no upload, no re-encoding. For a fully no-install option, use Convertlo's browser converter — it runs in Firefox or Chrome and processes the file entirely on your machine.
Method 1 — Convertlo Browser Converter (No Install, Any Distro)
- Open convertlo.pro/mov-to-mp4.html in Firefox, Chrome, or Chromium on your Linux machine.
- Drag and drop one or more MOV files onto the converter, or click Browse to select them.
- Conversion runs entirely in your browser using FFmpeg.wasm — the video never leaves your machine. No server upload.
- Click Download to save each MP4 to your Downloads folder.
Works on Ubuntu, Fedora, Arch, Debian, Mint, Pop!_OS, and any other distro with a modern browser. No codec installation required, no flatpak, no snap. Good for large files and batch conversion.
Method 2 — ffmpeg Command Line (Best Quality, Fastest)
ffmpeg is the gold standard for video conversion on Linux. The -c copy flag skips re-encoding entirely — it just repackages the existing video and audio streams into an MP4 container. The output is bit-for-bit identical to the input. Conversion is nearly instantaneous even for large files.
sudo apt update
sudo apt install ffmpeg
sudo dnf install ffmpeg
Enable RPM Fusion free repo first if ffmpeg is missing.
sudo pacman -S ffmpeg
sudo zypper install ffmpeg
Step 2: Convert a single file (zero quality loss)
ffmpeg -i input.mov -c copy output.mp4
Replace input.mov with your actual filename. The output MP4 is created in the same directory.
Step 3: Batch convert an entire folder
for f in *.mov; do ffmpeg -i "$f" -c copy "${f%.mov}.mp4"; done
Run this from the directory containing your MOV files. Each file is remuxed to MP4 in sequence. Add -loglevel quiet to suppress verbose output.
Recursive batch convert (subdirectories too)
find . -name "*.mov" -exec sh -c \
'ffmpeg -i "$1" -c copy "${1%.mov}.mp4"' _ {} \;
When to re-encode instead of remux: If the MOV uses a codec that isn't MP4-compatible (rare, but ProRes or older DV streams can cause issues), replace -c copy with -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k. This re-encodes to H.264, which is universally compatible.
Method 3 — VLC (GUI Option, Bundled Codecs)
- Install VLC if not already present:
sudo apt install vlc(Ubuntu) or your distro's equivalent. - Open VLC and go to Media → Convert / Save… (keyboard shortcut: Ctrl + R).
- Click Add… and select your MOV file. Then click Convert / Save.
- In the Convert dialog, click the Profile dropdown and choose Video — H.264 + MP3 (MP4).
- Click the wrench icon next to the profile to review settings. The defaults are good for most files.
- Under Destination, click Browse and set the output filename with a .mp4 extension.
- Click Start. VLC's status bar shows conversion progress.
VLC re-encodes the video (unlike ffmpeg's -c copy), so conversion takes longer. Quality at default settings is excellent for most uses. VLC bundles its own codecs so it works even if your system is missing H.264 libraries.
Method 4 — HandBrake (Quality Control, Compression)
- Install HandBrake:
# Ubuntu / Debian (Flatpak) flatpak install flathub fr.handbrake.ghb # Fedora sudo dnf install handbrake-gui # Arch sudo pacman -S handbrake - Open HandBrake and click Open Source. Select your MOV file.
- Under the Presets panel on the right, choose Fast 1080p30 (or match your source resolution).
- Ensure the Format (Summary tab) is set to MP4.
- Under the Video tab, set Quality (RF) to 18–22. Lower values = better quality, larger file. 20 is a reliable default.
- Click Start Encode. HandBrake shows a live encoding progress bar.
HandBrake is the right choice when you want to compress a large MOV significantly, target a specific file size, or trim/crop the video before converting. For simple format conversion without size reduction, ffmpeg's -c copy is faster and preserves more quality.
Method Comparison
Which method is right for your situation:
| Method | Install required | Quality | Speed | Batch | Best for |
|---|---|---|---|---|---|
| Convertlo browser | ✓ None | High | Fast | ✓ Yes | No-install, any distro |
| ffmpeg -c copy | ffmpeg (1 command) | ✓ Lossless | Instant | ✓ Loop | Zero quality loss, scripting |
| ffmpeg re-encode | ffmpeg (1 command) | Excellent | Slower | ✓ Loop | Incompatible codecs, compression |
| VLC Convert | VLC (likely installed) | Good | Moderate | ✗ One file | GUI, no terminal comfort |
| HandBrake | HandBrake (flatpak) | Configurable | Slow | ✓ Queue | Compression, quality control |
Convert MOV to MP4 free — no install, no upload
Drop your MOV files in the browser. FFmpeg.wasm processes them locally in Firefox or Chrome — nothing is sent to a server. Batch-convert multiple files at once.
Why MOV Files Don't Play on Linux by Default
Most Linux distributions ship without H.264 and AAC codec libraries due to patent licensing restrictions that vary by country. MOV files from iPhones and modern Apple devices are almost always encoded in H.264 (or HEVC) with AAC audio — so the file format itself isn't the issue, it's the missing codecs.
You can solve the playback problem by installing the restricted codec pack for your distro:
- Ubuntu / Linux Mint:
sudo apt install ubuntu-restricted-extras - Kubuntu / Xubuntu:
sudo apt install kubuntu-restricted-extras - Fedora: Enable RPM Fusion and run
sudo dnf install @multimedia - Arch: Install
gst-plugins-uglyandgst-libavfrom the AUR or community repo
Installing these codecs is the cleanest long-term fix if you regularly receive MOV files. But if you only need a one-time conversion — or if you're sending the file somewhere that doesn't support MOV — converting to MP4 with ffmpeg is the right approach.
Troubleshooting Common ffmpeg Errors
Error: "moov atom not found"
The MOV file is either corrupted or was recorded to a device that ran out of storage mid-recording (the moov atom is written at the end of the file). Try opening the file in VLC first to verify it plays. If it does, use -movflags faststart when re-encoding: ffmpeg -i input.mov -c:v libx264 -movflags faststart output.mp4.
Audio and video out of sync after conversion
This is common with variable frame rate (VFR) MOV files from iPhones. Add -vsync vfr to the command:
ffmpeg -i input.mov -c copy -vsync vfr output.mp4
If the sync issue persists, re-encode with -r 30 to force a constant 30fps:
ffmpeg -i input.mov -c:v libx264 -r 30 -c:a aac output.mp4
ffmpeg says "codec not currently supported in container"
The MOV file uses a codec that can't be directly placed in an MP4 container — most commonly ProRes (Apple professional video) or older DV streams. Re-encode to H.264 instead of using -c copy:
ffmpeg -i input.mov -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k output.mp4
CRF 18 gives near-lossless quality at a reasonable file size. Lower the CRF value for higher quality, raise it for smaller files.
Permission denied when running ffmpeg
You may not have execute permission on the output location. Switch to your home directory first: cd ~, then run the ffmpeg command. Or specify the full output path: ffmpeg -i input.mov -c copy ~/output.mp4.
Frequently Asked Questions
ffmpeg -i input.mov -c copy output.mp4 in a terminal. This remuxes the video without re-encoding — zero quality loss, takes seconds. Install ffmpeg with sudo apt install ffmpeg (Ubuntu/Debian), sudo dnf install ffmpeg (Fedora), or sudo pacman -S ffmpeg (Arch). No GUI needed. For a no-install option, use Convertlo's browser converter at convertlo.pro/mov-to-mp4.html — it runs entirely in Firefox or Chrome on any Linux distro.sudo apt update && sudo apt install ffmpeg in a terminal. On Ubuntu 20.04+ ffmpeg is in the default repositories — no PPA needed. Verify with ffmpeg -version. If you're on an older Ubuntu and get an outdated version, add the savoury1 PPA: sudo add-apt-repository ppa:savoury1/ffmpeg4 && sudo apt update && sudo apt install ffmpeg.ffmpeg -i input.mov -c copy output.mp4 instead.for f in *.mov; do ffmpeg -i "$f" -c copy "${f%.mov}.mp4"; done. This remuxes every MOV in the current directory to MP4 without re-encoding. For recursive conversion across subdirectories: find . -name "*.mov" -exec sh -c 'ffmpeg -i "$1" -c copy "${1%.mov}.mp4"' _ {} \;ffmpeg -i input.mov -c copy output.mp4 repackages the video stream into an MP4 container without touching a single frame — quality is bit-for-bit identical. VLC and HandBrake re-encode by default, which can cause a very slight quality loss, but at their default settings the difference is not visible.sudo apt install ubuntu-restricted-extras; Fedora → enable RPM Fusion then sudo dnf install @multimedia. Alternatively, install VLC which bundles its own codecs. Converting MOV to MP4 with ffmpeg also makes the file play in any player once codecs are installed.