Extract Audio from SWF to AAC — Free Online Tool

Extract the audio track from SWF Flash files and save it as AAC, stripping away all vector graphics, animation, and interactive content while re-encoding the embedded MP3 or AAC audio stream into a modern, widely compatible AAC file. This is especially useful for recovering audio from legacy Flash animations or web content that can no longer be played in modern browsers.

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 embed audio using either MP3 (libmp3lame) or AAC streams alongside Flash vector graphics and ActionScript interactivity. During this conversion, FFmpeg demuxes the SWF container to locate the audio stream and discards all video, animation, and interactive data entirely. The extracted audio is then re-encoded using AAC (the native codec for the .aac output container) at 128k bitrate. Because SWF's default audio codec is MP3 rather than AAC, this process always involves a transcode — there is no lossless remux path from SWF to AAC even when the source audio happens to be AAC-encoded, since the raw stream must be repackaged and re-encoded to conform to the AAC container format.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg command-line tool. In the browser-based version of this tool, FFmpeg runs locally via WebAssembly (FFmpeg.wasm) — no data leaves your device.
-i input.swf Specifies the input SWF file. FFmpeg uses its SWF demuxer to parse the Flash container, identifying the embedded audio stream (typically MP3 or AAC) and separating it from the vector graphics, ActionScript, and animation data.
-vn Disables all video output, ensuring that only the audio stream is processed. This is essential here because the .aac output container is audio-only and cannot hold the Flash video or animation streams present in the SWF.
-c:a aac Specifies FFmpeg's native AAC encoder to re-encode the extracted audio. Since SWF audio is most commonly MP3, this flag triggers a transcode from MP3 to AAC — producing a modern, broadly compatible audio format suitable for iOS, Android, and web streaming.
-b:a 128k Sets the AAC output bitrate to 128 kilobits per second. AAC at 128k delivers audio quality that is generally considered transparent for most listeners, and it is the standard default bitrate for AAC in streaming and download contexts. This can be raised to 192k or 256k if the source SWF audio quality warrants it.
output.aac Defines the output filename and container. The .aac extension tells FFmpeg to write a raw ADTS-wrapped AAC file — a headerless stream format that is widely supported by media players, mobile devices, and editing software without requiring a full MP4 wrapper.

Common Use Cases

  • Recover background music or sound effects from legacy Flash games and animations that can no longer be played in post-Flash-era browsers
  • Extract voiceover narration from old SWF-based e-learning courses to repurpose the audio in modern training materials
  • Pull out a soundtrack from a Flash music visualizer or interactive audio player to create a standalone audio file for mobile or streaming use
  • Archive audio content from SWF promotional videos or web advertisements before they are lost due to Flash end-of-life deprecation
  • Extract audio from SWF animations for use in video editing timelines where only the sound, not the Flash visuals, is needed
  • Convert the audio portion of an SWF intro sequence into an AAC file compatible with iTunes, iOS devices, and modern media players

Frequently Asked Questions

Yes, some quality loss is unavoidable. SWF files most commonly store audio as MP3 streams, so converting to AAC means decoding the MP3 and re-encoding to AAC — a generation loss scenario. If the source SWF uses AAC audio internally, re-encoding to a new AAC file still introduces a second lossy compression pass. At the default 128k bitrate, AAC generally sounds better than MP3 at the same rate, so the output quality is often perceptually acceptable, but it will not be bit-for-bit identical to the original audio.
You can increase the output AAC bitrate using the -b:a flag — for example, changing -b:a 128k to -b:a 192k or -b:a 256k — but the ceiling on quality is determined by the source SWF audio, which is typically encoded at 128k MP3 or lower. Encoding at a higher bitrate than the source was originally compressed at will not recover lost detail; it will only produce a larger file. For archival purposes, 192k is a reasonable upper limit given typical SWF audio source quality.
The -vn flag explicitly disables video output, instructing FFmpeg to ignore all video and animation streams in the SWF container. If you removed -vn, FFmpeg would attempt to include the video stream in the output, which would fail because the .aac container format is audio-only and cannot hold video data. Keeping -vn ensures a clean audio-only extraction without errors.
On Linux or macOS, you can use a shell loop: for f in *.swf; do ffmpeg -i "$f" -vn -c:a aac -b:a 128k "${f%.swf}.aac"; done. On Windows Command Prompt, use: for %f in (*.swf) do ffmpeg -i "%f" -vn -c:a aac -b:a 128k "%~nf.aac". This processes each SWF in the current directory and outputs a matching .aac file. The browser-based tool handles files one at a time, so the FFmpeg command is the better option for bulk conversions.
AAC is generally the better modern choice. It achieves comparable or superior audio quality to MP3 at the same bitrate, and it is natively supported on iOS, Android, macOS, iTunes, YouTube, and most modern streaming platforms. Since SWF files already encode audio in MP3 or AAC internally, outputting to AAC gives you a format that is both forward-compatible and efficient, without the legacy limitations of MP3.
SWF does not support multiple discrete audio tracks or chapter markers in the way that containers like MKV or MP4 do — audio in Flash is typically a single embedded stream or a series of audio events tied to timeline frames. FFmpeg will extract the primary audio stream it detects. If a SWF contains separate audio events (common in interactive Flash), only the main audio stream may be captured, and timeline-synced sound effects may not be recoverable as separate files through this method.

Technical Notes

SWF is a legacy binary container designed for the Adobe Flash runtime, and its audio encoding is constrained to MP3 (libmp3lame) or AAC streams — with MP3 being far more common in older Flash content. FFmpeg's SWF demuxer can parse these audio streams, but because the SWF format interleaves audio with ActionScript, vector graphics, and frame data, demuxing can occasionally produce timing irregularities or brief silence at the start of the audio output. The AAC output uses FFmpeg's built-in native AAC encoder, which produces compliant ADTS-wrapped AAC audio in a raw .aac container. If higher encoding quality is needed, the libfdk_aac encoder (when available in your FFmpeg build) is considered superior to the native encoder and can be substituted with -c:a libfdk_aac. Metadata such as title or artist tags is generally not present in SWF files, so the output AAC file will typically have no embedded metadata. The output file size will be significantly smaller than the original SWF in cases where the SWF contained large amounts of vector graphic or ActionScript data, since all of that non-audio content is discarded.

Related Tools