You translated the site. Google still shows the wrong one.
Without hreflang, a search engine guesses which language page to show, and it usually guesses the one it crawled first. The fix is simple to describe and painful to write by hand.
The English page ranks in Hindi search
Someone searching in Hindi lands on your English page, sees nothing they can read and leaves. Your Hindi page exists; nobody told Google it is the same page in another language.
“No return tags” — and the set is ignored
Hreflang only counts when every page in a set points back to every other page, including itself. One missing pair and the whole set is dropped. It is the most common hreflang error there is.
40 pages × 5 languages = 200 tags to type
A CMS plugin bolts it on. A static site has nothing. Writing it by hand means one link per language on every page, each URL exact, each code valid, and doing it again whenever a page is added.
URLs to hreflang sitemap in three steps
Add your URLs
Paste every URL in every language, one per line. Or drop the ZIP of your site, or paste your existing sitemap.xml. The language is read from each URL.
/hi/about → hi
fr.example.com/about → fr
example.de/ueber-uns → de (map)
Check the sets
Translations of one page are grouped. The Table view lays every page against every language, so a missing translation or a bad code shows up before it becomes a Search Console error.
| Page | en | hi | fr |
|---|---|---|---|
| / | ✓ | ✓ | ✓ |
| /about | ✓ | ✓ | — |
| /services/mri-scan | ✓ | ✓ | ✓ |
Download and submit
Save sitemap.xml to your site root, add it to robots.txt, submit it in Search Console. Every URL now links to every language and to itself.
<loc>https://example.com/about</loc>
<xhtml:link hreflang="en" .../>
<xhtml:link hreflang="hi" .../>
<xhtml:link hreflang="x-default" .../>
</url>
Six rules. Break one and the set is ignored.
Google is strict about hreflang because a half-right set is worse than none. Every file this tool writes follows all six.
Rules the file follows
- Self-referencing — each URL’s set includes the URL itself. Without it the set does not validate.
- Reciprocal — if A lists B, B lists A. Every URL in a set gets the identical alternate list, so return tags are never missing.
- Absolute URLs —
https://example.com/hi/about, never/hi/about. Relative paths in a sitemap are dropped. - Valid codes — ISO 639-1 language (
hi,en), optional ISO 3166-1 region (en-IN,pt-BR), optional script (zh-Hant). Codes are checked;en-UKandengare flagged. - One x-default per set — the page to show when no language matches. Usually the default language; never two.
- Within limits — 50,000 URLs and 50 MB uncompressed per file. Past that, split by language and list the files in a sitemap index.
Whose hreflang sitemaps get built here
Most generators want a form per page. This one reads your URLs.
An hreflang file is only right if every set is complete. That takes grouping and checking, not a text box per language.
| Feature | Fylo.Host | Online generators | CMS plugins | Written by hand |
|---|---|---|---|---|
| Whole site at oncePaste every URL, or drop the ZIP | ✓ | One page at a time | ✓ | ✗ |
| Detects language from path, subdomain or domain | ✓ | ✗ | Its own structure | ✗ |
| Self-referencing and reciprocal sets | ✓ | Varies | ✓ | If you remember |
| Flags missing translations and bad codes | ✓ | ✗ | ✗ | ✗ |
| Reads existing hreflang from pages or sitemap | ✓ | ✗ | ✗ | ✗ |
| Sitemap and link tags from the same sets | ✓ | Tags only | Tags only | ✓ |
| No URL limit on the free tier | ✓ | Varies | ✓ | Your patience |
| Runs in your browserYour site is never uploaded | ✓ | ✗ | ✗ | ✓ |
| Hosts the site for you | With your site, free | ✗ | ✓ | ✗ |
Got questions?
<url> also lists every language version of that page as <xhtml:link rel="alternate" hreflang="...">. It tells search engines which URL to show to which language or country, without adding tags to every page. Need a plain one first? Use the XML Sitemap Generator.<head> work when you cannot edit the sitemap; the Link tags view writes them from the same sets. HTTP headers are for non-HTML files like PDFs. Pick one method; do not mix them with different sets.en, hi, ta, fr), optionally followed by an ISO 3166-1 alpha-2 region (en-IN, pt-BR) and optionally an ISO 15924 script (zh-Hant). Region alone is not valid, and neither is en-UK (it is en-GB) or eng. Invalid codes are flagged in the Table view. To turn a detected en into en-IN, add en=en-IN to the Map box.example.com/in/ and example.com/uk/ are both English, map them: in=en-IN, uk=en-GB in the Map box, and set Detect from to path prefix. Set x-default so one of them is the fallback for everyone else.Every language linked. Now host the site
they live on.
Drop your ZIP. We handle the milliseconds.
Upload your site free No signup. No server setup. Live in seconds.