Best viewed in Nordstjernen

Northstar is the free-software web browser of the Nordstjernen project

Northstar Browser

Northstar is a minimalist web browser written from scratch in C. One window, one page, one process — about 188,000 lines of original C, small enough for one person to read and audit end-to-end. It carries no upstream browser engine: no Gecko, no WebKit, no Blink. It is free software under the GNU General Public License, version 3 or later, and it runs on Linux, macOS and Windows — on Windows from the Microsoft Store.

Northstar Browser version 1.0.20 released! Video is now decoded by the operating system by default — Media Foundation on Windows, GStreamer on Linux — fonts created with the FontFace API load, YouTube and Media Source fixes come over from Nordstjernen Sol, and security fixes cover module-import CORS, security headers on cached responses, HttpOnly cookies written from script and CSP sandboxing of frames. More info here.

Northstar 1.0.20 playing a YouTube video, with the mix playlist beside it, below the classic labelled toolbar
Northstar 1.0.20 playing a YouTube video — one window, one page, the classic labelled toolbar, with the video decoded by Windows Media Foundation. more screenshots »

Free software. Licensed under the GNU GPL, version 3 or later — use it, read it, change it, share it. The whole engine is in the repository at github.com/nordstjernen-web/nordstjernen-luna-browser.

Written from scratch. Every behaviour is implemented in the project's own C — the parser glue, the cascade and value parsing, layout, paint, and the DOM and CSSOM bindings. Compliance is not inherited from an upstream engine; it is measured, section by section, against the specification text.

One window, one page, one process. All rendering happens in a single compact process, prioritizing auditability over the isolation a multi-process browser buys. On Linux it runs behind a Landlock filesystem sandbox (plus PR_SET_NO_NEW_PRIVS) with a default-deny seccomp syscall filter, in both GUI and headless modes. There is no JIT.

A family of browsers. Northstar shares its hand-written engine with Nordstjernen, the flagship multi-tab browser, and with Southstar, the Rust version, which started from the Nordstjernen codebase, was ported to Rust module by module, and reached 1.0.0 as an all-Rust browser.

Private by construction. No telemetry, no update pings, and no AI assistant or AI-style web APIs. Safe browsing checks a top-level navigation's host against a local SHA-256 blocklist before it is fetched — the check never leaves your machine. Cookies, storage and the cache are partitioned by origin.

what it does

what it leaves out

Northstar is deliberately smaller than Nordstjernen, the flagship multi-tab browser built from the same engine. It has no multi-window or multi-tab browsing, no per-tab renderer processes, no WebGL or WebGPU, no embedded PDF viewer, and no AI-style web APIs.

Video codecs come from optional system libraries: without libdav1d, libvpx or OpenH264 at build time, the matching streams do not play, and a file that is none of the supported formats falls back to the MPEG-1 path. Only Cisco’s prebuilt OpenH264 binaries carry Cisco’s H.264 patent licence, so -Dh264=disabled drops H.264 where that matters.

Where the engine stands against the HTML and CSS specifications — per-area web-platform-tests scores, how to reproduce them, and the known structural gaps — is recorded in docs/compliance.md.

specifications

