What Is an FLV File? Flash Video, and Why Your File Is Still Fine
FLV is a wrapper, in Adobe's Flash Video format. Jump to your question below, or read it through in order.
FLV is a wrapper, in Adobe's Flash Video format. Jump to your question below, or read it through in order.
An FLV file is a video wrapped in Adobe's Flash Video container. Macromedia built it in 2003 to deliver video over the internet, and Adobe took it over in 2005.
Flash is gone. Your file is not. The wrapper was Flash; the video inside usually is not, and one command turns it into an MP4 in seconds without touching a single frame.
FLV stands for Flash Video, and the Flash Video format was used to deliver video content over the web for about a decade. Macromedia built it and direct support arrived with Adobe Flash Player 7 in 2003. Adobe bought Macromedia two years later.
For roughly a decade it was how video reached people on the web. Every browser already had the plug-in and no two browsers agreed on anything else.
That is over. No version of Flash Player is supported any more, and the Adobe Flash brand went with it. Adobe stopped supporting Flash Player on 31 December 2020 and started blocking Flash content on 12 January 2021. Adobe now asks people to uninstall it.
None of that damaged your file. An FLV is a container, and the video stream inside it is usually H.264, the same codec an MP4 carries. Changing the wrapper is quick, free and lossless.
.flv46 4C 56, which spells FLVvideo/x-flv, not registeredA container holds streams and describes how they line up. It does not squeeze anything. What squeezes your video is the codec inside, and an FLV can carry three very different ones.
Think of a shipping box. The box holds the goods, labels what is in it and keeps everything in order. It does not shrink the goods. A video container works the same way, and an FLV file is one. It holds a video stream, an audio stream and some metadata. It also says which millisecond goes with which.
Compression is somebody else's job. That job belongs to the codec, which writes the bitstream the container carries. Adobe's specification lists three video codecs an FLV may carry, every one with a number.
| ID | Codec | Arrived | Converts to MP4? |
|---|---|---|---|
| 2 | Sorenson Spark, a variant of H.263 | Flash Player 6, required for 6 and 7 | Re-encode needed |
| 3 | Screen video | For screen recordings | Re-encode needed |
| 4 | On2 VP6 | Flash Player 8, recommended from 8 | Re-encode needed |
| 7 | AVC, better known as H.264 | Flash Player 9 Update 3 | Copies straight across |
That last row is the one that matters. H.264 arrived in Flash in 2007 and quickly became normal, so most FLV files people still have hold the same H.264 stream an MP4 wants. Audio follows the same pattern: MP3 and AAC move across, while Nellymoser, Speex and ADPCM do not.
FLV, MP4, MKV, AVI. Wrappers. They decide how streams are stored and synchronized, and they change in seconds.
H.264, VP6, MP3, AAC. These do the compressing. Changing one means decoding and re-encoding, which costs time and quality.
One popular guide lists the codecs in an FLV and leaves out H.264 entirely. It stops at Sorenson Spark and VP6, and Adobe's own specification gives AVC the codec ID 7. A reader who trusts that list assumes a full re-encode is the only way out, which for most files is simply untrue.
Almost always because the software wants Flash, and Flash is gone. Adobe stopped supporting Flash Player on 31 December 2020 and began blocking Flash content on 12 January 2021. Open the file in VLC instead.
People arrive here after double-clicking an old download and getting nothing. The instinct is that the file rotted. It did not. What disappeared was the software that used to open it, and it disappeared on a schedule that Adobe announced three years in advance. Flash Player reached end of life on the last day of 2020.
| When | What happened |
|---|---|
| 25 July 2017 | Adobe announces the end of Flash Player, three years ahead |
| 27 January 2015 | YouTube had already made HTML5 video its default player |
| 31 December 2020 | Adobe stops supporting Flash Player |
| 12 January 2021 | Flash content is blocked from running |
Adobe's own advice, verbatim: Adobe strongly recommends all users immediately uninstall Flash Player to help protect their systems. Any page still telling you to install it is out of date, and one major file directory still lists Flash Player first on every platform.
| What you see | What it usually means | Start with |
|---|---|---|
| Double-click does nothing | Nothing on the machine is set to open FLV | VLC, which is free |
| Windows Media Player refuses it | It has never read FLV without extra codecs | VLC. Do not install codec packs |
| A page asks you to install Flash | That page has not been touched since 2020 | Close it. Play the file locally |
| Sound plays, picture does not | The video codec is unsupported, the audio is not | VLC, then convert with ffmpeg |
| Plays, but looks soft | It was encoded small for a slow connection | Nothing. See section 9 |
| Stops partway through | An incomplete download, from a dead source | VLC still plays what arrived |
| Opens as a wall of characters | You opened it in a text editor | A media player |
A half-downloaded FLV usually still plays. The format writes audio and video in small tags as it goes, with no index at the end that has to be complete. Cut one in half and a player reads it up to the cut. That property is exactly why recording software liked it, and it is covered in section 8.
VLC. That is the answer for almost everybody, on Windows, Mac and Linux, free, with nothing to configure. Do not install Adobe Flash Player, and do not install a codec pack.
How to open FLV files is a question most guides answer with twenty program names, burying the useful one halfway down. One directory puts VLC below a general file opener and a sound converter. Here is the short version. Install VLC and double-click. It will open FLV files.
| Software | Cost | Why choose it |
|---|---|---|
| VLC media player | Free, open source | The answer. VLC media player runs on Windows, Mac and Linux with every codec built in |
| mpv | Free, open source | Lighter and faster than VLC, with a keyboard-driven interface |
| Media Player Classic | Free | Windows only, tiny, and familiar if you remember 2008 |
| ffmpeg | Free, open source | For converting. One command handles an entire folder. See section 5 |
| HandBrake | Free, open source | A window rather than a command line, when re-encoding is genuinely needed |
| MX Player, GOM Player | Free | Android and Windows respectively, when the file is already on the device |
| PowerDVD, Any Video Converter, File Viewer Plus | Paid | Play FLV among many formats. Nothing here needs paying for |
| Adobe Animate | Subscription | What Flash Professional became in 2016. For authoring, not for watching |
On a phone? MX Player on Android opens FLV directly. On an iPhone, VLC for iOS does the same. Neither needs anything else installed.
Two entries on old lists should be gone. Adobe Flash Player is still listed first by one major directory, on a page that also reports Adobe recommending its removal for security reasons. Nullsoft Winamp sits a few rows below it. Apple QuickTime with the Perian component appears on the same site's Mac list, and Perian was discontinued in 2012.
The older version of this page told readers to right-click, choose Open with and select the default program. There is no default program for FLV on a clean machine, which is why people arrive here.
When the video inside is H.264, converting to MP4 costs nothing. One ffmpeg command copies the streams into a new wrapper in seconds, with no re-encoding and no quality change at all.
Every guide tells you to convert FLV to MP4. Almost none of them mention that there are two completely different ways to do it, and that the cheap one works for most files.
That is a remux: the -c copy flag says copy the streams, do not re-encode them. Then ffmpeg lifts the H.264 video and the AAC audio out of the Flash wrapper and drops them into an MP4 wrapper, byte for byte. A film-length file finishes in seconds and the picture is identical, because nothing decoded it.
| Inside the FLV | Into an MP4 | What it costs |
|---|---|---|
| H.264 video | Copies | Nothing. Seconds |
| AAC or MP3 audio | Copies | Nothing |
| On2 VP6 video | Cannot | A real re-encode |
| Sorenson Spark video | Cannot | A real re-encode |
| Speex, Nellymoser or ADPCM audio | Cannot | Re-encode the audio, still copy the video |
That last row is worth reading twice. Old audio does not force a video re-encode. Copy the picture and rebuild only the sound, which keeps the expensive half untouched.
ffmpeg -i video.flv on its own and read what it prints. It names the video and audio codecs before it does anything.Online converters do the same job and hand a copy of your video to a stranger. For a downloaded clip that hardly matters. For anything of your own, run ffmpeg or HandBrake on your own machine. Both create an MP4 no stranger has touched.
HandBrake cannot do a stream copy. It is a re-encoder by design, so it will always decode and rebuild the picture. Use it when the codec inside genuinely cannot travel, and use ffmpeg when it can.
Nine bytes of header, then tags. The header spells FLV, gives a version, says whether audio and video are present and points at the first tag. Everything after that is tags.
The FLV file is one of the simplest containers in use. It stores everything in one pass, front to back. There is no index, no directory and no table of contents. A player reads the header, then reads packets. The FLV tags run in order until the file ends.
| Field | Size | What it holds |
|---|---|---|
| Signature | 3 bytes | 46 4C 56, which spells FLV |
| Version | 1 byte | 1. Adobe says only 0x01 is valid |
| TypeFlags | 1 byte | Bit 0 is audio, bit 2 is video. 0x05 means both |
| DataOffset | 4 bytes | Where the first tag starts. Adobe says typically 9 or 13 |
So 0x01 is a silent file, 0x04 is audio with no picture and 0x05 is both. A player that reads nine bytes already knows what it is dealing with.
After the header comes a stream of tags, every one with a 15-byte header of its own. Three types matter.
| Type | Carries | Note |
|---|---|---|
| 8 | Audio | One chunk of sound, with its format ID in the first byte |
| 9 | Video | One frame or part of one, with its codec ID in the first byte |
| 18 | Script data | onMetaData in AMF: duration, width, height, bitrate |
Every tag carries a timestamp in milliseconds, which is how the two streams stay together. A Filter field marks encrypted files: 0 means no preprocessing is needed, 1 means it is.
Script data is why a bad FLV reports the wrong duration. The onMetaData tag is written when encoding finishes, so a file cut short carries either no metadata or somebody else's. Players fall back to counting tags, which is slower and sometimes wrong. That is a display fault, not a damaged picture.
F4V was Adobe's own replacement for FLV in 2007, built on the same foundation as MP4. MP4 then won outright. If you are choosing today, the answer is MP4 and it is not close.
Adobe created F4V in 2007 because FLV had run out of room. Its specification is blunt about the foundation: the F4V format is based on the ISO/IEC 14496-12 base media file format, which is the same foundation MP4 sits on. People call it Flash MP4 for that reason.
The family runs to .f4a for audio and .f4b for audiobooks. F4V is close enough to MP4 that it often plays once you rename the extension.
| FLV | F4V | MP4 | |
|---|---|---|---|
| Arrived | 2003 | 2007 | 2001 |
| Built on | Its own design | ISO base media | ISO base media |
| Video codecs | Spark, VP6, H.264 | H.264 only | H.264, H.265, AV1 and more |
| Audio codecs | Five, some obsolete | AAC or MP3 | AAC and many others |
| Plays in a browser | No | No | Yes |
| Plays on a phone | With an app | With an app | Everywhere |
| Survives a crash | Yes | No | No |
| Still developed | No | No | Yes |
One row goes to FLV, and it is the reason the format hung on in recording software long after Flash died. That is section 8.
MP4 needed no plug-in. Once browsers could play video themselves, the argument for a container tied to one company's runtime evaporated. YouTube made HTML5 video its default on 27 January 2015, naming MediaSource Extensions, the VP9 codec, Encrypted Media Extensions, WebRTC and the Fullscreen APIs as what replaced the Flash player.
YouTube's own words on the switch: these advancements have benefited not just YouTube's community, but the entire industry. Flash Player had five more years of support left at that point and the decision was already made.
Comparing other containers? AVI files are Microsoft's wrapper from 1992 and MKV files are the open one that carries anything. MP4 files are where everything ends up.
The Library of Congress does not accept FLV for preservation. Its assessment calls FLV a transparent wrapper with proprietary binary content within. FLV is not preferred for preservation: for file-based lossy compressed video, the Library prefers members of the MPEG-2 or MPEG-4 family. Its media type, video/x-flv, was never registered with IANA: the x- prefix says so.
FLV is nearly gone as a file and quietly everywhere as a protocol. RTMP was built for Flash and is still how encoders push a live stream into Twitch, YouTube Live and TikTok.
RTMP is a TCP-based protocol. It is used to deliver live video from an encoder to a streaming platform, a process called ingest. Macromedia built it for Flash. Twenty years later it is still the standard way a broadcaster gets video to a platform, because every encoder speaks it and every platform accepts it.
Viewers never touch it. Browsers no longer play RTMP directly, so platforms receive the RTMP stream and repackage it into HLS, low-latency HLS or WebRTC before it reaches anybody. Twitch, TikTok and LinkedIn Live all accept RTMP ingest. YouTube and Twitch accept the newer Enhanced RTMP.
An FLV writes audio and video as small tags, in order, with nothing that has to be finalized at the end. An MP4 keeps an index that is written last. Power loss halfway through an MP4 recording usually leaves a file nothing will play. Pull it halfway through an FLV and you get everything up to that second.
Recording tools knew this. OBS Studio offered FLV for years for exactly that reason, and now classes it as legacy only, because MKV does the same job with modern codecs.
The plumbing. RTMP ingest, and the streaming habits built around it. Nobody sees an FLV and almost everybody uses the ideas in it.
The file. No browser plays one, no phone opens one out of the box and no platform accepts one for upload any more.
This is the pattern with most dead formats. The container disappears and the ideas move into whatever replaced it. FLV proved that video on the web could work at all, and the web then built something better and kept the protocol.
Converting costs you nothing when the streams copy. It costs a visible amount when they cannot, and no conversion recovers detail that was thrown away when the file was made in 2007.
People convert an old FLV, watch the result and decide the converter ruined it. Usually the converter did nothing of the kind. The file was always that soft.
Re-encoding already-compressed video causes data loss and takes a lot longer, which is the entire argument for a stream copy. Decoding H.264 and encoding it again throws away detail for no reason, because the destination could have carried the original stream untouched.
Avoid it by checking what is inside before you convert. When ffmpeg reports H.264, use -c copy and nothing is lost. When it reports VP6 or Sorenson Spark, a re-encode is the only route and the loss is the price of the file playing anywhere.
Most FLV video on the web was made for connections that no longer exist. 320 by 240 was normal. 480 by 360 was generous. Bitrates were set so a clip would start playing on a home connection in 2007, and every decision was made in favour of speed.
Nothing undoes that. Upscaling makes the picture bigger and no sharper, and tools promising to restore detail are guessing. A 2007 clip at 320 by 240 is a 2007 clip at 320 by 240 whatever wrapper it ends up in.
Converting twice is the avoidable mistake. FLV to AVI, then AVI to MP4, re-encodes the picture both times and the losses stack. Go straight to MP4, once.
If you have already converted and kept the original FLV, throw the conversion away and start again from the FLV with -c copy.
Convert the ones you care about and leave the rest alone. Converting is nearly free when the video is H.264, and an FLV nobody will watch again is not worth an afternoon.
Nothing is coming to take away these video files. VLC will open an FLV for as long as VLC exists, and ffmpeg will read one long after that. The risk is not that the format stops working. The risk is that the software you personally have stops including it, quietly, in some update.
The honest summary is that FLV was a good answer to a problem that no longer exists. Getting video onto a web page in 2005 was hard, and Flash solved it for everybody at once. Browsers learned to do it themselves, and the wrapper stopped mattering.
One command tells you which pile a file belongs in. Run ffmpeg -i video.flv with no output file. It prints the video and audio codecs and exits. H.264 means a free conversion; anything else means a decision.
Documented, open to read and finished. Adobe's video file format specification reached version 10.1 in August 2010 and covers both FLV and F4V. Nothing has been added since.
Nothing here helps you play a video. It is on record for two reasons. Adobe documented FLV properly, which is rare among the formats on this site. And the older version of this page printed a header table with unit8 for UI8 and WxO1 for 0x01.
| Property | Value |
|---|---|
| Full name | Flash Video (FLV) |
| Kind | A binary container for audio and video streams |
| Published spec | Yes. Video File Format Specification v10.1, August 2010 |
| Covers | Both FLV and F4V, in one document |
| Developed by | Macromedia, then Adobe from 2005 |
| Byte order | Big-endian throughout |
| Signature | 46 4C 56, then a version byte |
| Header size | 9 bytes. DataOffset says 9 or 13 |
| Tag header | 15 bytes per tag |
| Media type | video/x-flv. Never registered with IANA |
| Index | None. A player reads tags in order |
| Encryption | Marked by the Filter field in every tag header |
| ID | Video codec | ID | Audio format |
|---|---|---|---|
| 2 | Sorenson H.263, sold as Sorenson Spark | 1 | ADPCM |
| 3 | Screen video | 2 | MP3 |
| 4 | On2 VP6 | 6 | Nellymoser |
| 7 | AVC, that is H.264 | 10 | AAC |
| 11 | Speex |
Codec ID 7 and audio format 10 are the pair that make a free conversion possible. Everything else on that list forces a re-encode of one stream or the other.
Open it in a hex viewer. The first three bytes read 46 4C 56. Byte four is 01. Byte five is the flags, where 05 means audio and video are both present. Bytes six to nine are the offset to the first tag, almost always 00 00 00 09.
For the codec, skip the hex viewer and run ffmpeg -i video.flv, which prints both streams and their codecs, one line apiece.
No index is a weakness and a strength at once. Seeking in a long FLV means reading forward, which is why scrubbing an old file feels slow. It is also why a file cut off halfway still plays: there was never a table at the end that had to be complete.
Two questions sort out most of what is left. Answer them in order.
Install VLC. Free on every system, and the end of almost every FLV problem. See section 4.
Try the copy first. ffmpeg -i video.flv -c copy video.mp4 finishes in seconds and loses nothing. Section 5 covers the rest.
Comparing containers? An FLV should end up in the MP4 video format, while the MKV container format carries anything at all. Microsoft answered the same question in 1992 with the AVI video format.
Working with audio instead? MP3 files and WMA files cover the sound side, and both turn up inside video containers as well.
Stuck on your computer rather than your file? Our Windows fixes and macOS guides cover the system side.
New to all of this? What a file format is covers the ground underneath, and our file format guides list the rest.
Found something here that does not match your own file? Send us the exact wording on screen and we will check it against Adobe's specification.