ruffle is a Flash Player emulator built in the Rust programming language.

What is ruffle

Ruffle is a Flash Player emulator written in Rust. Ruffle runs natively on all modern operating systems as a standalone application, and on all modern browsers through the use of WebAssembly. Leveraging the safety of the modern browser sandbox and the memory safety guarantees of Rust, we can confidently avoid all the security pitfalls that Flash had a reputation for. Ruffle puts Flash back on the web, where it belongs - including iOS and Android!

Designed to be easy to use and install, users or website owners may install the web version of Ruffle and existing flash content will "just work", with no extra configuration required. Ruffle will detect all existing Flash content on a website and automatically "polyfill" it into a Ruffle player, allowing seamless and transparent upgrading of websites that still rely on Flash content.

Ruffle is entirely an open source project and maintained by volunteers. We're all passionate about the preservation of internet history, and were drawn to working on this project to help preserve the many websites and plethora of content that will no longer be accessible when users can no longer run the official Flash Player. If you would like to help support this project, we welcome all contributions of any kind - even if it's just playing some old games and seeing how well they run ;)

Usage

Installing on a website you own

Download the 'standalone' version of Ruffle from our releases, and include the following JavaScript on any page with Flash content:

<script src="path/to/ruffle/ruffle.js"></script>

You'll need to make sure your web server is configured to serve .wasm files correctly, so please visit our wiki if you need help with that.

For advance usage, consult our documentation for our JavasSript API and installation options.

Installing the browser extension

If you visit websites that have Flash content but aren't using Ruffle, or may using an older version of Ruffle but you want to ensure you're using the latest and greatest, then our browser extension is the perfect thing for you!

Until our first release, we currently only ship unsigned browser extensions. To use these, first download the appropriate one for your browser from our releases, and then install it manually.

Chrome

  • Unpack the downloaded zip somewhere.
  • Navigate to chrome://extensions/
  • Turn on Developer mode in the top right corner.
  • Click Load unpacked.
  • Select the folder you unpacked the extension to.

Firefox

  • Navigate to about:debugging.
  • Click on This Firefox.
  • Click Load Temporary Add-on...
  • Select the .xpi that you downloaded.

Using the desktop application

If you want to run Flash content on your computer without a browser in-between, we have native applications that will take full advantage of your GPU and system resources to get those extra frames when playing the original Meat Boy.

Currently this is just a command line application, but we intend to develop a GUI for it soon for ease of use. First, download the appropriate executable for your operating system from our releases.

To use the executable, simply start it with the path to the swf you wish to play - it may be either a local file, or a URL to a file online. We do provide more advanced options if you wish to control how this file is played. To view the full options available, run ruffle --help.

Releases

Ruffle is still in active development and we release nightly development builds every day, as long as some code changed. Whilst we try to keep nightly builds in working order, no guarantees can be made.

Version Date Desktop Browser Extension Website
Nightly 2020-11-20 preview 2020-11-20
Nightly 2020-11-16 preview 2020-11-16
Nightly 2020-11-15 preview 2020-11-15

Compatibility

ActionScript

ActionScript is the language which Flash uses to make interactive content. It is primarily split into two groups: "AVM 1" (ActionScript 1 & 2) and "AVM 2" (ActionScript 3).

AVM 1

AVM 1 is ActionScript 1 and ActionScript 2. All movies made before Flash Player 9 (June 2006) will be made with AVM 1, and it remained supported & available to authors until the release of Flash Professional CC (2013).

For in-depth details, please follow our AVM 1 tracking issue on github.

ActionScript 1 & 2 Language 70%

ActionScript 1 & 2 API 35%

AVM 2

AVM2 is ActionScript 3, which was introduced with Flash Player 9 (June 2006). After the release of Flash Professional CC (2013), authors are required to use ActionScript 3 - making any movie made after that date very likely to fall under this category.

Ruffle is still working on the foundational support for AVM 2, and does not yet support any content that requires it. A warning will be placed in the log when you attempt to play AVM 2 content, for this reason. We do plan on supporting this soon!

For in-depth details, please follow our AVM 2 tracking issue on github.

ActionScript 3 Language 5%

ActionScript 3 API 1%

Get involved

â™Ĩī¸ How to help the project

We are entirely an open source project and do this for the sake of preserving history, and we are not a large team at that. We absolutely welcome and request your help if you are willing to provide it. There are 4 main ways to help this project, and we will be extremely grateful for any provided.

đŸ–Ĩī¸ Contributing code

There are two main codebases in two languages: The actual player in Rust, and the web interface & browser UI in JavaScript. If you have any experience in either area and would like to assist, please feel free to read our contribution guidelines, search for some issues to tackle, and join our discord to ask questions!

🕹ī¸ Testing content

Arguably more important than contributing code, is testing Ruffle out. Go install Ruffle and try out your favourite games and anomations. Look for any difference from the official Flash Player, and report your findings to us. If you find any bugs, changes of behaviour, performance issues or any visual differences then please report those to our bug tracker. If it runs flawlessly, come share the good news on our Discord!

💲 Sponsor the project

If you are able and willing to, we welcome any financial support to help us fund the project going forwards. With your help, we can afford to spend more time dedicated to Ruffle, and pay for expenses such as build servers and hosting. We accept donations and sponsorships through Open Source Collective 501(c)(6). For more information, or to view the options available for sponsoring the project, please visit our Open Collective page.

đŸ’Ŧ Spread the word!

Is your favourite flash based site shutting down? Let them know they can add one javascript file and keep it running! Feeling nostalgic for some old flash games? Go play some on Newgrounds with ruffle installed, and tell your friends about it! Maybe you're a streamer and looking for some silly content? There's literally decades worth, now unlocked and accessible once more.

💎 Diamond Sponsors

We'd like to thank all of our sponsors, who help make this project possible. Below are our Diamond level sponsors, without whom we would not be here. Thank you.

Want to join them? Sponsor Ruffle today!