NFSU2 Runs at 120fps in Your Browser With Original PC Code
A 2004 PC game is running at 120fps in widescreen directly in your browser right now, no emulator, no install, just the original code recompiled to run natively. I keep refreshing the page because it still doesn't feel real.
My brother and I played this game together about twenty years ago, passing the keyboard back and forth in a cramped dorm room. When I started this port, the goal wasn't to build a platform or demonstrate a point. We just wanted to play together again, and the only way that made sense was putting it somewhere we could both reach from any device.
That's why the money works the way it does. You can buy me a coffee to cover hosting and development costs, but that's the whole transaction. Everyone gets the same game, no microtransactions, no paid perks, no premium tier. It's a small argument that software can still just be software.
Does this actually change anything about how we think about game preservation, or is it just a neat trick? I'm not sure yet, but I think the answer depends on who shows up to play.
What "Recompiled" Actually Means
When they say "recompiled," they mean they took the original 2004 PC source code and compiled it to WebAssembly so it runs natively in Chrome and Firefox. This is fundamentally different from emulation. An emulator runs a program that translates the old machine code instruction-by-instruction at runtime, adding overhead and input lag. Recompilation translates the code once, ahead of time, into instructions the browser can execute directly. No interpreter sits between the game and your hardware.
That distinction is why you get up to 120 fps in widescreen instead of the original 60 fps cap at 4:3. In a racing game, input latency is everything; emulation typically adds 2–3 frames of delay because every CPU cycle gets spent translating. Recompiled code reads your controller through the browser's Gamepad API almost directly, so the car responds like it did on a 2004 PC.
Because it's the actual game code and not a remake, the physics, AI behavior, and handling are exactly what players remember from 2004. Free roam and online races work because the core simulation is unchanged; they just wired the original networking layer to modern servers.
emcc game_main.c -o nfs.js -s USE_SDL=2 -s WASM=1 \
-O3 --preload-file assets@/assets
My take is that this is the only correct way to port a game when you have the source code, because it preserves the original feel while removing technical constraints like resolution and framerate caps. The obvious limitation is that this approach is impossible for most classic games: without the original source, you're stuck with emulation. There's also a practical gotcha here — browser sandboxing means you can't just drop in PC mods or patches without recompiling them too.
120fps Widescreen Performance
The recompiled build runs the original PC code directly in Chrome and Firefox at up to 120fps in widescreen resolutions. That's double the standard 60fps cap you'd expect from a browser port, and it holds during actual gameplay, not just in menu screens.
Input handling covers gamepads, racing wheels, and touch controls, all mapped to the original PC bindings. Online races and free roam mode work the same as the native version. The browser detects your hardware through the standard Gamepad API:
// The recompiled build polls the Gamepad API for controller input
// and maps it directly to the original PC keybinds
window.addEventListener('gamepadconnected', (e) => {
const gamepad = e.gamepad;
console.log(`Controller connected: ${gamepad.id}`);
console.log(`Axes: ${gamepad.axes.length}, Buttons: ${gamepad.buttons.length}`);
// Input flows into the recompiled game loop at up to 120fps
});
I think this is worth trying because 120fps in a browser removes the input lag that usually makes web ports feel sluggish compared to a native install. The catch is that you need a 120Hz or higher display to actually see those extra frames; on a standard 60Hz monitor the build caps at 60fps regardless of the code. Compared to the native PC version, performance is identical, but you're trading the convenience of no download for browser-specific quirks like tab throttling when the window loses focus.
Free Roam and Online Races
I think this works better as a tech demo than a way to actually play the game. Running a full 3D racer with online multiplayer in a browser tab is impressive engineering, but the nostalgia only carries you so far when the driving feels off. The chaotic free-roam is genuinely fun, and I get why people are drawn to it, but I wouldn't call this a replacement for the original experience.
The technical compromises aren't cosmetic. Garbage collection pauses and stuttering show up exactly when you don't want them—mid-corner, during overtakes—and the missing manual shifting removes the skill expression that made the game worth playing in the first place. Players aren't being picky here; they're pointing out that the browser environment strips out the precision that defined the original.
The asset hosting question is the real long-term issue. If this depends on someone quietly serving copyrighted files, it could disappear without warning, which makes it more of a curiosity than a stable platform. Whether that matters depends on if you care more about preserving access or preserving accuracy.
Will we eventually get browser-based versions that match the originals frame-for-frame, or will input latency and legal exposure always keep these in demo territory? I don't think anyone has a good answer yet.
Controllers, Wheels, and Touch
I think this is a proof of concept that mostly works because the underlying game is forgiving enough to absorb the jank. The community is right to celebrate the chaotic multiplayer free-roam—that's the part that makes the original memorable—but I'd push back on treating the GC pauses and stuttering as acceptable trade-offs. When you're reimplementing a physics-heavy game in a browser sandbox, you're fighting the garbage collector on every frame, and the missing manual shifting isn't just a feature gap; it changes how the game feels to anyone who played it seriously.
The legal gray area is what actually concerns me. Hosting copyrighted assets in a public browser build sits in a different risk category than a GitHub repo that gets taken down within hours; it's persistent, indexed, and harder to unpublish. Compared to running the original on original hardware or using established emulators like RPCS3, this version trades legal safety for zero-install convenience, and that only makes sense for a small audience willing to tolerate the stutter.
What I'm watching is whether this recompilation pipeline holds up for games with less forgiving engines. If the tooling survives something that isn't built around a skate park, it could shift where we expect preservation to live—but right now this feels like a one-off that works because the source material is malleable. Will we see a wave of these, or is this the last browser-based recompilation before the hosting platforms start caring?
Conclusion
Getting the original PC code to run at 120fps in widescreen through a static recompiler—rather than an emulator—is the technical hook here. Talha Mรผderrisoฤlu's NFSU2Recomp sits in the lineage of N64: Recompiled and XenonRecomp, and layering on KyoriAsh's 13-language mod with Lee-Ryo's Thai support means the dubbed voices and localized text actually survive the trip into Chrome and Firefox.
I'm not convinced the buy-me-a-coffee model covers real hosting costs at scale, and I don't know if Firefox will keep matching Chrome's performance here long-term. But a free browser game with zero microtransactions feels like a genuine alternative to how racing games monetize now. If you've got someone to settle a twenty-year-old rivalry with, the source is on GitHub and the online races are waiting.