Skip to content
A Flash Player emulator written in Rust
Rust JavaScript Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci ci: Use Rust 1.38 CircleCI image so Rust is cached Oct 30, 2019
core core: Handle empty JPEGTables tags (fix #116) Nov 11, 2019
scanner Added a bulk swf scanning tool Oct 11, 2019
swf swf: Store register count from DefineFunction2 Oct 16, 2019
web core: Handle empty JPEGTables tags (fix #116) Nov 11, 2019
.gitattributes chore: Add gitattributes to normalize line endings Oct 11, 2019
.gitignore web: Re-organize npm/webpack files May 8, 2019 chore: Renormalize line endings in misc files Oct 11, 2019
Cargo.toml Added a bulk swf scanning tool Oct 11, 2019
LICENSE_APACHE Initial commit Apr 25, 2019
LICENSE_MIT Initial commit Apr 25, 2019
rustfmt.toml chore: Add rustfmt.toml and rustfmt pass Aug 26, 2019


Travis Build Status Ruffle Discord
website | demo | nightly builds | wiki


Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both the desktop and the web using WebAssembly.

Project status

Ruffle is in the proof-of-concept stage and can currently run early Flash animations. ActionScript support is still forthcoming; for more info, read the project roadmap.

Building from source

Follow the official guide to install Rust for your platform.


  • cargo run --package=ruffle_desktop -- test.swf


Running the web demo

Building the NPM package

  • cd web
  • wasm-pack build


If you have a collection of "real world" SWFs to test against, the scanner may be used to benchmark ruffle's parsing capabilities. Provided with a folder and an output filename, it will attempt to read all of the flash files and report on the success of such a task.

  • cargo run --package=ruffle_scanner -- folder/with/swfs/ results.csv


  • core contains the core emulator and common code
  • desktop contains the desktop client (uses glium)
  • web contains the web client (uses wasm-bindgen)
  • scanner contains a utility to bulk parse swf files


Licensed under either of


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.