Convert SWF to M4B — Free Online Tool

Convert SWF Flash files to M4B audiobook format by extracting and re-encoding the audio track to AAC inside an MPEG-4 container with chapter and bookmarking support. This tool strips the Flash video and vector graphics entirely, preserving only the audio content — ideal for salvaging narration or spoken-word content from legacy SWF e-learning modules or Flash-based audio stories.

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

SWF files typically contain audio encoded as MP3 (via libmp3lame) or AAC alongside Flash vector graphics and ActionScript interactivity. During this conversion, FFmpeg demuxes the SWF container, discards all video streams (FLV1 or MJPEG encoded frames) and interactive data, and re-encodes the extracted audio to AAC at 128k bitrate. The resulting audio is wrapped in an MPEG-4 container with the .m4b extension and the -movflags +faststart flag applied, which reorganizes the file's metadata to the front of the file — a requirement for progressive playback in audiobook and podcast players. Because SWF audio is typically already lossy (MP3), this re-encoding step introduces a second generation of lossy compression, so quality is marginally reduced compared to the original Flash audio.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool, which handles all demuxing, decoding, encoding, and muxing operations. In the browser version of this tool, FFmpeg runs locally via WebAssembly (FFmpeg.wasm) — no data leaves your machine.
-i input.swf Specifies the input SWF file. FFmpeg's SWF demuxer reads the Flash container and identifies available streams, which may include FLV1 or MJPEG video, MP3 or AAC audio, and embedded ActionScript data.
-c:a aac Encodes the output audio stream using the native FFmpeg AAC encoder, producing MPEG-4 AAC audio — the standard codec for M4B audiobook files and the format expected by Apple Books and most podcast players.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, which provides a good balance of file size and audio quality for spoken-word content extracted from SWF narration or e-learning audio tracks.
-movflags +faststart Moves the MPEG-4 moov atom (file metadata) to the beginning of the output file, which is required for the M4B to begin playback immediately in audiobook and podcast apps without buffering the entire file first.
output.m4b Specifies the output filename with the .m4b extension, which signals to compatible players like Apple Books and Overcast that this is an audiobook file supporting bookmarking and chapter navigation (though chapter data must be added separately, as SWF provides none).

Common Use Cases

  • Extracting narration audio from legacy Flash-based e-learning courses or training modules to repurpose as M4B audiobooks playable in Apple Books or podcast apps
  • Salvaging spoken-word content from SWF audio stories or interactive Flash fiction created in the 2000s before Flash's end-of-life in 2020
  • Converting a Flash-based language learning module's audio track into an M4B file for offline listening on an iPhone or iPod without needing a Flash player
  • Archiving the audio commentary or narration from an old SWF museum exhibit or educational kiosk into a distributable audiobook format
  • Extracting audio from an animated SWF explainer video to create a podcast-style audio episode in a format compatible with Apple Podcasts and Overcast
  • Recovering audio from SWF files found in archived CD-ROM educational software, converting it to M4B for long-term digital preservation

Frequently Asked Questions

No. SWF files do not support chapters or structured bookmarking metadata, so there is no chapter data to carry over during conversion. The output M4B file will be a single continuous audio track without any chapter markers. If you need chapters in your M4B, you would need to add them manually after conversion using a tool like mp4chaps or Audiobook Builder.
M4B is a pure audio container format — it does not support video streams at all. The FFmpeg command used here targets only the audio track from the SWF, and the Flash vector graphics, FLV1-encoded video frames, and all ActionScript interactivity are discarded entirely. If you need to preserve the visual content, you should consider converting to MP4 or WebM instead.
Yes, some quality loss is expected. SWF files store audio as lossy MP3 or AAC, and converting to AAC in M4B means the audio undergoes a second round of lossy compression — sometimes called 'generation loss.' The degree of degradation depends on the original SWF audio bitrate and the target 128k AAC bitrate. For spoken-word content like narration or audiobooks, 128k AAC is generally sufficient and the loss is not perceptible to most listeners.
Replace the -b:a 128k value with a higher bitrate such as 192k or 256k. For example: ffmpeg -i input.swf -c:a aac -b:a 192k -movflags +faststart output.m4b. For spoken-word audiobook content, 128k is typically more than adequate, but if the original SWF contained high-quality music or audio drama, increasing to 192k or 256k will reduce the perceptible impact of the second-generation lossy re-encoding.
Yes, on the command line you can use a shell loop to batch process files. On Linux or macOS, run: for f in *.swf; do ffmpeg -i "$f" -c:a aac -b:a 128k -movflags +faststart "${f%.swf}.m4b"; done. On Windows Command Prompt, use: for %f in (*.swf) do ffmpeg -i "%f" -c:a aac -b:a 128k -movflags +faststart "%~nf.m4b". The browser-based tool on this page processes one file at a time.
M4B files with AAC audio are natively supported by Apple Books, the Podcasts app on iOS and macOS, Overcast, Pocket Casts, and most other major podcast players on Apple platforms. On Android, apps like Listen Audiobook Player and Smart AudioBook Player support M4B. Standard media players like VLC also play M4B without any issue. The -movflags +faststart flag applied during conversion ensures the file begins streaming quickly without needing to fully buffer first.

Technical Notes

SWF is a highly unconventional source for M4B conversion because the format was designed for interactive browser-based multimedia — not linear audio distribution. The audio streams inside SWF are typically embedded as MP3 (libmp3lame) at bitrates ranging from 32k to 128k, or occasionally as AAC in newer SWF versions. FFmpeg's SWF demuxer can extract these streams, but ActionScript events, timeline triggers, and interactivity cues that may have controlled audio playback in the original Flash file are lost entirely — meaning audio that was triggered by button clicks or timeline events may not appear in the output at all, only continuously streaming audio tracks are captured. The output M4B uses the AAC codec (MPEG-4 Audio) inside an MPEG-4 Part 14 container, which is identical in structure to an MP4 file but with the .m4b extension signaling audiobook intent to compatible players. The -movflags +faststart flag relocates the moov atom to the beginning of the file, enabling progressive playback. ID3-style metadata such as title, author, and cover art are not preserved from SWF (which stores no such metadata), so you will need to tag the M4B file separately using a tool like mp3tag or MusicBrainz Picard after conversion.

Related Tools