Canonical URL Consistency Checker
Compare a declared route manifest, built HTML canonicals, redirect map and sitemap exports before release. See where those files disagree about which URL names a page, using public synthetic fixtures you can run locally.
v0.1.0 · Node.js 22+ · MIT
Compare two public build exports
Both exports are synthetic and checked in. Run these commands from the repository root with Node.js 22 or newer.
Declarations agree
node bin/canonical-url-consistency-checker.mjs --config examples/clean/canonical.config.json --jsonThe clean fixture checks 4 declared routes, 3 sitemap URLs and 1 supplied redirect. It passes with 0 errors and 0 warnings; one informational finding notes a redirect that collapses under the explicit trailing-slash policy.
Page identity conflicts
node bin/canonical-url-consistency-checker.mjs --config examples/broken/canonical.config.json --jsonThe broken fixture checks 7 routes, 4 sitemap URLs and 2 supplied redirects. It fails with 11 errors and 5 warnings, including a canonical that points at a redirect, conflicting canonicals, a missing canonical and a sitemap URL that is not canonical.

What a consistent result can establish
This CLI reads local build artifacts; it never crawls or fetches a live page. Its redirect conclusions depend on the map you supply, and it does not render JavaScript-injected canonicals or expand a sitemap index. A pass means these supplied files agree under the chosen URL policy. Canonical tags are signals, not indexing instructions, so a pass cannot prove that a search engine indexed or ranked a page. Unreadable or incomplete evidence returns an incomplete result rather than a pass.
Continue the release review
Keep page identity consistent through a release
Discuss a bounded canonical and redirect QA workflow with Edilec. Share only material you are permitted to disclose.