This project is developed with the assistance of an LLM
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.
|
A tested build on macsurf.org, free for everyone, with real hardware testing behind it. Latest stable: MacSurf 2.3 "OPEN TABS" |
In-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 β
Earlier shots: the same sites on previous builds
![]() 68kmla.org |
![]() macintoshgarden.org |
![]() macintoshrepository.org |
![]() machut.net |
![]() lobste.rs |
![]() DuckDuckGo |
How it got here: a couple of early milestones
![]() v0.2: JavaScript on Mac OS 9 The first JS-bearing page evaluating live, on-device. |
![]() CSS Grid Real Grid layout: spans, full-row heroes, auto-wrap. |
| 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.
- PowerPC Macs run MacSurf directly.
- Intel Macs can run the PowerPC build through Rosetta where available.
- Mac OS 9 remains the primary target and the environment most heavily tested on original hardware.
- Recommended memory: 128 MB minimum, 256 MB recommended, 384 MB for the heaviest JavaScript sites.
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 β.
- Download MacSurf β: expand with StuffIt Expander and double-click. MacSurf supports Mac OS 8.6 through Mac OS X 10.6; on Intel Macs the PowerPC build runs under Rosetta where available. No installer.
- Already on a Mac OS 9 machine? Grab it from the plain-HTTP macsurf.org, since GitHub does not render on-device yet.
- All releases β
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
















