Flash Game CodesThe format · the portals · the work · the archive

What the archivist found when the plug-in stopped

Ruffle Re-Implements the Flash Player in Rust and Runs in a Browser Without a Plug-In

An open-source emulator written in Rust and compiled to WebAssembly brings Flash content back to the browser — without Adobe's plug-in, without NPAPI, and without a kill-switch.

Reference pieceThe Archive · section 06

Screenshot of the Ruffle web player showing its orange logo on a blue demo screen

What Ruffle Is and How It Works

Ruffle is an open-source Flash Player re-implementation written in the Rust programming language. Where the original Flash Player was a browser plug-in distributed as a native binary — dependent on NPAPI or its successors and ultimately subject to Adobe's January 2021 kill-switch — Ruffle compiles to WebAssembly, the binary instruction format that modern browsers execute directly in a sandboxed environment. The result is a player that loads Flash SWF files inside an ordinary <script> tag, requiring no plug-in installation and no special browser configuration from the user.

Flashpoint launcher window on a modern monitor, adult archivist seated at the desk

The project is community-maintained and hosted on GitHub, where contributors work in Rust on a renderer that supports both software and GPU-accelerated paths. Ruffle can be embedded in a web page with a small JavaScript shim, or run as a standalone desktop application. The architecture deliberately mirrors the original player's internal structure — parsing the SWF tag-by-tag format, managing the frame-based timeline, resolving symbols from the library — so that existing SWF files are handled without modification.

Macromedia Flash software retail box and printed manual on a shelf, photographed straight on

ActionScript Compatibility: What 'Works' Actually Means

Ruffle's compatibility story divides cleanly along ActionScript generations. ActionScript 1 and ActionScript 2 support is substantially complete: the prototype-based scripting that powered the majority of Flash games published before roughly 2008 runs reliably in Ruffle, covering a very large share of the archived catalogue. This is why Ruffle was viable for deployment by major institutions before the project reached full parity.

ActionScript 3, the compiled, strongly-typed language introduced with Flash Player 9 and executed on the AVM2 virtual machine, is a different matter. AS3 support in Ruffle is active and improving but incomplete as of mid-2025. Many AS3 titles run correctly; others encounter missing API implementations, incorrect rendering of display-list operations, or audio synchronisation issues. Games that rely on Stage3D — Adobe's GPU-accelerated 3D API added in Flash Player 11 — are largely unsupported. So are titles with significant server-side dependencies: multiplayer games, leaderboard integrations, and anything whose ActionScript makes calls to a backend that no longer exists. Ruffle can re-implement the player; it cannot resurrect a decommissioned server.

Content that Ruffle cannot yet handle is flagged or withheld rather than served incorrectly.

The practical result is that a SWF file loading in Ruffle may behave correctly, behave incorrectly in ways that are immediately visible, or fail silently. The Ruffle team maintains a compatibility tracker that logs known issues against specific titles and API surfaces, which gives archivists and developers a working picture of what the emulator can and cannot guarantee.

Adoption: Newgrounds and the Internet Archive

The two most consequential deployments of Ruffle are Newgrounds and the Internet Archive. Newgrounds, which hosts one of the largest repositories of Flash content ever assembled, integrated Ruffle as its default playback mechanism, allowing visitors to load games and animations through the browser without Flash Player. Given that Newgrounds published and preserved tens of thousands of SWF files across its history, the integration gave Ruffle an immediate and demanding real-world test bed.

Where this sits

Flashpoint's 100,000-entry library, Ruffle's Rust re-implementation, the Internet Archive's emulated collection, and what was genuinely lost.

Compatibility at a glance

ActionScript 1 and 2substantially supported; covers most pre-2008 Flash games and animations
ActionScript 3 / AVM2partial and improving; many titles work, but API gaps remain (as of mid-2025)
Stage3Dlargely unsupported
Server-dependent content (multiplayer, live leaderboards)not recoverable by emulation alone

The Internet Archive's emulated Flash collection uses Ruffle to serve Flash content directly in the browser as part of its Software Library, placing the emulator inside the Archive's standard Emularity framework alongside other legacy format emulators. Content that Ruffle cannot yet handle is flagged or withheld rather than served incorrectly.

Neither deployment claims complete fidelity. Both accept that a working emulator covering most of the ActionScript 1 and 2 catalogue — which represents the bulk of what the Flash era produced — is a meaningful preservation outcome even before AS3 support reaches parity.