Technical specifications of Northstar 1.0.20
version 1.0.20 — released 1 November 2026 · release notes
character minimalist GPL edition of the Nordstjernen project · single window, single page, single process
language C · ~188 kLOC original, excluding the vendored WAMR, Wuffs and audio decoders · GTK 4 shell · fully auditable
html / css lexbor v3.0.1 (parser, WHATWG URL, selectors) · the engine's own cascade and layout
javascript quickjs-ng at 9b06171 (after v0.17.0) — bytecode interpreter, no JIT · or the original QuickJS with -Djs_engine=quickjs
text ns-pango — a Pango fork with a process-wide shaping cache · HarfBuzz · FriBidi
webassembly WAMR (vendored subset) — fast interpreter behind the WebAssembly JS API, no JIT
images Wuffs v0.4 (PNG / APNG / GIF / BMP / JPEG / WebP) · AVIF via libavif (optional) · SVG rendered in-engine
media MPEG-1 <video> via pl_mpeg · Media Source Extensions and progressive MP4/WebM — AV1 (libdav1d), VP9 (libvpx), H.264 (OpenH264, optional), AAC-LC and Opus · audio — MP3, MP2, AAC, Ogg Opus/Vorbis · Web Audio graph
printing Ctrl+P through GtkPrintOperation — CUPS, Win32 or Cocoa · @media print, @page sheet sizes and margins, and the break-* properties · --dump=print:FILE to a multi-page PDF
extensions WebExtensions — local extensions with content scripts, packaged resources, storage and runtime messaging
webgl — (no WebGL, no WebGPU)
ai none — no AI assistant and no AI-style web APIs, by design
ui GTK 4 (≥ 4.14; ≥ 4.22.1 on Windows) · dark theme follows the desktop
network libcurl ≥ 8.5 · HTTP/2 · HTTP/3 through the alt-svc cache when the linked libcurl provides it · request deduplication and reusable preloads · Vary-aware caching
hardening Landlock filesystem sandbox + PR_SET_NO_NEW_PRIVS · default-deny seccomp filter on Linux, in GUI and headless modes · no JIT
privacy no telemetry · no update pings · HSTS · CSP · SRI · partitioned cookies and storage · on-device safe browsing against a local blocklist
standards behaviour measured against the spec text, section by section · web-platform-tests run through headless mode: 46,653 of 68,725 subtests across 37 css/ areas (September 2026) · see docs/compliance.md
platforms linux (primary) · macos · windows (Microsoft Store)
license GNU GPL v3 or later — free software
source github.com/nordstjernen-web/nordstjernen-luna-browser

See the side-by-side comparison of Nordstjernen and Northstar on the home page.

download

Latest release: Northstar 1.0.20 — released 1 November 2026, as source and on the Microsoft Store. full release notes »

The most recent prebuilt Linux and Windows zips are from Northstar 1.0.7 — released 8 August 2026. read the announcement » · full release notes »

Northstar downloads
Source (1.0.20) 1.0.20.tar.gz · 1.0.20.zip
Windows Microsoft Store
Windows (1.0.7) northstar-1.0.7-windows-x86_64.zip — self-contained, no installer
Linux, portable (1.0.7) northstar-1.0.7-linux-x86_64.zip
Linux AppImage (1.0.7) northstar-1.0.7-x86_64.AppImage — chmod +x and run
Debian / Ubuntu (1.0.7) northstar_1.0.7_amd64.deb
macOS build from source with meson — see build and run below
Source (1.0.7) 1.0.7.tar.gz · 1.0.7.zip
All releases github.com/nordstjernen-web/nordstjernen-luna-browser/releases

The Windows build needs no installer and no MSYS2 — extract it anywhere and run northstar.exe. Windows marks anything downloaded from the internet as blocked, so before extracting, right-click the .zip, choose Properties, tick Unblock at the bottom of the General tab and press OK. Doing it on the archive first saves repeating it on northstar.exe afterwards, since the mark is copied to every file extracted from a blocked archive.

Download Northstar 1.0.20 »

build and run

Linux is the primary platform. On Debian or Ubuntu, install the development packages and build with meson:

dependencies sudo apt install build-essential pkg-config meson ninja-build cmake libgtk-4-dev libcurl4-openssl-dev libssl-dev libuchardet-dev libharfbuzz-dev libfribidi-dev libcairo2-dev libfontconfig-dev libfreetype-dev libpsl-dev libsqlite3-dev libseccomp-dev libsdl2-dev zlib1g-dev
build meson setup builddir · meson compile -C builddir
run ./builddir/src/gtk/northstar
smoke test ./scripts/dev.sh build · ./scripts/dev.sh smoke — renders deterministic local fixtures through the headless engine and compares them with the checked-in baselines
headless ./builddir/src/gtk/northstar --headless --dump=text about:start

Meson feature options include -Davif=disabled, -Daudio=disabled, -Dh264=disabled, -Dwasm=disabled and -Dgtk=disabled for smaller or engine-only builds. WAMR, Wuffs, pl_mpeg and minimp3 are vendored in-tree. lexbor and quickjs-ng take a system copy whenever the build finds one new enough and fall back to a pinned upstream subproject; ns-pango is always the subproject, because its renamed symbols are what let it sit beside the system Pango that GTK loads. Full instructions are in the README and docs/building.md.

news

« back to nordstjernen.org