northlint.

Broken links are found after the deploy. Usually.

northlint walks a directory of generated HTML and reports every internal link, heading anchor and asset reference that does not resolve. It runs in about a second on a few thousand pages and needs no browser, no network and no configuration file to start.

$ northlint ./public
./public/guides/install.html:42  dead anchor   #configuring-tls
./public/guides/install.html:88  missing file  ../img/topology.svg
./public/notes/2024-06.html:17   dead link     /guides/old-cli
3 problems in 412 files (0.8s)

What it checks

What it does not do

It does not check external URLs. That needs the network, it is slow, it is flaky, and it fails for reasons that have nothing to do with your repository. Plenty of tools do it already; northlint stays offline and deterministic so it can run on every commit without becoming the reason a build is red.

It also does not parse Markdown. Lint the output, not the source — the generator is the part that decides what a link finally becomes.

Install

$ go install northlint.com/cmd/northlint@latest

A single static binary, no runtime dependencies. See the documentation for exit codes, ignore patterns and continuous integration examples.