# fla extractor See what's inside Flash / Adobe Animate `.fla` files without Adobe Animate. One Python file, no extra packages. Point it at a folder of `.fla` files and it writes browsable pages with everything it could get out of them: | Output | What it is | |---|---| | `drawings/` | The vector artwork of each file, every library symbol drawn as SVG, on a searchable gallery page. Symbols with several frames are animated and play in the browser. | | `shots/` | For scene files (files that contain an animatic video), the finished scene as an animated SVG, cropped to the stage like the published movie. | | `images/` | Embedded bitmaps as PNG / JPEG / GIF. | | `audio/` | Embedded sounds as WAV (or MP3 when stored that way). | | `animatics/` | Embedded video clips as `.flv` with their matching sound. Open these in [VLC](https://www.videolan.org/). | | `index.html` | A page per folder linking all of the above. | The artwork renderer handles nested symbols, graphic-symbol frame selection (loop, play once, single frame), layer masks, guide layers, motion tweens with easing, colour effects (alpha, tint, brightness), gradients, groups, and static text. ## Requirements - Python 3.8 or newer. Nothing to install. - Optional, for `--preview` only: Chrome, Edge or Chromium. ## Usage ```bash # everything under the current folder python fla_extract.py # specific folders and/or files python fla_extract.py path/to/folder another.fla # choose where the results go (default: ./extracted) python fla_extract.py path/to/folder --out results ``` On macOS and Linux use `python3` if `python` isn't Python 3. Open `extracted//index.html` in a browser to look through the results. Running it again only processes files that are new or changed; add `--force` to redo everything. ### Options | Option | Meaning | |---|---| | `--out DIR` | Where to write the results (default `./extracted`). | | `--force` | Redo files that were already extracted. | | `--jobs N` | How many files to process in parallel (default: number of CPUs). | | `--drawings auto` | Default. Scene files get an animated shot, other files a gallery of all their drawings. | | `--drawings all` | Galleries and shots for every file. | | `--drawings shots` | Only the animated shots. | | `--drawings none` | Skip the artwork (media only, much faster). | | `--preview OUT.png FILE...` | Screenshot SVG/PNG files as a grid with a headless browser, handy for checking renders. | | `--width N` | Width of the `--preview` screenshot (default 1200). | | `--browser PATH` | The browser to use for `--preview` if it isn't found automatically. | ## What works with which files - **Old binary `.fla` files** (Flash 8, CS3, CS4, the most common kind in archives): media and artwork. - **Newer zip-based `.fla` files** (Flash CS5 and later): media only. Their artwork is stored as XFL/XML and isn't rendered yet. Library items that were deleted in Flash but whose data is still inside the file are rendered too, under their internal name (`Symbol 1234`). Animate itself won't show those. ## Known limitations - Shape tweens hold their starting shape instead of morphing. - Bitmaps placed inside the artwork aren't drawn yet (they are still extracted to `images/`). - Filters (blur, glow, drop shadow), blend modes and motion guides are ignored. - Movie clips are shown at their first frame, as a still. - Text is drawn for the simple single-style text boxes; other text layouts are skipped. ## Credits The basic layout of the binary `.fla` format follows the reverse-engineering notes of [fla-decoder](https://github.com/eddiemoore/fla-decoder) by Ed Moore (MIT licence). This tool extends that work with symbol instances, layer masks, frame timing, tweens, colour effects, text, video and shape-tween records, and corrects several details for CS3/CS4-era files (edge style order, style flag bits, gradient settings, shape coordinate scale). ## Licence MIT. See [LICENSE](LICENSE). Please only share the tool, not the contents of `.fla` files you don't own the rights to.