Convert SWF to AVI — Free Online Tool
Convert SWF Flash animations and multimedia files to AVI using H.264 video and MP3 audio — rasterizing vector graphics and interactive content into a widely compatible video file. This is particularly useful for preserving legacy Flash content as Adobe Flash Player reaches end-of-life, turning SWF files into standard video that plays anywhere.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your SWF 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
SWF files can contain a mix of vector graphics rendered via the Flash runtime, FLV1-encoded video streams, MP3 or AAC audio, and interactive ActionScript logic. During this conversion, FFmpeg decodes the SWF container — rendering any embedded FLV1 video frames or rasterizing vector animation sequences — and re-encodes the video output using libx264 (H.264), which is far more universally supported than the aging Sorenson Spark (FLV1) codec. The audio, typically stored as MP3 (libmp3lame) within the SWF, is decoded and re-encoded into MP3 at 128k for the AVI container. Importantly, any interactive elements, ActionScript behaviors, and vector scalability are permanently lost in this process — AVI is a flat video container and cannot represent interactivity or resolution-independent graphics.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary — the underlying engine that powers this browser-based tool via WebAssembly. The same command runs identically on desktop FFmpeg installations for processing files over 1GB. |
-i input.swf
|
Specifies the input SWF file. FFmpeg's SWF demuxer reads the container, identifies embedded video streams (FLV1 or MJPEG) and audio streams (MP3 or AAC), and passes them to the appropriate decoders. |
-c:v libx264
|
Encodes the output video stream using the libx264 H.264 encoder, replacing the SWF's original FLV1 (Sorenson Spark) or MJPEG video codec with a far more modern and efficient standard supported by virtually all devices and players. |
-c:a libmp3lame
|
Encodes the audio stream using the LAME MP3 encoder. SWF files commonly store audio as MP3 already, so this re-encodes to MP3 in the AVI container — maintaining a familiar audio format while ensuring compatibility with the AVI wrapper. |
-crf 23
|
Sets the Constant Rate Factor for the H.264 encoder to 23, which is the libx264 default and represents a good balance between visual quality and file size. Lower values (e.g., 18) produce higher quality larger files; higher values (e.g., 28) produce smaller but more visibly compressed output. |
-b:a 128k
|
Sets the MP3 audio bitrate to 128 kilobits per second, matching the typical audio quality found in SWF files and providing acceptable stereo audio fidelity for most Flash animation and video content. |
output.avi
|
Defines the output filename and tells FFmpeg to use the AVI container format. FFmpeg infers the container from the .avi extension and muxes the H.264 video and MP3 audio streams into the interleaved AVI structure. |
Common Use Cases
- Archiving legacy Flash-based web animations and banner ads before they become completely unplayable now that Flash Player is discontinued
- Extracting video content from SWF e-learning modules or training videos to repurpose in modern LMS platforms that no longer support Flash
- Converting SWF game cutscenes or intro animations into AVI files for editing in older Windows video editing software that expects AVI input
- Preserving Flash-based music videos or motion graphics from the early 2000s web era into a format that can be played without any browser plugin
- Preparing Flash animation content for import into legacy video production pipelines or broadcast systems that specifically require AVI containers
- Converting SWF promotional or advertising content into a video format for storage in digital asset management systems that don't index Flash files
Frequently Asked Questions
No — interactivity is completely lost in this conversion. AVI is a linear video container and has no concept of ActionScript, clickable regions, timeline branching, or user input handling. What you get in the AVI is a flat video recording of what the SWF would have rendered visually, with its audio track. If your SWF is primarily interactive (like a game or form-based application), the output will only capture the static or animated visual layer.
Some SWF files are entirely ActionScript-driven and require user interaction to trigger any visual output — FFmpeg renders them without any input events, so the result may be a blank or near-blank video. Additionally, SWFs that rely on external asset loading (loading images or video from a remote URL at runtime) will produce incomplete output because FFmpeg cannot execute those network requests. SWFs with self-contained embedded media and timeline-based animations convert most reliably.
There will be some generation loss since you're transcoding from one lossy codec (FLV1/Sorenson Spark) to another (H.264), but at the default CRF 23 setting, H.264 is far more efficient than FLV1 and typically produces cleaner output at comparable or smaller file sizes. The bigger quality concern is SWFs that use vector graphics — these are resolution-dependent when rasterized by FFmpeg's renderer, so the output resolution is fixed at whatever FFmpeg determines from the SWF's stage dimensions.
Change the -crf value to control H.264 quality: lower numbers mean higher quality and larger files (CRF 18 is near-visually lossless), while higher numbers reduce quality and file size (CRF 28 is noticeably compressed). For example, use '-crf 18' for high-quality archival output or '-crf 30' if you need a smaller file and can tolerate more compression. To improve audio quality, raise the -b:a value from 128k to 192k or 256k.
Yes — on Linux or macOS you can run a shell loop: 'for f in *.swf; do ffmpeg -i "$f" -c:v libx264 -c:a libmp3lame -crf 23 -b:a 128k "${f%.swf}.avi"; done'. On Windows Command Prompt, use: 'for %f in (*.swf) do ffmpeg -i "%f" -c:v libx264 -c:a libmp3lame -crf 23 -b:a 128k "%~nf.avi"'. The browser-based tool processes one file at a time, so use the desktop FFmpeg command for bulk conversions.
SWF files require the Adobe Flash Player runtime to play, which was officially discontinued on December 31, 2020, and is now actively blocked by all major browsers. AVI with H.264 video plays natively in Windows Media Player, VLC, and virtually every modern media application without any plugins. While AVI is itself a legacy format, its video codec (H.264) has decades of decoder support ahead of it, making it a far more future-proof preservation format than SWF.
Technical Notes
SWF's two native video codecs — FLV1 (Sorenson Spark) and MJPEG — are both significantly inferior to H.264 in compression efficiency, so transcoding to libx264 in AVI almost always yields a better quality-to-size ratio. FFmpeg's SWF demuxer has limited support for complex SWF structures; it works best with SWF files that embed a straightforward video stream rather than pure ActionScript-rendered animation. The AVI container's audio is stored as MP3 via libmp3lame, which is consistent with SWF's own common audio codec, minimizing the transcoding chain. One known limitation: AVI does not support variable frame rate video, so if the SWF's animation has irregular frame timing (common in timeline-based Flash animations), FFmpeg will normalize to a constant frame rate which may cause minor timing drift. AVI also caps at a 4GB file size due to its original 32-bit index design, though the OpenDML AVI extension (which FFmpeg uses by default) removes this limit in practice. Neither SWF nor AVI supports subtitle tracks, so no subtitle data is lost. Multiple audio tracks are technically supported by AVI but SWF only ever carries one audio stream, so this is not a concern for this conversion.