Launch a translated version
Declare the new language on every existing version of a page without writing the tags by hand.
Turn locale=URL lines into hreflang link tags and detect invalid or duplicate entries.
This builder turns a list of language versions of a page into <link rel="alternate" hreflang> tags ready to paste into the <head>. Along the way it checks the language code format, duplicates and URL validity, to avoid the errors that stop search engines from matching the translations of the same page.
Each line follows the code=URL format. The code accepts a 2- or 3-letter language (en, fr, ast), optionally followed by a 2-letter region (en-GB, de-CH), or the special value x-default.
The URL must be absolute and start with http or https. The browser normalises it before it is written into the tag.
A code that is already used, even with different capitalisation (en and EN), is rejected: two versions cannot claim the same language. Rejected lines do not appear in the result and the status asks you to fix them.
The result lists one tag per version, in the order entered. The same block must appear on every page listed, including the page itself.
Enter one line per version in the form en=https://example.com/en/page.
Give the page to show when no language matches, often a language picker or the English version.
Valid configuration or an error message: fix the flagged lines.
Paste the block into the <head> of every version listed.
Declare the new language on every existing version of a page without writing the tags by hand.
Separate en-GB, en-US and en-AU when prices, delivery or legal notices differ by country.
Spot a malformed code or a relative URL before it goes into a template.
Four tags are produced; the English version also serves as the default page.
Input
Localized versions:
fr=https://example.com/fr/tarifs
en=https://example.com/en/pricing
de-CH=https://example.com/ch/preise
x-default=https://example.com/en/pricingResult
Valid configuration
<link rel="alternate" hreflang="fr" href="https://example.com/fr/tarifs" />
<link rel="alternate" hreflang="en" href="https://example.com/en/pricing" />
<link rel="alternate" hreflang="de-CH" href="https://example.com/ch/preise" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing" />FR is rejected because fr already exists, so only the first line produces a tag.
Input
Localized versions:
fr=https://example.com/fr/
FR=https://example.com/fr-bis/Result
Fix invalid lines or duplicate language codes.
<link rel="alternate" hreflang="fr" href="https://example.com/fr/" />It tells search engines that a page exists in other languages or for other countries, so they show each visitor the right version. It does not improve rankings; it prevents the wrong version from being shown.
It is the page offered when the visitor’s language or country matches none of the listed versions, such as a language selection page or the international version.
Only if the content changes between countries (currency, delivery, vocabulary). A language code alone, such as en, covers all English speakers. A country code alone, such as GB, is not valid.
The = separator is missing, the code does not match the language or language-region format, the code is already used, or the URL is not an absolute http or https address.
No. It produces the block to place on each version but does not download the pages. Check on the live site that every version contains the same block.
No. The tags are generated in your browser.
Related tools
Tools similar or complementary to this one.
Create SEO, Open Graph and Twitter/X tags for a web page.
Create a clear robots.txt file to guide web crawlers.
Create an XML sitemap from a list of URLs.
A practical workflow to review SEO changes before publishing: sitemap, link relationships, redirects, keyword usage and structured data.
Resize a batch of images, convert them to WebP and remove metadata with one reusable Pipeline.
Resize, compress and choose between WebP, AVIF and other formats with a practical workflow that reduces file size without unnecessary visual loss.
WebAssembly, browser APIs and faster devices enable more processing locally. How far can this approach replace services that upload files to servers?