Introduction
This is the document format of Macromedia Flash MX 2004 and Flash 8, and of Adobe
Flash CS3 and CS4 Professional, from 2003 to 2008: the authoring tool now called
Adobe Animate. Later releases
still write it when a document is saved as Flash CS4. An .fla file holds
the whole editable document: its scenes, layers and keyframes, the vector shapes, the
library of symbols, the imported bitmaps and sounds, and the scripts, in ActionScript
1.0 and 2.0 and, from Flash CS3, 3.0. Publishing it makes a
.swf file.
The file is a Microsoft compound file, the container of old Word and Excel documents:
a small file system of fixed-size sectors holding named streams. Each stream is an
archive of Flash’s own objects, written with Microsoft’s MFC library as a tree: a scene
holds its layers, a layer its frames, and a frame what is on the stage. Every string is
UTF-16LE. Script text, layer names and labels carry a marker that says so; the stream
names listed in Contents carry none. Flash CS4 also names its streams with
a time stamp.
Macromedia and Adobe never published the format. What is known comes from reading
files and from projects that read and write them, chiefly the JPEXS FLA converter; the
pages here were checked against real files of Flash MX 2004, 8, CS3 and CS4. The
documents of Flash MX and earlier have the same container and records but single-byte
text, which makes them a separate format; from
Flash CS5 the .fla is a ZIP archive of
XML. All the variations are on the FLA page.
An .fla file dropped on any page opens in the explorer, which lists its
sectors and streams, shows its bitmaps, and pulls out every script, each labelled with
its scene or symbol, layer and frame.
Structure
The file is a compound file: a 512-byte header, then numbered 512-byte sectors. Tables in the sectors chain them into streams, and a directory names the streams. All numbers are little-endian.
0Header the signatureD0 CF 11 E0 A1 B1 1A E1, the sector sizes, where the directory and the tables start, and the first 109 FAT sector numbers512 bytes512Sectors numbered from 0, in any order: FAT, directory and mini FAT sectors, and the data of the streams512 bytes each
The streams
Every stream sits directly in the root of the compound file; Flash uses no storages (folders).
| Stream | In Flash CS4 | Holds |
|---|---|---|
Contents | Contents | The document: the list of scenes, the library, the media records, colours, the frame rate and the publish settings. |
Page 1, Page 2 … | P 1 1227523356 … | The timeline of one scene. |
Symbol 1, Symbol 2 … | S 12 1299599075 … | The timeline of one library symbol: a movie clip, a button or a graphic. |
Media 1, Media 2 … | M 3 … | One imported bitmap or sound. |
How a timeline is stored
A Page or Symbol stream is one tree of objects, written
depth first. Each object starts with its class and its own revision byte, then its
children, then its own fields, so a layer’s name comes after all its frames.
CPicPage the scene or symbol
CPicLayer a layer: its frames first, then its name and settings
CPicFrame a keyframe: what is on the stage first, then its duration, label and script
CPicShape on the stage in that frame:
CPicSprite a movie clip instance, with its handlers and name
CPicButton a button instance, with its handlers and name
CPicText a text field
CPicLayer the next layer
…
Reference pages
- The compound file container – the header, sectors, FAT, DIFAT, mini FAT, directory entries and free sectors
- Streams and their names – Contents, Page, Symbol and Media streams, Flash CS4’s time-stamped names, and how display names are found
- MFC object archive – class tags, UTF-16 strings and revision bytes
- The Contents stream – the document revision, scenes, media records and publish settings
- Pages, layers and frames – the records of a timeline, field by field
- ActionScript in FLA – where scripts are kept, the ActionScript block, classes and documents that mix encodings
- Bitmaps and sounds – JPEG and lossless bitmaps and sounds in Media streams
- Versions – the record revisions of each release
Telling it apart
The explorer’s parser for this format checks three things, in order:
- A compound file header that reads: the signature
D0 CF 11 E0 A1 B1 1A E1, version 3 or 4 with the matching sector shift, a mini sector shift of 6 and a mini stream cutoff of 4,096, then a FAT, a directory and a root entry that can be followed. - A Flash document: the root entry’s class ID is
{597CAA70-72AA-11CF-831E-524153480000}, or the root holds aContentsstream and at least one timeline stream,PageorSymbol, or Flash CS4’sP n stampandS n stamp. Word, Excel, Windows Installer and other compound files have neither and are turned down. - UTF-16 text: the first byte of the
Contentsstream, the document revision, is one of this format’s,0x38(Flash MX 2004) or higher. A file whose revision is0x29or lower belongs to the Flash MX and earlier format. For a revision in neither list, the encoding of the stream names inContentsdecides, then the layer names and scripts.
The explorer tries this parser before the single-byte one. Flash CS4 documents saved again by Flash CS5.5 can have a zero or a different class ID on the root; the second test still accepts them, as it does files written by SWF-to-FLA decompilers.
Variants
- Flash MX and earlier document (binary FLA, single-byte text) – a compound file of Flash’s object streams, every string in single bytes (FutureSplash Animator to Flash MX)
- Flash MX 2004 to CS4 document (binary FLA, UTF-16 text) – the same compound file with UTF-16LE strings and stream names (Flash MX 2004 to Flash CS4)
- XFL document (Flash CS5 and later, ZIP) – a ZIP archive of XML files and binary assets (Flash CS5 to Adobe Animate)
Links
Software
- Adobe Animate – Adobe’s animation tool, formerly Flash Professional, which still opens these documents and saves them as XFL (Windows, macOS)
- JPEXS Free Flash Decompiler – free SWF decompiler that can export a SWF as a binary FLA of this era (Windows, macOS, Linux)
Developers
- jpexs-fla-convert – library that reads and writes binary FLA documents of every release (Java)
- fla-decoder – reader for binary FLA documents (Python); Kreijstal’s fork adds notes on the format
- fla-viewer – viewer for XFL documents that also reads some binary ones (TypeScript)
Reference
- [MS-CFB] Compound File Binary File Format – Microsoft’s specification of the container
- fla-decoder FORMAT.md – notes on the streams, classes and records
- Cracking the Pre-CS5 Binary FLA – Ed Moore’s account of decoding binary FLA documents (2026)