Extract Audio from SWF to ALAC — Free Online Tool

Extract audio from SWF Flash files and save it as ALAC — Apple's lossless audio codec stored in an M4A container. This tool is ideal for recovering high-quality audio from Flash animations or interactive content, re-encoding it losslessly so no further quality is lost after the initial SWF decode.

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 carry audio encoded as MP3 (libmp3lame) or AAC, embedded alongside vector graphics and interactive scripting. During this conversion, FFmpeg demuxes the SWF container, discards all video and interactive streams entirely, decodes the embedded compressed audio, and re-encodes it using the ALAC codec into an M4A (MPEG-4) container. Because the source audio in SWF is lossy (MP3 or AAC), the ALAC output is a lossless capture of the decoded PCM signal — meaning no additional quality is lost in the transcoding step, even though the original SWF audio was already lossy. The result is a bit-perfect archival copy of whatever audio fidelity the SWF contained.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary, the open-source multimedia processing engine that handles SWF demuxing, audio decoding, and ALAC encoding in this conversion pipeline.
-i input.swf Specifies the input SWF file. FFmpeg's SWF demuxer parses the Flash container and identifies the embedded audio stream (typically MP3 or AAC) along with video and scripting data.
-vn Disables video output entirely, ensuring that the FLV1 or MJPEG video stream from the SWF is discarded and not passed to the M4A container, which cannot hold those codecs.
-c:a alac Sets the audio codec to ALAC (Apple Lossless Audio Codec), re-encoding the decoded PCM audio from the SWF into lossless ALAC format for storage in the M4A container.
-c:a alac A duplicate of the previous codec flag — this is redundant in the command and has no additional effect. Only one -c:a alac declaration is needed; either instance alone would produce the same output.
output.m4a Defines the output filename with the .m4a extension, which tells FFmpeg to wrap the ALAC audio stream in an MPEG-4 container — the standard and most compatible container for ALAC files.

Common Use Cases

  • Recovering background music or sound effects from legacy Flash games or animations for use in modern projects
  • Archiving audio from old Flash-based e-learning modules or interactive presentations before they become completely inaccessible
  • Extracting narration or voiceover tracks from SWF training content to import into audio editing software like Logic Pro or GarageBand
  • Pulling jingles or loops from Flash advertising banners to use as stems in a music production workflow
  • Creating an iTunes or Apple Music compatible ALAC version of audio from a Flash portfolio piece or demo reel

Frequently Asked Questions

Not in an absolute sense — ALAC preserves exactly what it receives, but the SWF likely stored its audio as MP3 (libmp3lame), which is a lossy format. The conversion decodes that MP3 stream to raw PCM and then encodes it losslessly with ALAC, so no additional quality is lost during this conversion step. Think of ALAC here as a lossless snapshot of the already-compressed audio, not a restoration of the original uncompressed recording.
SWF files store audio as compressed MP3 or AAC, which can be very compact. ALAC is lossless compression, which is far less aggressive than MP3 or AAC — a typical ALAC file is 2–4 times larger than an equivalent MP3. Additionally, the SWF file itself contained video, graphics, and scripting data that are stripped out, but the audio portion alone encoded as ALAC will still be larger than the audio portion was inside the SWF.
ALAC in an M4A container has broad support beyond the Apple ecosystem. VLC, foobar2000, and most modern media players on Windows, Android, and Linux can play ALAC files. However, some older or budget devices and streaming platforms do not support ALAC, so if universal compatibility is a priority, consider converting to FLAC or a high-bitrate MP3 instead.
SWF does not support multiple simultaneous audio tracks in the way that MKV or MP4 containers do, so this is rarely a concern. If the SWF contains no audio stream whatsoever, FFmpeg will produce an empty or errored output file. In that case, the conversion will fail gracefully and no valid M4A will be generated.
ALAC is a lossless codec, so there are no bitrate or quality parameters to set — it always encodes the PCM signal perfectly and the file size is determined entirely by the audio content itself. Unlike lossy formats, you cannot trade quality for file size with ALAC. If you want a smaller output file, you would need to switch to a lossy codec like AAC or MP3 by replacing '-c:a alac' with '-c:a aac -b:a 192k' or similar.
Yes. On Linux or macOS you can run a shell loop: 'for f in *.swf; do ffmpeg -i "$f" -vn -c:a alac "${f%.swf}.m4a"; done'. On Windows Command Prompt use: 'for %f in (*.swf) do ffmpeg -i "%f" -vn -c:a alac "%~nf.m4a"'. This processes each SWF in the current directory and outputs a separate ALAC M4A file for each one.

Technical Notes

SWF audio is almost universally stored as MP3 at variable bitrates (often 64–192 kbps) or, in later Flash versions, as AAC. FFmpeg's SWF demuxer handles both, though very old or malformed SWF files — particularly those using proprietary Nellymoser or Speex codecs for streaming audio — may not decode cleanly. ALAC stores audio in a standard MPEG-4 container (.m4a), which supports metadata tags (artist, album, title) via iTunes-style atoms; however, SWF files carry no standard audio metadata, so the output M4A will have empty tags that you must populate manually. The -vn flag is critical here: without it, FFmpeg would attempt to encode the SWF's FLV1 video stream into the M4A container, which M4A does not support and would cause an error. The duplicate -c:a alac flag in the resolved command is redundant but harmless — a single instance is sufficient.

Related Tools