Skip to content
mplsllcPublic

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

Stars

288 stars

Watchers

5 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Support MacSurf

Support on Ko-fi   Support on Patreon   Sponsor on GitHub

Thanks to our supporters:
Ko-Fi: Chris Marks, Rogue, Turuun, kilgeist
Patreon: Mack Chamberlain, Lucas, Joseph Mulvaney, Shlooom, Bigdipper


Note

2.3 "OPEN TABS" is the largest MacSurf release since 2.0. Tabs bring independent page, scroll, history, rendering and JavaScript state into one native Mac window. The release also expands dynamic-page support, browser APIs, CSS and image/SVG handling, native managers, networking and security. Read the 2.3 release notes.

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, and Open Transport. It speaks TLS 1.3 straight to the modern web through a BearSSL-based native TLS stack and runs modern JavaScript through a QuickJS engine adapted 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 release →

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 release →

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.

Built for classic Macs

ComponentLanguagePurpose
Browser engine C (C89, CW8) NetSurf-based browser with a native Mac OS frontend: Carbon for the interface, QuickDraw for drawing, Open Transport for networking, and an on-device JavaScript engine.
Native TLS C (CW8) Native HTTPS with TLS 1.3 and TLS 1.2 fallback, using BearSSL and an embedded Mozilla CA bundle.
JavaScript C (CW8) QuickJS-based modern JavaScript on Classic Mac OS and PowerPC.

MacSurf 2.3 capabilities

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 →

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

The 2.3 release strengthens page and tab lifetimes, dynamic DOM reconstruction, late asynchronous callbacks, cached resources, and TLS record checks. MacSurf's built-in diagnostics summarize navigation, requests, script activity, layout, and paint directly on the Mac.

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 →

Source and licensing

Version-specific source archives and SHA-256 checksums are attached to MacSurf releases. Start with the source archive attached to the release you downloaded: MacSurf 2.3 source archive (SHA-256, release notes). See LICENSE and the notices included with each source package.


Native HTTPS · On-device JavaScript · 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

Stars

288 stars

Watchers

5 watching

Forks

Releases

Used by

Contributors