Convert MP4 to SWF — Free Online Tool

Convert MP4 video files to SWF (Shockwave Flash) format directly in your browser, encoding video with the FLV1 (Sorenson Spark) codec and audio with MP3 — the native codec combination for Flash-based media playback. This tool is ideal for reviving legacy Flash projects or embedding video content in older SWF-based environments that cannot accept modern H.264 MP4 files.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

Converting MP4 to SWF is a full transcode operation — no stream copying is possible because the container formats and their native codecs are fundamentally different. The MP4's video stream (typically H.264/libx264 or H.265/libx265) is decoded and re-encoded into FLV1 (also known as Sorenson Spark), the legacy Flash video codec. The audio stream is similarly decoded and re-encoded from AAC into MP3 using the LAME encoder, since SWF's audio model is built around MP3. The resulting SWF file wraps these streams in Flash's binary container format, which embeds timing, playback, and media data in a structure historically interpreted by the Adobe Flash Player runtime.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool. In this browser-based tool, the same binary runs locally via WebAssembly (FFmpeg.wasm), so no files leave your machine.
-i input.mp4 Specifies the input file — your source MP4, which may contain H.264 or H.265 video and AAC audio that will be fully decoded and re-encoded for the SWF output.
-c:v flv1 Sets the video codec to FLV1 (Sorenson Spark), the H.263-derived codec that is native to the SWF/Flash container and ensures the broadest compatibility with Flash runtimes and emulators like Ruffle.
-c:a libmp3lame Sets the audio codec to MP3 using the LAME encoder, which is required here because SWF's audio model is built around MP3 and does not natively support the AAC audio typically found in MP4 source files.
-q:v 5 Sets the FLV1 video quality on a scale of 1 (highest quality, largest file) to 10 (lowest quality, smallest file). A value of 5 is the default middle ground, balancing reasonable visual quality against file size for Flash-era video content.
-b:a 128k Sets the MP3 audio bitrate to 128 kilobits per second, a standard quality level that provides acceptable stereo audio fidelity for voice and music content within the constraints of the SWF format.
output.swf Specifies the output filename and tells FFmpeg to write the result as a SWF (Small Web Format) file, causing it to use the Flash binary container structure that wraps the FLV1 video and MP3 audio streams.

Common Use Cases

  • Embedding video content into legacy Flash-based e-learning courses or LMS platforms (such as older SCORM packages) that only accept SWF media assets
  • Archiving or restoring interactive Flash multimedia projects that reference video assets in SWF format rather than external FLV or MP4 files
  • Supplying video content to older kiosk or digital signage systems built on Adobe AIR or Flash Player that cannot decode H.264 MP4 directly
  • Converting MP4 screen recordings or tutorials into SWF format for inclusion in legacy Flash-based help systems or documentation tools
  • Preparing video assets for retro web projects or emulation environments (such as Ruffle) that simulate Flash Player behavior using SWF input files

Frequently Asked Questions

No, Adobe Flash Player was officially discontinued on December 31, 2020, and all major browsers have removed support for it. The resulting SWF file will not play natively in Chrome, Firefox, Edge, or Safari. However, open-source Flash emulators like Ruffle can play SWF files containing video encoded with FLV1 and MP3, which is exactly what this tool produces. For general web playback, MP4 remains the far better choice.
SWF's native and most compatible video codec is FLV1 (Sorenson Spark), which is what FFmpeg targets by default when writing SWF output. While Flash Player 9+ technically supported H.264 video via the F4V container, embedding H.264 inside a true SWF binary container is not well-supported by FFmpeg or most Flash toolchains. FLV1 ensures the broadest compatibility with SWF-consuming software, emulators, and legacy Flash runtimes.
Significant quality loss should be expected. FLV1 (Sorenson Spark) is a much older and less efficient codec than H.264 or H.265, so at equivalent file sizes it will produce noticeably softer, blockier video. The default quality setting of -q:v 5 on a scale of 1 (best) to 10 (worst) offers a moderate middle ground, but you will not achieve the visual fidelity of the source MP4. Additionally, re-encoding audio from AAC to MP3 at 128k introduces a second generation of lossy compression.
No. The SWF format does not support chapters, subtitle tracks, or multiple audio tracks. Only a single video stream and a single audio stream will be included in the output. If your MP4 contains embedded subtitles or secondary audio languages, all of that metadata will be silently dropped during conversion. Make sure to extract any important subtitle or audio data before converting if you need to preserve it.
To change video quality, modify the -q:v value: lower numbers mean better quality (1 is best, 10 is worst), so use -q:v 2 for higher quality at the cost of a larger file, or -q:v 8 for a smaller file with more compression artifacts. To change audio quality, replace the -b:a 128k value with a higher bitrate like -b:a 192k for better audio fidelity, or -b:a 96k to reduce file size. For example: ffmpeg -i input.mp4 -c:v flv1 -c:a libmp3lame -q:v 2 -b:a 192k output.swf
Yes, on the command line you can use a shell loop to process multiple files. On Linux or macOS, run: for f in *.mp4; do ffmpeg -i "$f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "${f%.mp4}.swf"; done. On Windows Command Prompt, use: for %f in (*.mp4) do ffmpeg -i "%f" -c:v flv1 -c:a libmp3lame -q:v 5 -b:a 128k "%~nf.swf". The browser-based tool on this page processes one file at a time.

Technical Notes

SWF is a binary container format designed around Adobe Flash's rendering model, and its video codec support is largely frozen at legacy standards. FLV1 (Sorenson Spark) is derived from H.263 and lacks the advanced compression features of modern codecs — no B-frames, no CABAC entropy coding, and limited motion estimation efficiency. This means SWF files will typically be larger than equivalent MP4 files for the same perceived quality. The audio side uses MP3 via LAME, which is well-supported but also a lossy re-encode from the likely AAC audio in your source MP4, introducing generational quality loss. SWF has no support for metadata containers equivalent to MP4's moov atom extras, so title tags, chapter markers, subtitle streams, and all but the primary audio track are discarded. The -q:v parameter in FFmpeg for FLV1 uses a JPEG-style quality scale (1–10) rather than the CRF scale used by H.264/H.265, so quality adjustments behave differently than you may expect if you are accustomed to tuning H.264 encodes. There is no lossless mode available for SWF video output.

Related Tools