Skip to content
codingncaffeine edited this page Nov 6, 2026 · 8 revisions

Sashfold

A web browser written from scratch, for Windows, Linux and macOS.

Sashfold is a browser for the whole web and an embeddable engine. It is early, it is public, and it measures itself on public yardsticks. Two rules shape it, in this order. The bar: every feature is to be at least what the shipping browsers offer, and better where it can be — where Sashfold is short of that today the work is not done yet, and nothing was decided against. The pledge: whatever can be written from scratch is written in the repository, and the binary links only the operating system and the language runtime; where a thing cannot be written here, Sashfold uses what the platform provides, as every browser does. Both are on The Pledge.

This wiki is the long form. The README stays short; the details live on the pages below.

Getting started

  • Building — the toolchain, the two compiler lanes, and the checks that gate a build
  • Running Sashfold — the window, and every command-line mode with its flags
  • Themes — the window's chrome is drawn from a JSON file of tokens, reloaded while it is open

What works today

  • Parsing — the WHATWG HTML parser and character encodings
  • Styling — CSS syntax, selectors, the cascade, stylesheets, web fonts, colors, generated content
  • Layout — block and inline layout, floats, flexbox, positioning, inline-block, replaced boxes, table cells today
  • Painting and text — the painter, TrueType parsing and rasterization, Sashfold Mono, images
  • Networking — URLs, HTTP/1.1, TLS, cookies, the cache, downloads, the user agent string
  • The shell — tabs, history, forms, selection, find, reader mode, link hints, devtools
  • Not written yet — what is still short of the bar: the honest list of work owed

Measured

  • Measurements — html5lib, the WPT URL tests, the WPT CSS reference tests, test262, Acid1, timings
  • The Sashfold 100 — a hundred pages of the live web, rendered every night and published
  • Finding the YouTube stop — how a YouTube page that stopped at 44 seconds was fixed without reading the site's checking code

Design decisions

  • The Pledge — the bar every feature is held to, what is written from scratch, the boundary drawn exactly, and how it is enforced
  • Why C++ — the language choice, argued
  • Architecture — the pipeline from bytes to pixels, the seam between the engine and each operating system, and the JavaScript engine
  • Scripting — how a page's scripts run, what they can reach, and what is not written
  • Security defaults — what Sashfold will never do, and what it does by default

Testing and tools

  • Testing — unit tests, reference tests and their goldens, shell scripts, the WPT runner, fuzzers, CI
  • Scripting the shell — the --script command reference

Clone this wiki locally