A teenager got Half-Life 2 running in Safari before Valve ever did
On an Apple Silicon Mac, Valve's own copy of Half-Life 2 won't launch — macOS dropped 32-bit support and the game was never rebuilt. A high schooler's web port boots it anyway, inside a browser tab.
The port leans on a rendering mode called ToGLES: the Source engine emits OpenGL ES calls meant for Android, and Emscripten translates them into WebGL2. It started from a friend's Portal port, itself a fork of a Source engine codebase that traces back to the 2020 leak.
It also exposes what's missing. James Darpinian, ex-Meta and Google, counted the absent shaders: G-Man has no eyes, nobody's lips move, Breen's video screens are blank.
And it runs on hardware Valve abandoned, which is most of the appeal.
Half-Life 2 boots in a browser tab, three months of one teenager's work

Open hl2.slqnt.dev, wait through a "Downloading…" bar, and you are standing on the train into City 17, rendered by Safari or Chrome with no install and no Steam. The author goes by slqnt, is a high schooler, spent roughly three months on it, and shipped it free.
The engine trick is a rendering path called ToGLES. Source normally talks to desktop OpenGL or DirectX. ToGLES makes it emit OpenGL ES calls (the flavor meant for Android phones), and Emscripten (a C++-to-WebAssembly compiler) translates those into the WebGL2 a browser can run. slqnt didn't start from a blank file. A friend pointed him at a Portal web port by a dev called weliveinhell, which was itself a fork of nillerusr/source-engine, a community-maintained Source tree whose lineage runs back to the 2020 Source engine code leak. Saves had to be rewired onto Emscripten's virtual filesystem; crouch got remapped to C because Ctrl kept firing browser shortcuts; medkits and batteries broke and had to be fixed.
The full retelling lives in the author's write-up.
The bit that makes it more than a demo: it runs where the real game can't
The loudest reaction in the thread wasn't about the rendering. It was about the absurdity of where it works.
"I am not able to play HL2 on Steam because macOS no longer has 32-bit support and Valve never compiled it for 64-bit, but here we are, it's playable on the same OS in the browser."
That is the real hook. Valve's native Mac build is a 32-bit binary macOS will no longer execute, and there is no Apple Silicon version. The browser port sidesteps all of it. Another reader put the wish plainly:
"I just wish Valve could add official macos-arm64 builds of the various hl2 games on Steam :-/"
The inversion stung enough to produce a small essay. One developer asked how a complete virtual machine compiled into a browser could possibly be easier to deliver than a native port:
"How is it that this came to my Apple-Silicon Mac before Valve could do it natively? … If people spent 10% of the effort on native applications that they spent on web applications, we would be so much further advanced."
The counter-read came from a different angle: portability as un-censorability. Once a full game, or a whole OS under QEMU, collapses into a single web page, it can be hosted on anything from a Raspberry Pi Zero to a phone, and "it doesn't matter what is blocked."
What's actually broken, from someone who renders Source for a living
The sharpest technical note came from James Darpinian, by his own bio previously at Physical Intelligence, Meta, Google and Microsoft, and the maker of the in-browser graphics explorer noclip.website. He didn't applaud; he itemized:
"…this web port (which seems to be missing many shaders including character eyes)."
His own site, he noted, renders Half-Life 2 levels with more accurate shading than the playable port: running the engine and rendering it correctly are different problems. Players kept hitting the same gaps independently. One who's finished the opening dozens of times catalogued them:
"The characters' eyes are all wrong. G-man had no eyes at all. And the giant screen with Breen on it was missing."
The same trio of bugs (eyeless NPCs, frozen lips, blank in-world video screens) showed up from an M4 iPad Pro, an old Intel MacBook, and a non-gaming laptop, alongside reports of hard crashes in the city square and the canals. What nobody could quite believe was the floor: the intro renders at playable speed on hardware that has no business running a 2004 AAA shooter. For players who left gaming around the Half-Life 2 era, the tab is still, somehow, state of the art.
Get breakdowns like this every day
The top Hacker News stories, unpacked — by email, Telegram, or RSS.
An 'AI-first, open source' notes app that can't talk to a local LLM
Inkeep shipped OpenKnowledge as a GPL-3 Obsidian rival whose whole pitch is AI collaboration. The catch the thread found fast: it only drives Claude, Codex, and Cursor desktop apps, with no way to plug in a model you run yourself.