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.

Quick answer: Open a terminal and run 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)

1
Browser-Based — Works on Any Linux Distro With Firefox or Chrome
Zero install
  1. Open convertlo.pro/mov-to-mp4.html in Firefox, Chrome, or Chromium on your Linux machine.
  2. Drag and drop one or more MOV files onto the converter, or click Browse to select them.
  3. Conversion runs entirely in your browser using FFmpeg.wasm — the video never leaves your machine. No server upload.
  4. 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)

2
ffmpeg — Zero Quality Loss Remux
Lossless remux All distros

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.

Step 1: Install ffmpeg for your distro
Ubuntu / Debian / Mint
sudo apt update
sudo apt install ffmpeg
Fedora / RHEL / CentOS
sudo dnf install ffmpeg

Enable RPM Fusion free repo first if ffmpeg is missing.

Arch / Manjaro
sudo pacman -S ffmpeg
openSUSE
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)

3
VLC Media Player — Free, Widely Installed
GUI
  1. Install VLC if not already present: sudo apt install vlc (Ubuntu) or your distro's equivalent.
  2. Open VLC and go to Media → Convert / Save… (keyboard shortcut: Ctrl + R).
  3. Click Add… and select your MOV file. Then click Convert / Save.
  4. In the Convert dialog, click the Profile dropdown and choose Video — H.264 + MP3 (MP4).
  5. Click the wrench icon next to the profile to review settings. The defaults are good for most files.
  6. Under Destination, click Browse and set the output filename with a .mp4 extension.
  7. 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)

4
HandBrake — Fine-Grained Encoding Settings
Free download
  1. Install HandBrake:
    # Ubuntu / Debian (Flatpak)
    flatpak install flathub fr.handbrake.ghb
    
    # Fedora
    sudo dnf install handbrake-gui
    
    # Arch
    sudo pacman -S handbrake
  2. Open HandBrake and click Open Source. Select your MOV file.
  3. Under the Presets panel on the right, choose Fast 1080p30 (or match your source resolution).
  4. Ensure the Format (Summary tab) is set to MP4.
  5. Under the Video tab, set Quality (RF) to 18–22. Lower values = better quality, larger file. 20 is a reliable default.
  6. 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-ugly and gst-libav from 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

The fastest method on Linux is ffmpeg: run 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.
Run 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.
Yes. Open VLC, go to Media → Convert / Save (Ctrl+R), click Add to upload your MOV file, click Convert / Save, choose the MP4 profile (Video - H.264 + MP3 (MP4)), set a destination file with a .mp4 extension, then click Start. VLC re-encodes the video — quality is good but not lossless. For lossless conversion use ffmpeg -i input.mov -c copy output.mp4 instead.
Use a bash loop: 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"' _ {} \;
Not with a remux. The command 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.
Most Linux distros ship without H.264/AAC codecs due to patent licensing. Install the codec pack: Ubuntu → 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.
✍️
Convertlo Editorial Team
We write practical guides on file conversion, video formats, and Linux workflows. All ffmpeg commands are tested on Ubuntu 24.04 and Fedora 40 before publishing.
About Convertlo →