Nordstjernen Browser 1.0.22 released!
Today, 31 July 2026, we are pleased to announce the release of Nordstjernen 1.0.22. This release is largely about making real sites lay out and run correctly: lichess.org, chess.com, bbc.com, nrk.no, dn.no, the New York Times and Wikipedia each exposed engine defects that are fixed here. It also brings a faster text layer, a reworked toolbar, and a substantially more capable Android app. Nordstjernen is a web browser, written from scratch in C, focused on supporting the HTML and CSS standards. It runs on Windows, macOS and Linux, with builds for Android, iOS, FreeBSD, NetBSD and the JVM. Nordstjernen is built in Norway.
Nordstjernen Browser version 1.0.22 is available now! Read the full release notes here, or jump straight to the downloads.
It ships alongside Northstar 1.0.6, the GPL-licensed single-process edition of the same engine.
about:start page — the Nordstjernen Navigator splash, over the night side of the earth. more screenshots »what’s new in 1.0.22
- Grid, rebuilt. Items placed through
grid-template-areashonouralign-itemsandalign-selfinstead of sitting at the top of their row. Tracks can be measured in any length unit — a unit the parser could not read used to be dropped, shifting every remaining track one place left. Items can be placed on named lines, sogrid-column: mainresolves.min-contentandmax-contenttracks size to their content rather than stretching likeauto, and a grid container's own intrinsic widths are the sum of its columns rather than the width of its widest item. - Layout and rendering. A single flex line is as tall as its container says. Flex and grid items measure their intrinsic sizes in the font they are actually drawn in. An absolutely positioned box with
width: autogets a real shrink-to-fit width, measured by shaping the text rather than guessed from a character count.inline-block,inline-flexandinline-gridsit on the line's baseline; table cells default tovertical-align: middle; an image is drawn inside its own borders, padding and margin; and a percentage insidemin(),max()andclamp()is measured against the box rather than the viewport. - Hit-testing. Positioned boxes answer the pointer in the layer they paint in, so a fixed high-
z-indexoverlay is hit before the content behind it and a modal dialog in the top layer is tried before the document. An<svg>that paints nothing passes the pointer through, so an overlay of labels no longer swallows clicks. A dialog opened from script renders, and a modal one is centred. - Faster text. Desktop builds shape text through ns-pango, a fork of Pango carried as a meson subproject, which caches finished glyph strings process-wide and font metrics per font description. Pango keeps no cache that outlives a
PangoLayout, so the same bytes were shaped once to measure a run and again to paint it. On a table-heavy page the cache serves 92% of shaping requests and cuts layout time by 24%; a text-heavy page falls 13%. Rendering is byte-identical on both paths. Three further caches were added — unicode break attributes, paragraph items, and shaping keyed on a word rather than a run. - CSS and CSSOM.
prefers-color-schemereports the scheme the desktop is actually using andprefers-reduced-motionfollows the platform setting, so the internal pages gain a dark theme.document.styleSheetsnow includes linked stylesheets with theirhrefand their rules — on nrk.no that went from 13 reachable rules to 1895. The CSSOM rule interfaces carry their real names,insertRule()anddeleteRule()enforce their arguments, and a finished keyframe animation keeps the valueanimation-fill-modesays it should. - JavaScript and web APIs. Mouse and pointer events carry the window they were dispatched in.
AbortSignalandMessagePortare real interface objects. Event-listener objects follow the Web IDL callback-interface algorithm, and checkbox and radio activation follows HTML's legacy pre-activation and canceled-activation steps. Workers get the same JavaScript platform the page does —indexedDB,Headers,Blob,AbortController, the stream types andcaches— and share the storage partition of the page that started them. - Faster regular expressions. Search skips positions that cannot start a match, the way V8's Irregexp does. A failing literal search over 880 KB drops from 5.6 ms to 0.25 ms, a leading character class from 10.8 ms to 0.35 ms, and ten thousand missing
test()calls from 200 ms to 2.2 ms — verified by differential fuzzing over 40,000 random cases. - Audio and WebAssembly.
OfflineAudioContextrenders audio instead of silence: oscillators, gain, dynamics compression, the RBJ biquad types, delay, wave shaping, constant sources and buffer playback. Instantiating a module through the WebAssembly JS API runs the module's start section and nothing else, so Emscripten modules no longer tear themselves down on their first WASI call. - Networking. A page on an origin that does not speak QUIC no longer stalls for the whole connect timeout — requests ask for HTTP/2 and are upgraded to HTTP/3 through the alt-svc cache, the way an origin advertises it. Acid3 loads in 2.2 seconds instead of 15.5. A navigation that ends with nothing to render gets an error page whatever its scheme.
- Browser interface. The status line floats over the bottom-left corner of the page and appears only while it has something to say. The toolbar menu is grouped into tab, view, page and tool sections and gains Zoom In/Out/Reset, Full Screen, History and the two save entries. The page zoom is shown beside the address bar while the page is scaled and resets when clicked. The bookmark button carries a hollow star that fills once the page is bookmarked. Escape in the address bar reverts it to the URL the window is showing, closes the find bar and stops a load in progress. Back and forward are green, reload is blue, and a red stop button appears while a page is loading.
- Android. Forward navigation and a history list that survives process death, find-in-page, long-press-to-select with a copy/share action bar, and a lock or warning at the head of the URL bar. WebGL and camera permission prompts now reach the user. Rotation re-lays out the open document instead of refetching it, so scripts, form state and reading position survive turning the device. Sharing, pull-to-refresh, system printing, launcher pinning, app shortcuts and the
WEB_SEARCHandPROCESS_TEXTintents all work, and the app follows the system dark theme. - Java / JVM.
java/pom.xmlbuilds the binding with Maven, with a release profile that signs and publishes to the Maven Central portal.RemoteBrowserandRemotePagenow cover the renderer's whole control protocol, and the Swing browser uses all of it — several windows, draggable in-page scrollbars, page-source and layout/network/performance inspectors, file drops and camera prompts.
about Nordstjernen
HTML Standard. Behaviour is measured against the spec text, section by section, not against another browser — 140 spec rows fully implemented, 31 partial, 0 absent across WHATWG HTML sections 1–16 as of July 2026. Against the Web Platform Tests, the full wpt-fast tree passes 88.4% of subtests overall — 91.7% of the HTML suite. See docs/HTML-compatibility.md.
Secure. Process-per-tab design — each tab's engine runs in its own sandboxed process (seccomp + Landlock on Linux), talking to the UI over IPC and shared-memory framebuffers · no JIT.
Minimalism. The core engine is about 185,000 lines of project C and headers (plus a thin GTK 4 shell), excluding the vendored libraries and generated assets — small enough for one person to read and audit end-to-end.
Private. Nordstjernen has no JIT so it is much more secure, and can still be fast enough. It ships no telemetry of any kind, and deliberately includes no AI assistant and no AI-style web APIs.
news
31 JUL 2026 · Nordstjernen 1.0.22 released — real-site layout fixes, a rebuilt grid, faster text through ns-pango, a reworked toolbar, and a much more capable Android app. Release notes »
31 JUL 2026 · Northstar 1.0.6 released — a rebuilt grid, an indexed CSS cascade, Web Audio that renders, and relative colour syntax. Announcement » · Release notes »
28 JUL 2026 · Nordstjernen 1.0.21 released — Media Queries Level 4, in-engine SVG, HLS and DASH streaming, a redesigned about:start, and honest client hints. Announcement » · Release notes »
28 JUL 2026 · Northstar 1.0.5 released — in-engine SVG, WebP/APNG, and MPEG-1 video playback. Announcement » · Release notes »
22 JUL 2026 · Nordstjernen 1.0.20 released — WebGL on by default, a blinking caret, site-compatibility and memory-safety work. Announcement » · Release notes »
17 JUL 2026 · Nordstjernen 1.0.19 released — web-standards conformance, a new animated splash, and an iOS port. Announcement » · Release notes »
5 JUN 2026 · Nordstjernen 1.0.0 released — the first stable release. Announcement » · Release notes »
download
Latest tagged release: Nordstjernen 1.0.22 — released 31 July 2026. full release notes »
Nordstjernen is also available on the Microsoft Store and Google Play.
| Windows | nordstjernen-windows-x86_64.zip · Microsoft Store |
|---|---|
| macOS | nordstjernen-macos.dmg |
| Debian | nordstjernen-debian-amd64.deb |
| Ubuntu | nordstjernen-ubuntu-amd64.deb |
| openSUSE | nordstjernen-opensuse-x86_64.rpm |
| Linux (portable) | nordstjernen-linux-x86_64.zip |
| Alpine (musl) | nordstjernen-alpine-x86_64.apk |
| FreeBSD (portable) | nordstjernen-freebsd-x86_64.zip |
| NetBSD (portable) | nordstjernen-netbsd-x86_64.zip |
| Android | Google Play |
| Java API (JDK 21) | nordstjernen-java.jar · API docs |
| Source | nordstjernen-src.tar.xz · 1.0.22.tar.gz · 1.0.22.zip |
| All releases | github.com/nordstjernen-web/nordstjernen/releases |
Nightly builds are rebuilt from main each night and point at the
latest code — bleeding edge, expect rough edges. See
all nightly files and their
checksums.