Skip to content

Latest commit

Β 

History

2,088 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

This project is developed with the assistance of an LLM

MacSurf

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 rendering hackaday.com on a Power Macintosh G3 iMac
MacSurf 2.0.5 on a Power Mac G3 iMac, rendering hackaday.com at full desktop width over native HTTPS.


πŸ†“ Free monthly stable

A tested build on macsurf.org, free for everyone, with real hardware testing behind it.

Latest stable: MacSurf 2.3 "OPEN TABS"

⭐ Weekly, for supporters

In-progress builds land in Beta-Box every week, ahead of every stable release, with dev notes along the way.

Become a supporter β†’

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

Support on Ko-fi Β  Support on Patreon Β  Sponsor on GitHub

Follow along

Join our Discord Β  Follow on Bluesky

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.

Why this exists

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.

Real sites, on real hardware

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.

hackaday.com
hackaday.com
A modern, JavaScript-heavy news site at full desktop width.
68kmla.org forum
68kmla.org
A full XenForo forum: logged in, full-width, correct text size.
macintoshgarden.org
macintoshgarden.org
Image-heavy and fully styled, over native HTTPS.
Hacker News
news.ycombinator.com
Hacker News: login and front page, no phantom boxes.

New in 2.3

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.

Full 2.3 notes β†’

New in 2.0.5

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 β†’

New in 2.0

Type-ahead address bar
Type-ahead address bar
History- and bookmark-backed suggestions as you type.
History manager
History manager
Day-grouped, searchable, clearable. A real window.
Bookmark manager
Bookmark manager
Save, organize, and jump straight from the menu.
Earlier shots: the same sites on previous builds
68kmla.org forum
68kmla.org
Macintosh Garden
macintoshgarden.org
Macintosh Repository
macintoshrepository.org
Mac Hut
machut.net
Lobsters thread about MacSurf
lobste.rs
DuckDuckGo search
DuckDuckGo
How it got here: a couple of early milestones
JavaScript on Mac OS 9
v0.2: JavaScript on Mac OS 9
The first JS-bearing page evaluating live, on-device.
CSS Grid on Mac OS 9
CSS Grid
Real Grid layout: spans, full-row heroes, auto-wrap.

The pieces

ComponentLanguagePurpose
browser/ C (C89, CW8) NetSurf fork with a macos9 frontend. Carbon for the UI, QuickDraw for drawing, Open Transport for networking, macQJS for JavaScript.
macTLS
sibling 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.
macQJS
sibling repo
C (CW8) A QuickJS port for Classic Mac OS: modern ES2023 JavaScript on PowerPC.

What works today

Rendering & CSS

  • Full NetSurf fetch, parse, cascade, layout and QuickDraw paint pipeline
  • CSS custom properties with selector/media scope, specificity, inheritance and deferred var() resolution
  • Flexbox and CSS Grid, including stronger auto-track sizing, minmax(), justify-self, row/column gaps and stretch behavior
  • CSS math and sizing: calc(), min(), max(), clamp(), min/max/fit-content and viewport-relative sizing
  • Gradients, border-radius, box-shadow, opacity, transforms, z-index stacking and improved background clipping/origin
  • PNG, GIF, JPEG, BMP, TIFF and native WebP, including animated WebP machinery
  • Much stronger inline/external SVG: sizing, viewBox, aspect-ratio modes, shapes, transforms, fill/stroke and embedded raster images
  • Downloadable web fonts, including WOFF2/Brotli fixes

Full 2.3 release notes β†’

JavaScript, macQJS (QuickJS / ES2023)

  • Modern language features plus ES modules
  • fetch / XHR, Headers, Request, Response, AbortController / AbortSignal and native cancellation
  • Promises, microtasks, timers, requestAnimationFrame, persistent localStorage and sendBeacon
  • MutationObserver, ResizeObserver and IntersectionObserver
  • Stronger DOM traversal/selectors, cloning/replacement, reflected properties, events and prototype relationships
  • Canvas 2D compatibility surface with native-font measureText()
  • crypto.getRandomValues() and randomUUID()

Networking & security

  • HTTP/1.1: chunked transfer, keep-alive, redirects, pooling, cache revalidation and gzip responses
  • HTTPS via macTLS: TLS 1.3 with TLS 1.2 fallback and Mozilla CA bundle
  • Certificate rejection fails closed; scripted HTTPS requests cannot silently downgrade to HTTP
  • Persistent cookies/logins, tighter referrer handling and tracker blocking

Browser chrome

  • Tabbed browsing with independent page, history, scroll, rendering and JavaScript state
  • Address bar, back / forward / reload / home and type-ahead suggestions
  • Rebuilt Downloads window with progress, speed, ETA, cancel, open and Reveal in Finder
  • Native Preferences, Bookmarks and History managers
  • Text input, selection, clipboard commands, keyboard navigation and native form controls

Supported systems

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.

Stability and diagnostics

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.

Download

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.

Building

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


For Gary & Kaija

About

A modern web browser for Classic Mac OS 9 PowerPC. Real CSS3, ES5 JavaScript, native HTTPS. Built with CodeWarrior on the Carbon API.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

275 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages