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 browsers on 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 an entirely open source project maintained by volunteers. We're all passionate about the preservation of internet history, and we 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.
Installing on a website you own
If you're using a local installation, you'll need to make sure your web server is configured to serve
correctly, so please visit
if you need help with that.
Installing the browser extension
If you visit websites that have Flash content but aren't using Ruffle, or you want to ensure you're using the latest and greatest version of Ruffle on every website, then our browser extension is the perfect thing for you!
The easiest way to install Ruffle on Chromium-based browsers such as Chrome, Edge, Opera, and Brave is through the Chrome Web Store. The easiest way to install Ruffle on Firefox is through addons.mozilla.org.
These update whenever new builds release. We also offer unsigned nightly extensions, but most people won't need them. If you do, download the appropriate one for your browser from our downloads, and then install it manually. Instructions for installation of nightly Chrome/Firefox extensions available on our wiki. Safari instructions below.
- Click the "Safari" link.
- Extract the downloaded tar.gz file somewhere.
- Open the extracted file and confirm the popup dialog box.
Safari > Preferences > Advanced > Show Develop menu in menu bar.
Develop > Allow Unsigned Extensions.
- Enable the extension by checking the box in
Safari > Preferences > Extensions.
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 most options are accessed via the command line, but we intend to develop a GUI soon for ease of use. First, download the appropriate executable for your operating system from our downloads.
To use Ruffle, simply double-click the executable and select the SWF file you wish to play.
Alternatively, type a command such as
ruffle filename.swf or
We also provide more advanced options if you wish to control how this file is played.
To view the full options available, run
Ruffle is directly available as an extension in the Chrome Web Store and on addons.mozilla.org:
Latest Nightly Release
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.
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 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).
We believe that most AVM 1 content will work, but we are aware of some graphical inaccuracies and smaller bugs here and there. Please feel free to report any issues you find that are not present in the original Flash Player!
For in-depth details, please follow our AVM 1 tracking issue on GitHub.
ActionScript 1 & 2 Language
ActionScript 1 & 2 API
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 now has support for AVM 2, but enough of the API is still missing that we aren't yet confident enough to claim that most games will work. A warning will be presented to you when you attempt to play AVM 2 content, for this reason. We hope that this will be temporary, as AVM2 support is currently increasing at a very fast pace.
For in-depth details, please see our page outlining full AVM2 implementation details.
ActionScript 3 Language
ActionScript 3 API
♥️ How to help the project
We are an entirely 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 help provided.
🖥️ Contributing code
🕹️ Testing content
Arguably more important than contributing code is testing Ruffle out. Go install Ruffle and try out your favourite games and animations. 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 forward. 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!
💎 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.