Free FLV test files and sample generator
Legacy Adobe Flash video container, still found in older media archives.
What is a .flv file?
FLV: Flash Video. FLV was Flash's video format, and it outlived Flash by a wide margin: it is still the container RTMP carries, which is what most live-streaming ingest endpoints speak. Structurally it is unlike an MP4. There is no sample table and no index, just a nine-byte header followed by a flat stream of tags, each carrying its own type, size and timestamp, with the previous tag's size repeated after every one so a reader can walk the file backward. That design is why a truncated FLV still plays up to the cut, which makes it a useful subject for incomplete-file tests.
Why generate a test FLV file?
- Test a streaming ingest, transcoder or media server that accepts RTMP-style input.
- Exercise tag parsing, and behavior on a file truncated mid-stream.
- Check handling of a legacy container that browsers cannot play.
What you can put inside a .flv file
You get 3 content options for FLV, so the file holds something meaningful rather than random padding: Color bars, Timer / counter, Logo motion. For FLV these are alternatives, so choose the one that matches what you need to test.
How a .flv file is identified
Every .flv file begins with 46 4C 56 01, "FLV" and a version byte. That is what a validator inspecting content rather than the file name looks for.
How the size lands on the exact byte
A trailing script tag carries a padding string. FLV is a stream of tags, so an extra one is legal.
Negative testing with broken FLV files
- Invalid. Identifiable, but wrong inside, so it fails during parsing.
- Corrupted. The leading bytes are destroyed, so the
46 4C 56 01identifying a .flv is gone. Same length as the valid file. - Incomplete. Truncated part-way, so it is genuinely shorter.
- Empty. Chosen under Content rather than File Condition: valid structure, no data.
Which failure to reach for, and what to assert for each, is covered in how to make a corrupted file for testing. For upload limits and type checks see testing file upload validation.
Sample FLV content
[Binary video], 480p, Sorenson/H.264.
This shows the shape of the file. Your download is generated fresh at the size you choose, so the values will differ.
How to open and verify the file
Browsers cannot play FLV, that support left with the Flash plugin, so use VLC, or inspect it with `ffprobe file.flv`. Files here carry real H.264 video and AAC audio encoded by your own browser, with proper configuration records, interleaved timestamps and an onMetaData header, so a transcoder reads them as genuine streams.
Media type video/x-flv · extension .flv · category Video
Generate a .flv file → · questions about sizes, privacy or cost are answered on the site FAQ.
Frequently asked questions about FLV files
What identifies a .flv file?
A .flv file begins with the bytes 46 4C 56 01, "FLV" and a version byte. Those bytes are what a content-sniffing validator looks for, and what the Corrupted condition destroys.
How can a .flv file be an exact number of bytes?
A trailing script tag carries a padding string. FLV is a stream of tags, so an extra one is legal.
What can go inside the FLV file?
There are 3 content options for .flv: Color bars, Timer / counter, Logo motion. For FLV these are alternatives, so pick the one matching what you need to test.
Can I download several broken FLV files at once?
Yes, select more than one File Condition and you get one ZIP containing a .flv per condition, each named after its condition.
Can the FLV file use UTF-16 or a byte-order mark?
No, and deliberately. A .flv file is a container rather than plain text, so rewriting its bytes as UTF-16 would not produce a UTF-16 document. It would produce a broken file. Use a text format such as CSV, JSON or XML for encoding tests.
How do I open or verify the FLV file?
Browsers cannot play FLV, that support left with the Flash plugin, so use VLC, or inspect it with ffprobe file.flv. Files here carry real H.264 video and AAC audio encoded by your own browser, with proper configuration records, interleaved timestamps and an onMetaData header, so a transcoder reads them as genuine streams.