Favicon of Ruffle

Ruffle

Ruffle is a Rust-based Flash Player emulator that runs SWF files in browsers via WebAssembly or as a standalone desktop app.

Open Source Alternative to:
Ruffle website screenshot
Ruffle GitHub repository preview

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.

Key features

  • Browser extension: install for Firefox or Chrome to automatically play Flash content embedded in web pages, replacing the dead Flash Player plugin.
  • Desktop app: a standalone player (built on wgpu-rs) that opens and runs local SWF files directly.
  • Web embed via npm: the @ruffle-rs/ruffle package lets site owners drop Flash emulation into their own pages without a plugin.
  • ActionScript support: handles ActionScript 1, 2, and 3, covering most of the scripting behavior Flash content relies on.
  • Scanner tool: bulk-tests a folder of SWF files against Ruffle's parser and reports success/failure to a CSV, useful for auditing large archives.
  • Exporter tool: renders a SWF to PNG screenshots, headless or windowed, for capturing frames without a full player session.
  • Dual licensing: released under Apache 2.0 or MIT, so it's usable in most open-source and commercial contexts.

Ideal use cases

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.

Installation

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.

Frequently asked questions

Share:

Stars
18.7K
Forks
1.1K
Last commit
5 hours ago
Repository age
7 years
Self-hosted
No
Activity score
81/100
View Repository
Ad
Favicon

 

  
 

Similar to Ruffle

Favicon

 

  
 
Favicon

 

  
 
Favicon