How to convert FLV to MP4 on a Mac
No part of macOS plays an FLV file, so it has to be converted. Manatee turns an FLV into a standard MP4 in one drop: choose Convert, drop the file, pick MP4, and it plays in QuickTime and on any phone. If the FLV happens to contain H.264 video (common for files saved after about 2008), it can even be repackaged into MP4 with no quality loss at all; older FLVs with Sorenson or VP6 video are re-encoded, which is still quick and looks the same as the original.
What an FLV file is
FLV is Flash Video, the container used by Flash Player for streaming video in the browser. For most of the 2000s nearly every video on the web was an FLV behind a Flash player, which is why so many of them are still sitting in download folders and on old external drives. Its sibling F4V is the same idea in an MP4-based container.
Three generations of video codec were used inside FLV:
- Sorenson Spark (a variant of H.263), the original, low-quality codec from the earliest years.
- VP6, a better codec used from roughly 2005 onward, which made higher-quality Flash video possible.
- H.264, adopted when Flash Player gained support for it, and used by most sites in the last years of Flash.
Audio was usually MP3, sometimes AAC with H.264, sometimes the Nellymoser speech codec in recorded webcam clips.
Flash is gone, and none of the older codecs were ever part of macOS. QuickTime Player says the file is not compatible, and Quick Look shows nothing. The container and codecs are the obstacle; the video inside is typically intact. Container vs codec explains why that distinction matters.
Check what is inside first
- Select the .flv in Finder and press Command-I.
- Under More Info, look for Codecs. Finder often shows nothing for FLV because macOS has no parser for it, so this may be blank.
- If it is blank, open the file in any third-party player that shows media information, or run
ffmpeg -i video.flvin Terminal if you have ffmpeg; the stream summary names the codecs. If you have neither, skip this; the conversion works either way.
The codec matters for one reason. If the FLV contains H.264 and AAC, the video and audio can be copied into an MP4 container byte for byte, with no re-encoding and no quality change, in a few seconds. If it contains Sorenson, VP6, MP3, or Nellymoser, the streams have to be decoded and re-encoded to H.264 and AAC, because MP4 cannot carry those codecs.
Convert with Manatee
Manatee accepts .flv and .f4v as input and converts them to MP4 or MOV with the ffmpeg engine bundled inside the app, which decodes every codec ever used in Flash video. It runs on macOS 12 Monterey or later, on Apple silicon and Intel, entirely offline.
- Open Manatee and choose Convert.
- Drop the FLV files into the window, or drag a folder of them. Each becomes a job with its own progress bar.
- Choose MP4 as the target.
- Click Convert. The MP4 is written next to the FLV, which is never modified.
The output is a standard MP4 that opens in QuickTime Player, imports into Photos, and uploads anywhere that takes MP4. For the lossless stream-copy route on H.264 sources, where the video is repackaged byte for byte, use the ffmpeg command below; Manatee’s Convert mode is the route that requires nothing to be installed.
Manatee converts; it does not edit. It will not trim the Flash site’s intro, remove a watermark, upscale the picture, or join a series of clips into one file. It also cannot recover a video from a Flash SWF file (an application, not a video) or from a streaming cache that was never saved as a complete file. If the FLV was itself cut off during a download years ago, Convert may produce an MP4 that ends early, and the Repair mode can be tried on the original; the result is reported as Fixed, Partial (for example, the first eleven minutes), or Not fixable.
If you have ffmpeg installed
ffmpeg is not included with macOS, but if it is installed:
Lossless repackaging for H.264/AAC sources:
ffmpeg -i video.flv -c copy video.mp4
If that fails with an error about an unsupported codec in MP4, re-encode:
ffmpeg -i video.flv -c:v libx264 -crf 20 -c:a aac -b:a 160k video.mp4
For a folder of files, try copy first and fall back to re-encoding:
for f in *.flv; do ffmpeg -i "$f" -c copy "${f%.flv}.mp4" || ffmpeg -i "$f" -c:v libx264 -crf 20 -c:a aac "${f%.flv}.mp4"; done
Quality and size
H.264 sources: no change. The MP4 is the same video in a different wrapper, and the file size is within a percent of the FLV.
VP6 and Sorenson sources: re-encoded. VP6 video at the resolutions of the time (320x240 to 640x480) converts well; H.264 at a good quality setting preserves it without visible loss and usually at a similar size. Sorenson Spark video is soft and blocky to begin with, and the MP4 faithfully preserves that. No converter adds detail that the original did not have.
Audio: MP3 tracks are re-encoded to AAC at a comparable bitrate. Nellymoser webcam audio converts, but it was narrowband to start with and will sound like a phone call afterward, exactly as it did in the FLV.
Frame rate and resolution: keep both as they are. Flash video was often 15 or 24 fps at modest sizes; forcing 60 fps or 1080p only makes the file larger.
Metadata: FLVs carry a duration and sometimes a title in their header. Expect the duration to be preserved and the title to be dropped. If the MP4 shows a wrong length, see video file shows the wrong length.
Second conversions: if you later need a version under a messaging limit, shrink the MP4 once with a target size, rather than re-encoding repeatedly. See why compressing a video twice makes it look worse.
Questions
Can I rename .flv to .mp4?
No. FLV is a different container structure, even when the codec inside is H.264. The renamed file will not play. Repackaging takes seconds and does it properly.
The FLV plays in a browser-based player but not after conversion.
Some downloaded “FLV” files are actually HTML pages or incomplete stream fragments saved with the wrong extension. Open the file in TextEdit; if you see readable HTML, it was never a video. If it is binary but very short, it is a fragment.
Is F4V the same thing?
F4V uses an MP4-style container with H.264 inside, so it almost always converts losslessly. Manatee accepts .f4v directly.
What about WebM, the format that replaced Flash video on the web?
WebM is a different case, with VP8 or VP9 video, and how to convert WebM to MP4 on a Mac covers it.