Skip to content
Zumkor
← Back to blog 9 min read

How to convert FLV to MP4 on Mac (old Flash video, offline)

QuickTime won't open FLV files, and Flash is gone. Convert FLV to MP4 on your Mac with ffmpeg or Zumkor: lossless when the video is H.264, whole folders, offline.

Convert your videos with Zumkor on your Mac — free for 7 days, then 5 files a day free or $19.99 once. Needs macOS 14.0 or later on an Apple silicon Mac (Apple M1 or later).

Get Zumkor on the Mac App Store

The folder is from a backup drive, an old laptop or a download from years ago: lecture recordings, music videos saved from a website, a stream someone captured, clips from a webcam app that recorded straight to Flash. Every file ends in .flv. Double-click one and QuickTime Player gives up immediately: “The file isn’t compatible with QuickTime Player.” Photos won’t import it, iMovie won’t see it, and Quick Look shows a generic icon where a thumbnail should be. The fix is a one-time conversion, and this guide shows how to convert FLV to MP4 on a Mac, losslessly when the file allows it, with nothing uploaded.

The good news with FLV is that a lot of these files can be converted without losing any quality, because the video inside is already the codec MP4 uses. The first step is finding out which kind you have.

In this guide9 sections

Why FLV is a dead end on a Mac

FLV is Flash Video, the container Adobe’s Flash Player used to stream video on the web from the mid-2000s. YouTube served its early videos as FLV, and so did most video sites, e-learning tools and webcam services of that era. It’s still alive in one corner: live streaming over RTMP uses FLV packaging, and OBS offers FLV as a recording format.

Apple never supported it. QuickTime, AVFoundation and everything built on them (Photos, iMovie, Final Cut Pro, Safari) work with MP4 and MOV, and simply refuse an FLV. FLV only ever played in the browser through the Flash plugin, and Adobe ended Flash Player at the end of 2020, blocking Flash content from running in January 2021. Perian, the free plugin that taught QuickTime 7 to play FLV, was retired in 2012 and wouldn’t load on a modern Mac anyway.

So the behavior is completely predictable. Unlike AVI, where some files open and some don’t, FLV fails on a Mac every time, and one conversion fixes it every time.

First, find out what’s inside

An FLV file can hold three generations of video codec, and which one decides how the conversion goes:

  • Sorenson Spark (an H.263 variant), the original Flash video codec. Very early files, often small and blocky.
  • On2 VP6, which took over in the mid-2000s and looks noticeably better.
  • H.264, which Flash Player added in late 2007. Many FLVs from the later Flash years, and most stream recordings, use it.

The audio is usually MP3 or AAC (AAC arrived alongside H.264), with the occasional oddity such as Nellymoser or Speex from webcam and voice apps.

If you have ffprobe (it comes with ffmpeg, below), one command tells you:

ffprobe -v error -show_entries stream=codec_name,codec_type -of csv=p=0 input.flv

h264,video and aac,audio is the best case: the video, and possibly the audio, can be copied into an MP4 untouched. flv1,video (ffmpeg’s name for Sorenson Spark) or vp6f,video means the video must be re-encoded to H.264. Neither codec can go in an MP4 that Apple’s players will open.

If you only need to watch them

For a one-time viewing you don’t need to convert anything. Two free players decode every FLV flavor:

  • IINA, the modern open-source Mac player. Drag the file in and it plays.
  • VLC, which has played Flash video since Flash was current.

Convert when watching isn’t the end of it: the clips need to go into Photos or iMovie, onto an iPhone or Apple TV, into a slide deck or an upload, or into an archive that will still open in fifteen years. FLV’s ecosystem is gone, and MP4 with H.264 is the safe place to keep these files.

Method 1: ffmpeg (free, command line)

ffmpeg, installed with Homebrew, handles every FLV flavor:

brew install ffmpeg

If the video is H.264 and the audio is AAC, copy both streams. This takes seconds and loses nothing:

ffmpeg -i input.flv -c copy output.mp4

If the video is H.264 but the audio is MP3 or something else, copy the video and convert only the audio:

ffmpeg -i input.flv -c:v copy -c:a aac -b:a 192k output.mp4

If the video is Sorenson Spark or VP6, re-encode it:

ffmpeg -i input.flv -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p -c:a aac -b:a 160k output.mp4

-crf 20 sets the quality (lower is better, and 18 to 23 is the sensible range), and -pix_fmt yuv420p keeps the output in the color format every Apple player expects.

For a folder of mixed files, this loop checks each one and picks the right route, writing into a separate folder so nothing is overwritten:

mkdir -p mp4
for f in *.flv; do
  v=$(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of csv=p=0 "$f")
  if [ "$v" = "h264" ]; then
    ffmpeg -nostdin -n -loglevel error -i "$f" -c:v copy -c:a aac -b:a 192k "mp4/${f%.flv}.mp4"
  else
    ffmpeg -nostdin -n -loglevel error -i "$f" -c:v libx264 -crf 20 -pix_fmt yuv420p \
      -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:a aac -b:a 160k "mp4/${f%.flv}.mp4"
  fi
done

The scale filter rounds odd frame sizes down to even numbers. Some Flash-era videos are 425 pixels wide or similar, and H.264 refuses odd dimensions with a “not divisible by 2” error. The audio gets converted to AAC in both branches, which keeps the loop simple and costs nothing you’d hear.

ffmpeg is the complete free answer. Its cost is Homebrew, a codec check per file, and libx264 encoding on the CPU. The Mac’s hardware encoder is available as -c:v h264_videotoolbox, but it wants an explicit bitrate instead of a quality level, so you’re back to guessing numbers.

