Skip to content

mplsllc/macsurf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,090 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MacSurf

The modern web, on a 25-year-old Mac.

A native web browser for Classic Mac OS 9 on PowerPC — real CSS3, modern JavaScript, and HTTPS, running on a G3 iMac. No proxy, no second machine.

MacSurf 1.68 running on a Power Macintosh G3 iMac
MacSurf 1.68 on a Power Mac G3 iMac, rendering home.macsurf.org over native HTTPS.


MacSurf is a full-time project. If it brought your old Mac back to the web, a few dollars keeps development going — and you'll get the dev logs.

Support on Ko-Fi    Support on Patreon

Thanks to our supporters: Shlooom (Patreon) · kilgeist (Ko-Fi)


Note

1.68 "macQJS" runs a real modern JavaScript engine, speaks TLS 1.3 natively, keeps you logged in, and renders full desktop forums on a 233 MHz G3. It's at its best on hand-built pages, retro sites, and forums. Very heavy modern apps — GitHub, video, React-heavy SPAs — still don't render. This is honest, in-progress software. Got a G3 or G4? Load it up and tell us what breaks. See docs/status.md for the current punch list.

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 — no screenshot proxy, no remote-terminal trick. It's 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's 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.

68kmla.org forum
68kmla.org
A full XenForo forum — logged in, full-width, posting replies.
Macintosh Garden
macintoshgarden.org
The classic Mac abandonware library.
Macintosh Repository
macintoshrepository.org
Thumbnails, tables, and all.
Mac Hut
machut.net
Vintage Mac archives, over native HTTPS.
Lobsters thread about MacSurf
lobste.rs
Reading its own thread — nested comments and all.
DuckDuckGo search
DuckDuckGo
Search that works.
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

  • Full NetSurf fetch → parse → cascade → layout → plot
  • Native libcss with var(), ~150 properties consumed in layout
  • Flexbox, CSS Grid, gradients, border-radius, box-shadow, opacity, transforms, z-index stacking
  • PNG (real alpha), GIF, JPEG, BMP, TIFF
  • Downloadable web-font icon glyphs

Full status →

JavaScript — macQJS (QuickJS, ES2023)

  • let/const, arrows, classes, template literals, Promises, generators, modern regex
  • Runs real site bundles on-device

Networking

  • HTTP/1.1: chunked, keep-alive, 3xx follow, connection pooling
  • HTTPS via macTLS — TLS 1.3, 1.2 fallback, full CA bundle
  • Cookies and logins that persist

Chrome

  • Address bar, back / forward / reload / home, bookmarks menu, downloads manager
  • Text input: caret, selection, cut / copy / paste, Tab between fields
  • Multi-window, smooth scroll bar, keyboard scrolling

Download

MacSurf 1.68 "macQJS" (2026-07-07) — the JavaScript engine was replaced (Duktape ES5 → macQJS / QuickJS ES2023), plus working text input, persistent logins, a bookmarks menu and downloads manager, the split-scrollbar render fix, downloadable web-font icons, and a big performance pass (near-instant startup, image / font disk cache). Named for 68kmla.org, the community that drove the cycle. Full release notes →

  • Download the .sit → — expand with StuffIt Expander on Mac OS 9.1+ (CarbonLib 1.5+) and double-click. No installer.
  • Already on a Mac OS 9 machine? Grab it from the plain-HTTP macsurf.org — GitHub doesn't render on-device yet.
  • All releases →

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

License

Code of conduct

Contributing

Security policy

Stars

222 stars

Watchers

6 watching

Forks

Sponsor this project

Contributors