Canonical & Hreflang Bidirectional Link Checker

Validate reciprocal hreflang annotations, detect missing return links, and identify canonical conflicts without sending your URLs to a server.

Technical SEO & Metadata Local processing Pasted annotations are analyzed locally.

Checker

HTML mode expects one block per page, separated by ---, with a Page URL: line. CSV mode expects columns for page URL, canonical, hreflang, and href.

Results

Paste HTML blocks or CSV rows, then run the audit.

Findings

    Introduction

    Hreflang annotations are easy to get wrong. Missing return links, duplicate language codes, and incompatible canonical tags can cause search engines to ignore or misinterpret international targeting.

    This tool checks the annotations you provide and highlights relationships that are not fully reciprocal.

    How it works

    The tool parses your input into a page model. Each page can have a canonical URL and a set of hreflang links. It then compares every hreflang target against the other provided pages and checks whether the relationship points back correctly.

    • HTML mode parses link tags and Page URL: lines.
    • CSV mode parses rows with page URL, canonical, hreflang, and href.
    • Relative URLs are resolved against the page URL.
    • All processing happens locally.

    How to use

    1. Paste HTML blocks or CSV rows.
    2. Include every page in the hreflang set where possible.
    3. Click Audit annotations.
    4. Review reciprocal, canonical, and syntax findings.
    5. Copy the report for documentation or remediation.

    Practical example

    HTML block input:

    Page URL: https://example.com/en/
    <link rel="canonical" href="https://example.com/en/" />
    <link rel="alternate" hreflang="en" href="https://example.com/en/" />
    <link rel="alternate" hreflang="fr" href="https://example.com/fr/" />
    ---
    Page URL: https://example.com/fr/
    <link rel="canonical" href="https://example.com/fr/" />
    <link rel="alternate" hreflang="fr" href="https://example.com/fr/" />

    In this example, the English page references the French page, but the French page does not reference the English page. The tool flags the missing reciprocal hreflang.

    Use cases

    • Auditing multilingual website templates.
    • Checking hreflang exports from spreadsheets.
    • Debugging missing return annotations.
    • Reviewing canonical compatibility before deployment.
    • Documenting international SEO issues.

    Best practices

    • Include every language variant in each page’s hreflang set.
    • Make each page reference itself.
    • Use valid language and region codes.
    • Keep canonical tags compatible with hreflang targets.
    • Use absolute URLs to reduce ambiguity.

    Common mistakes

    • Linking to a translation without receiving a return link.
    • Omitting the self-referencing hreflang tag.
    • Using duplicate hreflang values on one page.
    • Pointing canonicals to unrelated pages.
    • Mixing HTTP and HTTPS URLs unintentionally.

    Limitations

    • The tool only checks pages included in the input.
    • It does not crawl live websites.
    • It does not verify HTTP status codes or redirects.
    • Search engine interpretation can still vary, so review current guidance before launch.

    Browser compatibility

    The tool works in current versions of major browsers. It uses standard JavaScript URL parsing and DOM text rendering.

    FAQ

    Is my URL list uploaded?

    No. All parsing and validation happen locally in your browser.

    Does it crawl my website?

    No. It checks only the annotations you paste.

    What input format is best?

    HTML blocks are useful when copying from page source. CSV is useful when working from an export or spreadsheet.

    Does a passing result guarantee correct indexing?

    No. It helps identify common annotation errors, but indexing also depends on crawlability, redirects, content quality, and search engine policies.

    References

    Version and changelog

    • Version: 1.0.0
    • Last updated: August 8, 2026
    • Changelog: Initial production release.