Convert FLV to MKV — Free Online Tool
Convert FLV (Flash Video) files to MKV (Matroska) format using FFmpeg directly in your browser. This conversion re-encodes the video stream with H.264 (libx264) and the audio with AAC, while gaining access to MKV's advanced container features — subtitles, chapters, and multiple audio tracks — that FLV simply cannot support.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your FLV 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
FLV files typically contain H.264 video and AAC or MP3 audio, but the container itself is a legacy Adobe Flash format with hard limits on metadata and stream types. During this conversion, the video stream is re-encoded using libx264 with a CRF of 23 (a visually transparent quality level for most content), and the audio is encoded to AAC at 128k bitrate. Because FLV does not store chapters, subtitle tracks, or multiple audio streams, none of those advanced features can be carried over from the source — however, the resulting MKV file is now in a container that fully supports all of them for future use. The re-encoding step means some generation loss occurs, so preserving an original FLV at its native quality is best done by sourcing from the original capture rather than repeated conversions.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary, the open-source multimedia processing engine that performs the FLV-to-MKV conversion. When run via this browser tool, FFmpeg executes as a WebAssembly (wasm) module entirely client-side — no data leaves your machine. |
-i input.flv
|
Specifies the input file, an FLV (Flash Video) container. FFmpeg will detect the contained streams — typically H.264 or a legacy Flash codec for video, and AAC or MP3 for audio — and use this information to plan the encoding pipeline. |
-c:v libx264
|
Sets the video encoder to libx264, the industry-standard H.264 software encoder. This ensures the output MKV contains a broadly compatible H.264 video stream, regardless of whether the source FLV used H.264, VP6, or Sorenson Spark as its original video codec. |
-c:a aac
|
Sets the audio encoder to AAC using FFmpeg's built-in AAC encoder. FLV files may carry MP3 or AAC audio; this flag normalizes the output to AAC, which is natively supported in MKV and plays back on virtually all modern devices and platforms. |
-crf 23
|
Sets the Constant Rate Factor for libx264 to 23, which is the encoder's default and produces a visually high-quality H.264 stream at a reasonable file size. Lower values (e.g., 18) increase quality and file size; higher values (e.g., 28) reduce both. This controls video quality independently of resolution or frame rate. |
-b:a 128k
|
Sets the AAC audio bitrate to 128 kilobits per second. For stereo audio — common in FLV streaming content — 128k AAC delivers clear, broadcast-quality sound. Raise this to 192k or 256k if the source FLV had high-fidelity audio, such as music or high-quality voiceover. |
output.mkv
|
Specifies the output filename and, critically, the output container format. The '.mkv' extension tells FFmpeg to wrap the encoded H.264 video and AAC audio streams inside a Matroska container, unlocking MKV features like subtitle track support, chapter markers, and multiple audio streams for future use. |
Common Use Cases
- Archiving old Flash-era video downloads (e.g., YouTube videos saved years ago in FLV format) into a modern, future-proof container that media players like VLC and Plex can reliably handle without Flash dependencies.
- Preparing FLV recordings from legacy screen-capture or streaming software for editing in video editors such as DaVinci Resolve or Kdenlive, which have better native MKV support than FLV.
- Converting FLV files recorded from old live streams or webinars into MKV so they can be organized with chapter markers added in post-production.
- Migrating a library of FLV files from a decommissioned Flash-based media server into a standardized MKV archive that supports embedded metadata and subtitles for accessibility compliance.
- Re-packaging FLV game recordings or tutorial videos into MKV to take advantage of MKV's support for multiple audio tracks, such as adding a separate commentary track alongside the original game audio.
- Converting FLV files for playback on modern smart TVs and media players (e.g., Kodi, Jellyfin) that have dropped or never supported the Flash Video container but universally support MKV.
Frequently Asked Questions
Yes, there is technically some generation loss because the video is re-encoded rather than simply remuxed. However, with the default CRF 23 setting used by this tool, the quality difference is negligible for most video content — H.264 at CRF 23 is considered visually near-lossless for typical frame rates and resolutions. The main quality risk is if your FLV source already used a high CRF or low bitrate; re-encoding a heavily compressed source will compound artifacts. If quality preservation is critical, lower the CRF value (e.g., CRF 18) before converting.
The FLV container format simply has no standardized way to store subtitle tracks, chapter markers, or multiple audio streams — these features were never part of the Flash Video specification. Because the source FLV cannot carry that data in, there is nothing to transfer to the MKV output. The advantage is that your new MKV file is a container fully capable of holding these features, so you can add subtitles or chapters afterward using tools like MKVToolNix or FFmpeg without needing to re-encode the video again.
In many cases, yes — if the FLV contains an H.264 video stream (which is very common), you could use '-c:v copy' to remux the video without re-encoding, avoiding any quality loss entirely. However, this tool re-encodes by default to ensure broad compatibility and consistent output quality across all FLV variants, since some FLV files use the older Sorenson Spark or On2 VP6 codecs which are not natively compatible with standard MKV players. If you know your FLV contains H.264 and want a lossless remux, use the FFmpeg command displayed on this page and replace '-c:v libx264 -crf 23' with '-c:v copy'.
To change video quality, modify the '-crf' value: lower numbers produce higher quality and larger files (CRF 18 is near-lossless for most content), while higher numbers produce smaller files with more visible compression (CRF 28–35 for web-optimized low-bitrate output). To change audio quality, modify the '-b:a' value — replacing '128k' with '192k' or '320k' increases fidelity, while '64k' or '96k' reduces file size at the cost of audio detail. For archival FLV conversions, a common choice is '-crf 18 -b:a 192k'.
You can batch process all FLV files in a directory using a shell loop. On Linux or macOS, run: 'for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.flv}.mkv"; done'. On Windows Command Prompt, use: 'for %f in (*.flv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.mkv"'. This processes each FLV file sequentially and outputs a matching MKV file with the same base filename.
File size depends on the codec and quality settings used in each file, not just the container format itself. If your original FLV used a low-quality, high-compression encode (common with older streaming FLVs), re-encoding at CRF 23 may actually produce a larger MKV because the encoder is targeting a higher quality floor. Conversely, if the source FLV was high-bitrate, CRF 23 encoding may produce a smaller MKV. The MKV container overhead itself is negligible. To target a specific file size, you can use two-pass encoding with a target bitrate instead of the CRF method.
Technical Notes
FLV was designed specifically for Adobe Flash Player delivery over HTTP, and its codec support is frozen at legacy options: Sorenson Spark (FLV1), On2 VP6, and H.264 for video; MP3 and AAC for audio. Modern FFmpeg can decode all of these, but the FLV container itself imposes strict structural limitations — no support for subtitle streams, chapter metadata, variable frame rate signaling, or more than one audio track. The MKV (Matroska) container, by contrast, is an open standard maintained by the Matroska project with virtually no codec or stream restrictions. The FFmpeg command used here targets libx264 with CRF 23, which is the codec default and represents a well-balanced quality-to-size ratio for H.264. Audio is transcoded to AAC at 128k using FFmpeg's native AAC encoder. One metadata note: FLV files sometimes embed duration, creation date, and stream metadata in the FLV header (AMF metadata packets); FFmpeg will read these and write compatible tags into the MKV's Matroska metadata block, though some FLV-specific AMF fields have no direct MKV equivalent and will be silently dropped. For FLV files sourced from Flash Media Server or RTMP streams, timestamp discontinuities in the source file may cause slight audio/video sync issues in the output — using '-fflags +genpts' in the input flags can help correct this.