
New releaseSep 20, 2026
A modern web browser for Classic Mac OS 9 PowerPC. Real CSS3, ES5 JavaScript, native HTTPS. Built with CodeWarrior on the Carbon API.
The modern web, on a 25-year-old Mac.
A native browser for the Carbon era, Mac OS 8.6 through Mac OS X 10.6: real CSS, modern JavaScript, and HTTPS on the Mac itself. No proxy, no second machine.
MacSurf 2.0.5 on a Power Mac G3 iMac, rendering hackaday.com at full desktop width over native HTTPS.
🆓 Free monthly stableA tested build on macsurf.org, free for everyone, with real hardware testing behind it. Latest stable: MacSurf 2.3 "OPEN TABS" |
⭐ Weekly, for supportersIn-progress builds land in Beta-Box every week, ahead of every stable release, with dev notes along the way. |
Every project stays free as source. Build it yourself and you never need Beta-Box. You are paying for the build and the cadence, not for access.
Support development
Follow along
Thanks to our supporters:
Ko-Fi: Chris Marks, Rogue, Turuun, kilgeist
Patreon: Mack Chamberlain, Lucas, Joseph Mulvaney, Shlooom
[!NOTE] 2.3 "OPEN TABS" is the largest MacSurf release since 2.0. Tabs are finally enabled, with independent page, scroll, history, rendering and JavaScript state inside one native Mac window. Underneath that is a major dynamic-page/lifecycle rewrite, a much larger browser API surface, more CSS and image/SVG support, rebuilt native managers, stronger networking and security, and a long hardware-driven stability campaign. MacSurf remains honest, in-progress software; some very heavy modern applications still expose layout and API gaps. See the 2.3 release notes and docs/status.md for details.
The web outgrew Classic Mac OS twenty years ago, and modern HTTPS finished the job around 2016. Pull a G3 or G4 out of the closet today and it can barely reach a single live site.
MacSurf fixes that on the machine itself, with no screenshot proxy and no remote-terminal trick. It is a native browser built with the tools that shipped on the platform: CodeWarrior, Carbon, QuickDraw, Open Transport. It speaks TLS 1.3 straight to the modern web through macTLS, a BearSSL-based stack baked into the binary with the full Mozilla CA bundle, and runs modern JavaScript through macQJS, a QuickJS port for Mac OS 9.
As far as we can tell, it is the first serious NetSurf port to Classic Mac OS, and the first Mac OS 9 browser with native CSS Grid, CSS custom properties, and an on-device modern JavaScript engine.
Every shot below is a live site, captured on a Power Mac G3 running Mac OS 9.2.2 with MacSurf 2.0.5. They are kept here as a hardware baseline; MacSurf 2.3 has moved substantially beyond the browser shown in these images.
Tabs. One native Mac window can now host multiple independent browser pages. Command-T opens a tab; Command-W closes the current tab. Background tabs retain their own JavaScript realm, title, URL, content and scroll state without taking over the foreground chrome.
The release also brings a major dynamic-page and JavaScript compatibility pass; deeper DOM reconstruction safety; CSS math, sizing, Grid, variables and paint improvements; native WebP and stronger SVG; a rebuilt Downloads window; improved Preferences, Bookmarks and History; tighter HTTPS/security behavior; and a large body of crash- and lifetime fixes.
MacSurf 2.3 supports Mac OS 8.6 through Mac OS X 10.6. On Intel Macs, the PowerPC build runs under Rosetta where available.
The headline is hackaday.com rendering at full desktop width (shown above): correct type, article cards, and images in place.
Under it: text is measured in real device pixels (author font-size no longer draws 25% too small), a large modern-CSS pass (justified text, soft hyphens, logical properties, box-alignment shorthands, grid auto-sizing), a more capable JavaScript engine (real fetch/XHR, resolving Promise chains, DOM traversal, document.cookie), and tracker/ad-network blocking. Full 2.0.5 notes →
| Component | Language | Purpose |
|---|---|---|
browser/ | C (C89, CW8) | NetSurf fork with a macos9 frontend. Carbon for the UI, QuickDraw for drawing, Open Transport for networking, macQJS for JavaScript. |
macTLSsibling repo | C (CW8) | Native TLS 1.3 (1.2 fallback) for OS 9: HTTPS straight from the Mac. BearSSL underneath, full Mozilla CA bundle baked in. |
macQJSsibling repo | C (CW8) | A QuickJS port for Classic Mac OS: modern ES2023 JavaScript on PowerPC. |
|
Rendering & CSS
|
JavaScript, macQJS (QuickJS / ES2023)
Networking & security
Browser chrome
|
MacSurf 2.3 supports Mac OS 8.6 through Mac OS X 10.6 Snow Leopard.
A large part of 2.3 is work you should not have to notice: stronger page/runtime ownership, safer DOM reconstruction, guarded late callbacks, cache/content lifetime fixes, image reuse across reconvert, TLS bounds checks, and tab isolation.
MacSurf also now has a much deeper built-in diagnostic system for correlating navigation, documents, frames, network requests, JavaScript tasks, timers, mutations, XHR/fetch, Promise rejections, layout, paint and compatibility gaps. The final Tiger multi-tab stress campaign completed 20/20 cycles with zero crashes and zero hangs, followed by testing on Mac OS 9.2.2 hardware.
MacSurf 2.3 "OPEN TABS" (2026-09-19). See what changed in the full 2.3 release notes →.
Want the builds between releases? Weekly in-progress builds land in Beta-Box for supporters, ahead of every stable release.
MacSurf builds on Mac OS 9 with CodeWarrior 8 Pro (8.3 update). The source is cross-compile-clean against Retro68 PowerPC GCC, which we use for fast Linux-side syntax checks.
Native HTTPS via macTLS · JavaScript via macQJS · built on NetSurf · intro video