Internal Link Orphan Finder
Analyze a declared page inventory and its extracted internal links to separate pages with no incoming links from disconnected groups and uncovered targets. Try the public synthetic captures locally without sending site data anywhere.
v0.1.0 · Node.js 22+ · MIT
Compare two public page inventories
Both captures are synthetic and checked in. Run these commands from the repository root with Node.js 22 or newer.
Every page has a path
node bin/internal-link-orphan-finder.mjs --capture examples/site-clean.json --jsonThe clean capture checks 8 inventoried pages and 12 links. All 8 pages are reachable from the selected root; it reports 0 orphans, 0 unreachable pages, 0 errors and pass.
Orphan and disconnected group
node bin/internal-link-orphan-finder.mjs --capture examples/site-orphan.json --jsonThe failing capture checks 5 pages and 5 links. It reports 1 orphan (/press-kit), 2 unreachable pages in one disconnected group, 3 errors and fail. A self-link does not make the press-kit page reachable.

What this reachability result can establish
This CLI analyzes only the page inventory and links supplied in a JSON capture. It does not crawl a live site, fetch a URL, prove that a page is indexed or measure traffic. A target absent from the inventory is unknown, not a broken link; uncovered targets or sources make the result incomplete. Client-rendered links, authenticated pages, redirects and URL variants require separate review. A deliberately unlinked page may be an intentional choice, so review each finding before changing navigation.
Continue the review
Review the paths people can actually follow
Discuss a bounded internal-link QA workflow with Edilec. Share only site information you are permitted to disclose.