International SEO: markets are not languages (hreflang, x-default, URL structures)

Translating a site is not the same as serving a market. How to choose a URL structure, use hreflang and x-default correctly, and avoid common mistakes.

“We have an English, a German and a French version” is a common way to describe an international site. It hides the real question: which markets do you serve?

German is spoken in Germany, Austria and Switzerland, with different currencies, delivery terms, legal mentions and sometimes vocabulary. English covers the US, the UK, Ireland, Australia and many buyers who simply prefer it. A language version is a translation. A market version is an offer adapted to a country.

International SEO goes more smoothly when that distinction is made explicit before any URL or tag is created.

Step 1: decide what you are targeting

Start with a short matrix. For each version you plan, write down:

Version Language Country Different offer? Needs its own URLs?
English, global en none No Yes
English, UK en GB Prices in GBP, UK delivery Yes
German, Germany de DE EUR, German legal pages Yes
German, Switzerland de CH CHF, Swiss delivery Yes, if the offer differs
French, France fr FR No Yes

The rule of thumb: create a market-specific version only when something meaningful changes for the user (price, currency, availability, legal content, contact details). If only the spelling changes, a single language version may be enough.

Step 2: choose a URL structure

Google’s guide to managing multi-regional and multilingual sites compares the main options:

Structure Example Strengths (per Google) Trade-offs (per Google)
Country-code domain example.de Clear geotargeting Expensive, limited to one country
Subdomain de.example.com Easy to set up, allows different server locations Users may not know whether “de” means language or country
Subdirectory example.com/de/ Easy to set up, low maintenance Single server location, sections harder to separate
URL parameter example.com?loc=de Not recommended by Google

There is no universally best answer. Subdirectories are often the simplest to operate. Country-code domains make sense when you have a strong local brand and local teams. What matters most is consistency: once you pick a pattern such as /de-ch/ versus /de/, use it everywhere.

Step 3: understand how Google picks language and country

Two points surprise many teams.

Language comes from the content. Google states that it does not use code-level language information such as lang attributes or the URL to determine the language of a page, and that it does not use hreflang or the HTML lang attribute to detect it. A “German” page with mostly English content is, for Google, an English page.

Country comes from several signals. For locale targeting, Google lists country-code domains, hreflang annotations, server location and other cues such as local addresses, phone numbers, currency and Business Profile information. It ignores locational meta tags such as geo.position.

That is why a market version needs genuinely local signals, not just a translated menu.

Step 4: implement hreflang correctly

Hreflang tells Google which URLs are equivalent versions of a page for different languages or regions. Google accepts three methods: HTML link tags, HTTP headers, and XML sitemaps. They are equivalent; using more than one adds nothing.

A minimal example for one page in the HTML head:

<link rel="alternate" hreflang="en" href="https://example.com/en/oak-table/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/oak-table/" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/eichentisch/" />
<link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/eichentisch/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

The rules from Google’s documentation:

  • Self-reference: each version must list itself as well as all other versions.
  • Return links: if two pages do not both point to each other, the tags are ignored.
  • Fully qualified URLs: include the protocol (https://). Alternates can sit on different domains.
  • Valid codes: the language uses ISO 639-1, and an optional region uses ISO 3166-1 Alpha 2. You cannot use a country code by itself.
  • Scripts: where needed, script codes such as zh-Hant and zh-Hans are supported.

x-default

The reserved x-default value is used when no other language or region in your set matches the user’s browser setting. It typically points to a language or country selector, or to the version you consider the generic fallback. It is not a language; it is a “none of the above” option.

Common mistakes that make hreflang fail

Mistake Why it fails Fix
hreflang="uk" for the United Kingdom uk is the language code for Ukrainian Use en-GB
hreflang="en-UK" Google notes that UK has no effect as a region Use GB
hreflang="be" for Belgium be is the Belarusian language code Use fr-BE or nl-BE
Missing return links Tags are ignored without reciprocity Generate all annotations from one shared mapping
Relative URLs Alternates must be fully qualified Output absolute URLs
Pointing to redirected or non-indexable URLs The alternate is not a valid final page Point to the final, indexable URL

The last row is good practice rather than a quoted rule: annotating URLs that redirect or are blocked creates confusion that is easy to avoid.

Avoid automatic redirects by location or language

It is tempting to redirect visitors automatically based on IP or browser language. Google advises against it: its crawler usually comes from the USA and does not send an Accept-Language header, so it may never see some variants, and IP location is unreliable. Suggest the right version with a banner, and let users switch freely.

Duplicate content across markets

Translated pages are not duplicates. Google states that localized versions are only considered duplicates if the main content remains untranslated. When the same language serves several countries with near-identical pages (for example en-GB and en-IE), Google recommends choosing a preferred version and using rel=”canonical” and hreflang so searchers get the right one. Adding real local differences (prices, delivery, contact details) also helps each version stand on its own.

Checklist before launching a new market

  • The market, not just the language, is defined
  • The URL pattern is consistent across the site
  • Main content is translated, not only navigation
  • Local signals exist: currency, address, phone, legal pages
  • Hreflang lists every version, including itself, with return links
  • Codes are valid (en-GB, never en-UK)
  • x-default points to a sensible fallback
  • No automatic redirects based on IP or browser language

How SearchFirefly helps

SearchFirefly’s multi-market views separate Google performance and tracked keywords by country or language, so a market’s results are not hidden inside a global average. AI visibility is measured with questions asked in each market’s language across ChatGPT, Gemini, Perplexity, Google AI Overviews and Google AI Mode, showing which brands and sources each assistant cites per market.

See where AI assistants leave you out.

Start free trial See a demo

Keep reading