VellumUp
PricingBlogIntegrationsComponents
Sign inRegister
Back to tools

Hreflang Tag Checker

Check a page's hreflang tags for the most common real mistakes: missing self-reference, missing x-default, duplicate codes, and non-reciprocal alternates.

About this tool

This tool fetches a page once, reads every hreflang tag on it, and checks the rules search engines actually rely on: that the page lists itself among its own alternates, that every language code is a real one, that no code is duplicated across different addresses, and that an x-default is present. It then fetches a limited number of the listed alternate addresses to confirm each one links back to the original page, since hreflang that is not reciprocal in both directions can be ignored by search engines entirely. To keep this fast and avoid placing load on the site being checked, reciprocity is confirmed for a capped number of alternates per scan, any beyond that are listed but not individually checked.

One thing this tool does not check, and it is worth knowing separately: hreflang can conflict with a page's own canonical tag. If a page's canonical points somewhere other than itself while its hreflang set treats it as the correct version for a language or region, search engines get a mixed signal about which URL should actually be indexed. The safest pattern is for every page in a hreflang set to be self-canonical, pointing its canonical tag at itself, not at one "main" language version. This tool reads hreflang tags only, so checking a page's canonical tag against its hreflang set is a separate, manual step worth doing alongside this scan, not something replaced by it.

Explore more free tools

Meta Tags Checker

Check a page's title, description, canonical URL, Open Graph, and Twitter Card tags for issues.

Redirect Checker

Follow a URL's full redirect chain hop by hop, with status codes and warnings for loops and insecure hops.

Robots.txt Tester

Fetch and read any site's robots.txt, and check whether a specific URL is blocked for a given crawler.

Frequently asked questions

If page A has an hreflang tag pointing to page B, page B should also have an hreflang tag pointing back to page A. This is called reciprocity, and it is not optional: Google's own documentation states that hreflang annotations should be reciprocal, and that non-reciprocal ones may be ignored. A one-directional link is a common real mistake, often caused by only updating one language version of a site during a content change.
The hreflang set on a page describes the full group of language or region alternates, including the page itself. A page that lists its alternates but not itself has an incomplete set from a search engine's perspective, which is a very common oversight when hreflang tags are added by copying a template between language versions without adjusting the self-reference for each one.
No, it is optional, but it is the recommended way to tell search engines which version of a page to show a visitor whose language does not match any of the listed alternates. Without it, there is no defined fallback, and different search engines and browsers may behave differently in that case.
Checking reciprocity means fetching each alternate address to look at its own hreflang tags, not just reading the original page. To keep a single check fast and avoid sending a burst of requests to the site being audited, this is capped at a limited number of alternates per scan. Pages with more alternates than that will show the rest of the findings, such as self-reference and duplicate codes, but reciprocity is only confirmed for the capped set.
No. Like the other tools on this page, it reads the raw HTML returned by the server. Hreflang tags are almost always placed directly in the HTML head by design, since that is what search engines rely on, but a tag injected only after client-side JavaScript runs would not be seen here.
No. The address is used to fetch the page, and a limited number of its listed alternates, for that one check, and none of it is saved. Only public web addresses can be checked: requests to private or internal network addresses are refused.
A plain language code such as "he" is enough when your content does not vary by region within that language, which covers most sites. Adding a region code, such as "he-IL" for Hebrew as used in Israel or "en-US" versus "en-GB", only makes sense when you actually maintain separate content for each region, different pricing, spelling, or product availability, for example. Adding a region code without real regional differences just adds more tags to keep in sync without giving search engines anything more useful to act on.

Want SEO and GEO content
in your brand voice, automatically?

Try it risk-free — a content plan, keyword research, and up to 5 articles on us.

Say hello

support@vellumup.com

Follow us

Product

PricingFree ToolsShopify App StoreWix App MarketWordPress Pluginnpx vellumup-init

Company

BlogIntegrationsComponentsAffiliates

Integrations

DocumentationWordPressShopifyWebflowWixWebhooksNext.js

Legal

Terms of ServicePrivacy PolicyAccessibility
VellumUp

© 2026 VellumUp. All rights reserved.