Ruffle is a cross-platform Adobe Flash Player emulator designed to enable playback of legacy SWF content in modern environments. Built using Rust, Ruffle provides a robust alternative for accessing Flash-based media, games, and applications that were previously reliant on Adobe's proprietary Flash Player.
Key Features:
Supports ActionScript 1, 2, and 3 for compatibility with a wide range of Flash content.
Runs natively on desktop platforms and via WebAssembly in web browsers.
Can be installed easily using winget for seamless integration into your workflow.
Offers a demo page for testing SWF files directly in the browser.
Audience & Benefit:
Ideal for developers, archivists, and users of legacy Flash content who need to preserve or access interactive media that would otherwise become inaccessible. Ruffle empowers individuals to continue engaging with historical digital experiences while leveraging modern programming languages and security practices.
Follow the instructions in the ruffle-android project for building the Android application of Ruffle.
Scanner
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 --release --package=ruffle_scanner -- scan folder/with/swfs/ results.csv
Exporter
If you have a SWF file and would like to capture an image of it, you may use the exporter tool.
This currently requires hardware acceleration, but can be run headless (with no window).
cargo run --release --package=exporter -- path/to/file.swf
cargo run --release --package=exporter -- path/to/file.swf path/to/screenshots --frames 5
Structure
core - core emulator and common code
swf - SWF and ActionScript parser
desktop - desktop client (uses wgpu-rs)
web - web client and browser extension (uses wasm-bindgen)
render - various rendering backends for both desktop and web
video - video decoding backends
flv - Flash Video decoder
wstr - a Flash-compatible implementation of strings
scanner - a utility to bulk parse SWF files
exporter - a utility to generate PNG screenshots of a SWF file
Sponsors
You can support the development of Ruffle via GitHub Sponsors. Your sponsorship will help to ensure the accessibility of Flash content for the future. Thank you!
Sincere thanks to the diamond level sponsors of Ruffle:
Ruffle depends on third-party libraries under compatible licenses. See LICENSE.md for full information.
Contributing
Ruffle welcomes contribution from everyone. See CONTRIBUTING.md for help getting started.
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.
The entire Ruffle community, including the chat room and GitHub project, is expected to abide by the Code of Conduct that the Rust project itself follows.