Find broken Markdown links

Internal anchor links break silently when you rename a heading. Relative paths drift after a folder rearrange. CI tools mostly miss both because they don’t read the Markdown source. This catches them at paste time, before the build does.

What this checks

Want this on every save, scoped to your folder?

Textorium’s broken-link checker (Cmd+Shift+L on the Mac app) scans every post in your site for internal links and images that point to files that don’t exist. SSG-aware path resolution — it understands how Hugo, Jekyll, Eleventy, and Astro resolve content paths, so it catches what your build would catch, before you build.

Get Textorium on the Mac App Store — $4.99, one-time purchase, no analytics in the app.

See the Hugo workflow features →

FAQ

Does this upload my post? No. Link classification runs entirely in your browser. The post never leaves your Mac. Network tab in your browser shows one request for the JavaScript that runs this page and nothing else.

Why don’t you check external URLs? CORS blocks most cross-origin HEAD requests from a browser, so we’d be reporting false-positives. External checking is a build-time job, not a paste-time one. Lychee and htmltest do it well from CI; the Mac app does it on demand.

What about folder-wide checking? Coming as a follow-up. v1 keeps the input scope to a single post — paste, classify, fix. For whole-folder analysis, the Mac app’s Cmd+Shift+L scans every post against the actual files on disk.

Why are anchor links checked? Internal anchors break silently when you rename a heading and forget to update the link. CI tools usually miss them because they don’t track heading-to-anchor relationships in source. This is one of the few link-health checks better done at the source than at the build.

Does it understand Hugo shortcodes? Not in v1. {{< ref "post" >}} cross-refs are treated as opaque text — not resolved. The Mac app handles SSG-aware refs natively.

My image link is yellow. Is that a problem? Probably. Image-as-link mismatch fires when you have ![alt](something.md) — image syntax pointing at a Markdown file. The common cause is copy-pasting a link and forgetting to remove the leading !. Worth checking each one; sometimes it’s intentional.