Convert MP4 to FLV — Free Online Tool
Convert MP4 files to FLV (Flash Video) format directly in your browser, re-encoding video with the H.264 (libx264) codec and audio with AAC — the standard codec pairing used by legacy Flash-based video players and older streaming infrastructure. Useful for maintaining compatibility with systems that predate modern HTML5 video support.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your MP4 file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
Unlike a simple container swap, converting MP4 to FLV requires active re-encoding of both the video and audio streams. Even though both formats can carry H.264 video and AAC audio, the FLV container has its own internal structure and metadata format that differs from the MPEG-4 Part 14 container. FFmpeg reads the MP4 file, decodes each frame, and re-encodes the video using libx264 at CRF 23 (a perceptually good default quality level) and the audio using AAC at 128k bitrate. Importantly, FLV does not support subtitle tracks, chapter markers, or multiple audio tracks — all of which MP4 can carry — so any such metadata embedded in your source file will be dropped during this conversion.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary — the open-source multimedia processing engine that handles all decoding, encoding, and container muxing for this conversion. In the browser tool, this runs as a WebAssembly (FFmpeg.wasm) instance with no server involvement. |
-i input.mp4
|
Specifies the input file — an MP4 container which may contain H.264, H.265, or VP9 video alongside AAC, MP3, or Opus audio, plus optional subtitles, chapters, and multiple audio tracks that the FLV container cannot preserve. |
-c:v libx264
|
Encodes the output video stream using the libx264 H.264 encoder, which is one of only two video codecs the FLV container supports in modern practice. This ensures the output FLV is compatible with Flash Player and RTMP-based infrastructure. |
-c:a aac
|
Encodes the output audio stream using the AAC codec, one of the two audio codecs FLV supports (the other being MP3). AAC at this bitrate offers better perceptual quality than MP3 at the same file size, making it the preferred choice for FLV audio. |
-crf 23
|
Sets the Constant Rate Factor for the libx264 video encode to 23, which is H.264's default quality level — a balanced tradeoff between visual fidelity and file size. Lower values (e.g., 18) produce higher-quality, larger FLV files; higher values (e.g., 28) produce smaller but visibly degraded output. |
-b:a 128k
|
Sets the AAC audio bitrate to 128 kilobits per second, a standard quality level for stereo audio in FLV streams. This is sufficient for speech and general-purpose video; raise it to 192k or 256k for music-heavy content where audio fidelity is critical. |
output.flv
|
Specifies the output filename with the .flv extension, which signals FFmpeg to use the Flash Video container format as the muxer. The FLV muxer handles its own metadata and header structure, which differs from the MP4/ISOBMFF container used by the input file. |
Common Use Cases
- Uploading videos to older content management systems or LMS platforms (like early versions of Moodle or Blackboard) that were built around Flash-based video players and only accept FLV input
- Feeding video into legacy RTMP streaming servers or Flash Media Server setups that expect FLV-encoded streams rather than MP4 containers
- Archiving or reproducing video content for Flash-era interactive applications, where the original FLV source file is needed to match a historical SWF player's expected format
- Testing or debugging older video pipeline tooling — such as transcode queues or CDN configurations — that were originally written to process FLV files
- Providing video assets to clients or systems running legacy kiosk or digital signage software that was built before HTML5 video became standard
- Generating the exact FFmpeg command to batch-convert a large library of MP4 files to FLV on a local machine for bulk migration of a Flash-era video archive
Frequently Asked Questions
Yes, some quality loss is inevitable because this conversion re-encodes the video rather than simply remuxing it. The default CRF value of 23 with libx264 produces visually good results for most content, but each encode introduces generation loss compared to the source. If your MP4 was already encoded with H.264 at a higher CRF (lower quality), the FLV output may look noticeably softer. To minimize loss, lower the CRF value (e.g., to 18) in the FFmpeg command at the cost of a larger output file.
No — FLV has none of these capabilities. The Flash Video container format was designed for simple single-stream web delivery and has no specification for subtitle tracks, chapter metadata, or alternate audio tracks. If your MP4 contains any of these, they will be silently discarded during conversion. If preserving subtitles or chapters is important, FLV is not the right target format.
Even though both MP4 and FLV can technically carry H.264 video and AAC audio, the internal structure of the FLV container — including how it stores timestamps, metadata headers, and codec private data — is different enough that a raw stream copy (using -c copy) often produces files that are unplayable or cause seek errors in Flash players. Re-encoding with libx264 and AAC ensures the output is a well-formed FLV file that legacy players can reliably open.
To adjust video quality, change the -crf value: lower numbers mean higher quality and larger files (e.g., -crf 18 for near-lossless visuals), while higher numbers produce smaller, lower-quality files (e.g., -crf 28). For audio, change the -b:a value to a higher bitrate like 192k or 256k for better fidelity, or 96k to reduce file size. For example: ffmpeg -i input.mp4 -c:v libx264 -c:a aac -crf 18 -b:a 192k output.flv
Yes, on Linux or macOS you can use a shell loop: for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.mp4}.flv"; done. On Windows Command Prompt, use: for %f in (*.mp4) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.flv". The in-browser tool processes one file at a time, so the FFmpeg command is the practical choice for bulk conversions.
Native FLV playback was dropped from all major browsers when Adobe Flash Player reached end-of-life in December 2020. Modern browsers do not play FLV files natively. Desktop media players like VLC and MPC-HC still support FLV playback. FLV remains relevant primarily for server-side processing, legacy system compatibility, and RTMP-based streaming infrastructure — not for end-user viewing in a browser.
Technical Notes
FLV is a lossy-only container format with a restricted codec set compared to MP4. On the video side, FLV supports H.264 (via the libx264 encoder) and the older Sorenson Spark / On2 VP6 codecs (represented as 'flv' in FFmpeg), but modern usage almost exclusively targets H.264. On the audio side, FLV supports AAC and MP3 (libmp3lame) — notably, it does NOT support Opus or other modern codecs that MP4 can carry. If your source MP4 uses libvpx-vp9 video or libopus audio, FFmpeg will transcode those streams to libx264 and AAC respectively, which is handled automatically by this command. FLV also lacks support for the -movflags +faststart optimization that makes MP4 suitable for progressive web streaming — the FLV format handles its own metadata placement differently. File sizes for FLV output will be roughly comparable to a similarly-encoded MP4 at the same CRF and audio bitrate, since both are using H.264 and AAC; the container overhead difference is negligible. One practical gotcha: very high-resolution source files (4K+) may not play correctly in older Flash-based players even if the FLV is technically valid, as many legacy players had resolution caps around 1080p or lower.