Hreflang Tag Generator
Turns your language and URL pairs into reciprocal, self-referencing hreflang tags plus the x-default line. The same output comes in sitemap form as well.
- Sign-in requiredMembership is free
- Open on the Pro plan100 runs a day
- Saved to your historyReachable from your account
What does this tool look at?
Anything that is easy to get wrong by hand, generated for you: meta tags, schema, robots.txt, sitemaps and redirect rules.
- A reciprocal tag set for every page
- x-default line included
- Two outputs: HTML and XML sitemap
- Invalid language codes flagged
What this tool measures
Hreflang connects the language versions of the same content. Done right, a visitor from Germany gets the German page, a visitor from Türkiye the Turkish one, and neither counts as duplicate content. Done wrong, Google discards the whole cluster.
What usually breaks a cluster is missing reciprocity. If the Turkish page points at the English one but the English page does not point back, the link is one-way and invalid. That is why the tool produces a single tag set: you paste the same block on every page in the list.
Language codes are validated by format. “tr”, “en-US” and “zh-Hant-TW” pass; “tr_TR”, “turkish” and “en-UK” are rejected as errors. Two rows minimum, 100 read per run.
How to use it
- 1
Write the full address for each language
Rows read “language-code | address”. Match equivalents: the Turkish service page pairs with the English service page, not with the English homepage.
- 2
Add a region code only when it earns its place
“de” covers every German speaker. “de-AT” targets Austria alone and needs a genuinely separate page. Splitting identical content across two region codes doubles the work without doubling the return.
- 3
Define the x-default address
The page shown to visitors whose language matches nothing in your list. Leaving it empty raises a warning; it is normally the default language version or a language chooser.
- 4
Copy the block onto every page
The generated set is identical for all pages in the cluster and each page points at itself as well. Do not build a different set per page, that is where clusters break.
- 5
Verify with the Hreflang Checker
After publishing, check two different pages from the cluster. With reciprocity in place both report the same cluster; if one cannot see the other, the tags were not copied completely.
When to use it
- When adding an English or German version to an existing Turkish site.
- When serving one language in several countries and deciding which page surfaces where.
- After Search Console reports “alternate page with proper canonical tag”.
- When the wrong language version keeps ranking on a multilingual site.
Reading the result
Where the HTML output goes
Into the <head> of every page in the cluster, beside the other meta tags. The tags do nothing inside <body>. Once the page count runs into the hundreds, switch to the sitemap version.
Where the XML sitemap version goes
The second output is a sitemap that carries every alternate inside one <url> block per address. Put it at the root and submit it in Search Console. It is lighter than shipping hundreds of link tags per page.
In a Next.js project
Rather than printing tags by hand, fill alternates.languages in the page's metadata object and let Next.js emit the link elements. In projects using next-intl, as this site does, the translated paths come from the routing configuration.
Invalid language code error
An underscore (tr_TR) or an invented country code (en-UK instead of en-GB) fails the check. A single invalid code invalidates the entire cluster for that page.
Conflict with canonical
Each language version must canonicalise to itself. If the German page canonicalises to the Turkish one, Google never indexes the German version and the hreflang block is wasted.
Questions about the Hreflang Tag Generator
Not directly. It puts the right language in front of the right user, which lowers bounce rate and stops versions from suppressing each other as duplicates.
They do not. “de-DE” and “de-AT” are two members of one cluster, not rival clusters. But if the content is nearly identical, splitting them buys nothing; a single “de” version needs less upkeep.
The tool reads 100 rows per run. In practice page weight sets the limit: ten languages of link tags bloat the head section, and that is where the sitemap approach wins.
Forcing users elsewhere based on IP is a poor idea: crawlers mostly arrive from the United States and would only ever see that version. Leave the choice to the user; hreflang already surfaces the right version in search.
Use it alongside these
The other tools in the same category. Run them together and you see the whole picture.
The tool found the problem. Now for the fix
We run technical SEO, content and AI visibility work end to end. Let us review your site and come back with a clear list of what to do.
Monday – Saturday 09:00 – 18:00

