Open source · Technical SEO

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

Browse source and run locally · Read the migration guide

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 --json

The 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.

Inspect the clean export

Page identity conflicts

node bin/canonical-url-consistency-checker.mjs --config examples/broken/canonical.config.json --json

The 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.

Inspect the failing export

Monochrome conceptual route, HTML and sitemap documents converging on a page identity, with one broken connection
Generated concept illustration. The checks below are from public synthetic files, not from a live site or a search engine.

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.

Read the exact rule definitions

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.

Discuss a canonical QA workflow