Ruffle is an Adobe Flash Player emulator written in Rust. It targets both desktop platforms and the web through WebAssembly, letting SWF files run without the discontinued Adobe Flash Player runtime. It's built for anyone who needs to preserve, play, or embed old Flash content: game archivists, site owners with legacy Flash animations, and museums of web history.
The project supports ActionScript 1, 2, and 3, though it's still a work in progress and not every SWF will run perfectly. It ships as a browser extension (Firefox, Chrome), an npm package for embedding in web pages, a desktop app, and a Flathub/AUR package for Linux. There's also an Android build maintained in a separate repo.
wgpu-rs) that opens and runs local SWF files directly.@ruffle-rs/ruffle package lets site owners drop Flash emulation into their own pages without a plugin.Ruffle fits projects that need to keep old Flash games, animations, or interactive sites working after browsers dropped native Flash support. Game portals, educational sites, and archives with large SWF libraries can embed the web player to keep content playable without asking visitors to install anything unsupported. Developers building a Flash-content archive can use the scanner to find which files parse cleanly and which don't, before deciding what to migrate or flag as broken.
It's also useful for anyone who just wants to play an old SWF file locally: the desktop build opens files directly, no server or browser needed.
It's not a good fit if you need pixel-perfect compatibility with every obscure Flash feature or third-party component (some ActionScript 3 content, complex DRM, or unusual SWF edge cases may not work correctly, since the project explicitly states it's not finished). If your content depends on Adobe-specific plugins or external SWF libraries that Ruffle hasn't reimplemented, expect gaps.
The quickest way to try Ruffle is the web demo: click "Select File" and load a SWF. For regular use, install the browser extension from the Firefox Add-ons store or Chrome Web Store, or grab a nightly build for desktop.
To build from source, you need the latest stable Rust toolchain and Java available on PATH (required to build the ActionScript 3 builtin classes library). On Linux, install platform dependencies first:
# Ubuntu/Debian
sudo apt install pkg-config libasound2-dev libudev-dev libfontconfig-dev libfreetype6-dev libssl-dev default-jre-headless g++
# Fedora/RHEL
sudo dnf install pkgconf-pkg-config alsa-lib-devel systemd-devel fontconfig-devel freetype-devel openssl-devel java-latest-openjdk-headless gcc-c++
Build and run the desktop app:
cargo run --release --package=ruffle_desktop
Run a specific SWF file:
cargo run --release --package=ruffle_desktop -- test.swf
On macOS, install via the Homebrew tap:
brew install --HEAD ruffle-rs/ruffle/ruffle
For the web build or browser extension, follow the instructions in the web/README.md directory of the repo. For Android, see the separate ruffle-android repository's build instructions.
The repo also includes a scanner (cargo run --release --package=ruffle_scanner -- scan folder/with/swfs/ results.csv) for bulk-testing SWF collections, and an exporter for generating PNG screenshots from SWF files.