Overview
Before a site writes a single hreflang tag, it has to decide where each locale lives. That decision is hard to reverse: moving from subdirectories to ccTLDs later is a full site migration. It also sets expectations for what hreflang can do, since hreflang only tells Google which existing page to show to which user. This page covers the structural choice and the scope limits; for tag syntax, reciprocity, and x-default, see hreflang.
Pick a URL structure and stick with it
Three URL structures support hreflang; pick one before launch and do not mix.
| Structure | Example | When it wins | When it loses |
|---|---|---|---|
| ccTLD | example.de, example.fr | Clearest geo signal to users and search engines; clearest brand per market | Most expensive; separate domains to register, maintain, and earn links for |
| Subdomain | de.example.com, fr.example.com | Cleaner separation than subdirectories; can host on different infra | Users may not read the subdomain as a country signal; more properties to maintain |
| Subdirectory | example.com/de/, example.com/fr/ | One domain and host to maintain; cheapest to ship | Weakest geo signal; relies on hreflang and local signals (the Search Console International Targeting report was retired in 2022) |
As a practitioner default, most sites start with subdirectories on a single canonical domain because they are the cheapest to run. Use ccTLDs only when the brand or the legal entity is genuinely separate per country.
Know when hreflang does and does not help
Hreflang solves duplicate-content disambiguation across locales. It does not solve other problems.
- Helps: same content translated for different languages; same English content tuned for US, UK, AU markets; product pages with currency and shipping differences.
- Does not help: ranking a non-English page in an English query. The body language and the query language must match for that.
- Does not help: a page that exists in one language only. No alternates, no hreflang needed.
- Does not help: thin or auto-translated content. Hreflang surfaces the right version; it does not improve the quality of the version it surfaces.