Method 2: Zumkor (drag the folder, pick MP4)

FLV files tend to come by the folder, which is the job Zumkor is built for. It needs macOS 14 or later on an Apple silicon Mac (M1 or later).

  1. Drag the .flv files, or the whole folder, into Zumkor. Right-clicking in Finder and choosing Services → Add to Zumkor works too.
  2. Pick MP4. The “Universal MP4” preset makes H.264 at the source’s own resolution, the most compatible choice for an archive.
  3. Check the rows. Each one shows the exact filename it will produce before you convert.
  4. Click Convert and choose where the MP4s go. The FLV originals stay where they are.

You don’t have to run the codec check yourself. When the video inside is already H.264, “Universal MP4” copies it across without re-encoding. Sorenson Spark and VP6 files are re-encoded to H.264 with your Mac’s hardware encoder, with no bitrate to pick. A queue holds up to 2,000 files, conversions keep running with the window closed, and everything happens on your Mac: nothing is uploaded, and it works with Wi-Fi off.

A few extras matter for this kind of footage:

  • Trim first. A two-hour stream recording where you need ten minutes? Set the range with the QuickTime-style yellow handles, and only the kept part is converted.
  • Fit a size limit. To email an old clip or drop it in a chat, pick a preset under “Fit a size limit” in the video’s menu, such as “Email — Gmail / iCloud (25 MB)” or “WhatsApp (16 MB)”. Zumkor lowers the bitrate until the file lands under the cap, or tells you if the clip can’t fit, in which case trim it and convert again. More in the email compression guide.
  • Keep just the sound. Plenty of FLVs are really audio: a lecture, a music video, an interview. “Just the audio (MP3)” pulls it out directly, the same job as MP4 to MP3.

Pricing: everything is free for 7 days. After that you can keep converting 5 files a day (25 a week) for free. Free videos get a small Zumkor mark, and each row tells you before you convert if a video will carry it. The Full Version removes the mark and unlocks everything as a one-time $19.99 purchase, yours forever, with no subscription and no account, shared through Family Sharing.

For one file and a working Homebrew, ffmpeg is free. Zumkor earns its place when there are dozens of files of mixed vintage and you don’t want to sort them by codec, or when the same drive also turns up Windows Media files and WebM downloads.

Getting FLV to MP4 right

  • Don’t upscale. Flash-era video is often 320×240, 480×360 or 640×360. Converting it at 1080p makes a bigger file of the same soft picture. Keep the source resolution, which is what “Universal MP4” does, and let the player scale it up.
  • Don’t max out quality on a re-encode. Sorenson and VP6 files were compressed hard when they were made, and no setting recovers detail that isn’t there. A sensible quality level keeps everything real.
  • Expect odd frame rates and 4:3. Webcam and early web video often ran at 15 fps or less, and plenty of it is 4:3. Choppy motion and black side bars in the MP4 are faithful to the source, not conversion errors.
  • Transparency doesn’t survive. A few FLVs use VP6 with an alpha channel (vp6a in ffprobe) for website overlays. H.264 MP4 has no transparency, so those come out on a solid background.
  • Check audio sync on one long file. Stream recordings sometimes have timestamp gaps from dropped connections. Play one converted file end to end before you delete any originals.
  • F4V and SWF are different files. F4V, Adobe’s later format, is MP4-based, and ffmpeg -i input.f4v -c copy output.mp4 usually handles it. A .swf is a Flash program, not a plain video file. Neither is on Zumkor’s format list.

The rest of the old-format shelf

FLV rarely turns up alone. The same backup tends to hold .avi files, .wmv exports, .mkv downloads and early .mov clips. All of them hit some version of the same wall on a modern Mac, and Zumkor reads them all and writes MP4, MOV, M4V or MKV in the same pass. It also turns .MTS camcorder clips and DVD .VOB files into MP4, though shrinking, audio, GIFs and subtitles aren’t offered for that older footage. See the full list of formats it reads and writes.

Bottom line

  • Just want to watch: IINA or VLC, free, no conversion.
  • One file, comfortable in Terminal: check the codec with ffprobe, then ffmpeg -i input.flv -c copy output.mp4 for H.264 files, or a libx264 re-encode for Sorenson Spark and VP6.
  • A folder of mixed files, no codec homework: Zumkor. Drag the folder in and pick MP4. H.264 is copied, the rest is re-encoded on your Mac’s hardware, and everything stays offline. Free for 7 days, then 5 files a day free, or a one-time $19.99 for everything.

Flash isn’t coming back, and the players that still open FLV are a courtesy, not a guarantee. Convert these files once, while the drive they’re on still spins, and they become ordinary videos that open anywhere.

FAQ

Why won’t FLV files play on my Mac?

FLV is Adobe’s Flash Video format, and QuickTime, Photos and iMovie have never supported it. These files used to play inside the Flash Player plugin, which Adobe retired at the end of 2020. IINA and VLC play FLV for free, and for anything beyond watching, convert the file to MP4.

Can I convert FLV to MP4 without losing quality?

Often, yes. If the FLV holds H.264 video, which is common in files from the later Flash years, the video can be copied into an MP4 without re-encoding, so nothing is lost. Older FLVs with Sorenson Spark or VP6 video have to be re-encoded to H.264, and at the source resolution the result looks essentially the same as the original.

How do I batch convert FLV files to MP4 on a Mac?

In Terminal, loop ffmpeg over the folder, copying H.264 video and re-encoding the rest. Or drag the folder into Zumkor, pick MP4 and click Convert: the Universal MP4 preset copies H.264 video across and re-encodes everything else with the Mac’s hardware encoder. It runs offline, and the MP4s go to a folder you choose.