Convert FLV to Y4M — Free Online Tool
Convert FLV files to Y4M (YUV4MPEG2), decoding the H.264 or Sorenson Spark video stream inside the Flash container into fully uncompressed raw frames. The resulting Y4M file is ideal for lossless processing pipelines, frame-accurate editing, or piping into tools like x264, VapourSynth, or AviSynth without any intermediate quality loss.
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 is a lossy container format typically carrying H.264 (libx264) or the older FLV/Sorenson Spark video codec alongside AAC or MP3 audio. During this conversion, FFmpeg fully decodes every compressed video frame from the FLV container and writes each one out as a raw YUV pixel frame in the Y4M format. This is not a remux — the compressed video data is entirely decompressed. Y4M stores no audio, so the audio track is discarded. The output file is uncompressed rawvideo, meaning every frame occupies its full uncompressed size in memory on disk, which results in dramatically larger files but guarantees that no additional compression artifacts are introduced beyond those already present in the source FLV.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg command-line tool. In the browser-based version of this tool, the same logic runs via FFmpeg.wasm compiled to WebAssembly, executing entirely in your browser with no server upload. |
-i input.flv
|
Specifies the input Flash Video file. FFmpeg reads and demuxes the FLV container, separating the compressed video stream (typically H.264 or Sorenson Spark) and the audio stream (typically AAC or MP3) for processing. |
-c:v rawvideo
|
Sets the video codec for the output to rawvideo, which means FFmpeg fully decodes every compressed frame from the FLV and writes uncompressed YUV pixel data. This is required by the Y4M format, which stores no compressed data — every frame is a complete, flat array of luma and chroma values. |
output.y4m
|
Specifies the output filename with the .y4m extension. FFmpeg infers the YUV4MPEG2 muxer from this extension, automatically writing the Y4M ASCII header (containing frame rate, dimensions, chroma subsampling, and aspect ratio) followed by the raw frame data decoded from the FLV source. |
Common Use Cases
- Feeding decoded FLV video frames into a command-line encoding pipeline (e.g., piping Y4M output into x265 or AV1 encoders) to re-encode legacy Flash video with modern codecs at maximum quality
- Performing frame-accurate quality analysis on FLV-sourced video by extracting individual uncompressed frames for PSNR, SSIM, or VMAF metric calculations
- Using archived Flash video content as a lossless source in a VapourSynth or AviSynth filtering chain before re-encoding for distribution
- Comparing the original compressed FLV frames side-by-side against processed versions by decoding to Y4M first, eliminating decoder variance as a variable
- Recovering usable raw video data from FLV files downloaded from legacy video platforms where the original uncompressed source is no longer available
- Preparing FLV footage for frame-by-frame visual effects compositing in tools that accept Y4M or raw YUV input
Frequently Asked Questions
No — converting to Y4M does not recover quality lost during the original FLV encoding. FLV uses lossy codecs like H.264 or Sorenson Spark, and those compression artifacts are permanently baked into the pixel data. What Y4M gives you is a lossless container for those already-decoded frames, ensuring no additional quality degradation is introduced in subsequent processing steps. Think of it as making a perfect photocopy of an already-compressed image rather than restoring the original.
FLV stores video using lossy compression (typically H.264) that can achieve compression ratios of 100:1 or more. Y4M stores every video frame as raw, uncompressed YUV pixel data with no compression whatsoever. A 10-minute FLV at 1080p that might be 200MB can expand to 50GB or more as a Y4M file. This is expected and intentional — Y4M is designed as an intermediate lossless format, not for long-term storage.
The audio is discarded entirely. Y4M (YUV4MPEG2) is a video-only format with no provision for storing audio streams. If you need to preserve the audio — whether it was AAC or MP3 inside the FLV — you should extract it separately using a command like ffmpeg -i input.flv -vn -c:a copy audio.aac before running this conversion.
Yes. Y4M encodes frame rate and pixel aspect ratio metadata in its file header, and FFmpeg reads these values from the FLV container and writes them accurately to the Y4M output. Tools that read Y4M correctly — such as x264, FFmpeg itself, and most VapourSynth/AviSynth plugins — will honor these values. However, if the source FLV has an irregular or variable frame rate, some Y4M consumers may have difficulty since Y4M assumes a constant frame rate.
Yes, and this is one of the primary use cases for Y4M. Replace the output filename with a pipe and redirect to your target encoder. For example: ffmpeg -i input.flv -c:v rawvideo -f yuv4mpegpipe - | x265 --y4m - -o output.hevc. The -f yuv4mpegpipe flag explicitly sets the muxer format for pipe output, and the trailing dash tells FFmpeg to write to stdout. This avoids writing the enormous uncompressed file to disk entirely.
The single-file command shown here can be wrapped in a shell loop for batch processing. On Linux or macOS: for f in *.flv; do ffmpeg -i "$f" -c:v rawvideo "${f%.flv}.y4m"; done. On Windows (PowerShell): Get-ChildItem *.flv | ForEach-Object { ffmpeg -i $_.FullName -c:v rawvideo ($_.BaseName + '.y4m') }. Be extremely cautious about disk space — each Y4M file will be orders of magnitude larger than its source FLV.
Technical Notes
Y4M (YUV4MPEG2) is a deliberately minimal format: a short ASCII header followed by raw YUV frame data with per-frame markers. FFmpeg will decode the FLV video stream — whether it is H.264 (the most common modern FLV codec) or the older Sorenson Spark (FLV1) codec — into YUV420p frames, which is the standard chroma subsampling format for both of those codecs. The Y4M output will therefore use 4:2:0 chroma subsampling, matching what was stored in the FLV. No color space upsampling to 4:4:4 is performed. Metadata such as video title tags or creation timestamps stored in the FLV container are not carried over, as Y4M has no metadata fields beyond frame rate, image dimensions, aspect ratio, and interlacing flags. If the FLV source is interlaced (uncommon but possible with broadcast-captured content), the interlacing flag will be preserved in the Y4M header. Because Y4M has no compression, there is no quality parameter to tune — the -c:v rawvideo codec setting is the only meaningful video option for this output format.