International SEO · Practical guide
Hreflang for France: .fr or /fr/, and the tags that make Google show your French pages
In short: what you will learn
Hreflang is a tag that tells Google which language or country each version of a page is meant for. When you add a French version to your website, it is what makes Google show your French page to French searchers, instead of your English page. It does not translate anything and it does not make a page rank higher on its own: it maps your versions to the right audience.
Before the tags comes a structural choice: a .fr domain, a /fr/ folder on your main domain, or a fr. subdomain. I have done SEO since 2010, and at Zalando I ran SEO for France, Belgium and Switzerland from Berlin: three French-speaking markets, each with its own site. Here is how I would set up a French version today, step by step.
What does hreflang do, exactly?
Hreflang is an annotation that lists all the language and country versions of a page. Each version carries the same list, which tells Google: “this page exists in English for everyone, and in French for France”. Google then shows the version that matches the searcher.
Two points from Google’s own documentation are often misunderstood:
- Google does not use hreflang to detect the language of a page. It detects language from the content itself. Hreflang tells it which version targets which audience.
- The annotations must be confirmed both ways. If your English page points to your French page, the French page must point back. Without these return links, Google may ignore the tags.
You can declare hreflang in three places: in the HTML head of each page, in the HTTP header (useful for PDFs), or in your XML sitemap. Google treats the three as equivalent. Pick one and stick to it.
.fr, /fr/ or fr. subdomain: which structure for France?
Google lists the options and their trade-offs in its guide to multi-regional sites. Here is how they apply to a French version:
| Structure | Example | Strengths | Weaknesses |
|---|---|---|---|
| Country domain (ccTLD) | yourbrand.fr | Clear signal for France, trusted by French buyers | Starts with no authority, separate site to manage, targets one country only |
| Folder on your main domain | yourbrand.com/fr/ | Benefits from the authority you already have, one site to maintain | Less obvious local signal, one server location |
| Subdomain | fr.yourbrand.com | Easy to set up, can be hosted separately | Users may not know if “fr” means language or country |
| URL parameter | yourbrand.com?lang=fr | None worth the risk | Not recommended by Google |
My recommendation for most companies entering France: a /fr/ folder on your main domain, with hreflang. Your French pages start with the authority your domain has already earned, and you run one site, one CMS and one analytics setup.
A .fr domain makes sense when France is a market in its own right for you: a French entity, a different catalogue or prices, a local team, or a sector where buyers expect a French address. Keep in mind that it starts from zero and needs its own links from French websites.
Whatever you choose, hreflang still applies: it works across domains, so a .com in English and a .fr in French can point to each other.
fr or fr-FR: which code should you use?
Hreflang values use a language code (ISO 639-1, such as fr), optionally followed by a country code (ISO 3166-1 Alpha 2, such as FR). French is spoken well beyond France, which makes the choice important.
- One French version for every French speaker (France, Belgium, Switzerland, Canada): use fr. Your page can be shown to all of them.
- A version written for France only, with prices, delivery or legal mentions specific to France: use fr-FR, and add fr as a catch-all if you have no other French version.
- Several French versions (France, Belgium, Switzerland): one code per country (fr-FR, fr-BE, fr-CH), plus fr for the version you want other French speakers to see.
Two traps from Google’s documentation: a country code cannot be used alone (be is the code for Belarusian, not Belgium), and the United Kingdom is GB, not UK.
How to write the tags: a complete example
Take a site with English pages at the root and a French version in /fr/. On the English pricing page and on its French equivalent, the head contains exactly the same three lines:
<link rel="alternate" hreflang="en" href="https://www.yourbrand.com/pricing/" />
<link rel="alternate" hreflang="fr" href="https://www.yourbrand.com/fr/tarifs/" />
<link rel="alternate" hreflang="x-default" href="https://www.yourbrand.com/pricing/" />
The rules behind this example:
- Each page lists itself and all its alternates. The set is identical on every version.
- URLs are absolute, with https://. Relative URLs such as /fr/tarifs/ are not valid.
- x-default names the page to show when no version matches the searcher, often your main language or a language selector.
- Each URL is the canonical, indexable version: no redirect, no noindex, no canonical pointing elsewhere.
The same set can go in the XML sitemap instead, with one <xhtml:link> per version under each URL. On a large site, the sitemap is easier to maintain than tags in every page.
The mistakes I see most often
- Missing return links: the English page points to the French one, but not the other way round. Google may then ignore the pair.
- Wrong codes: fr_FR with an underscore, uk instead of gb, a country code on its own.
- A canonical that contradicts hreflang: the French page has a canonical pointing to the English page. You are telling Google that the French page is a copy, so it shows the English one.
- Hreflang pointing to redirected or noindex pages, often left behind after a migration.
- Automatic redirects by IP or browser language: Google advises against them. Googlebot mostly crawls from the United States without a language preference, so it may never see your French pages. Let people choose with a visible language switcher.
- Two methods that disagree: tags in the pages say one thing, the sitemap says another.
One more, which is not technical: a French version that is a word-for-word translation. Hreflang will show it to French searchers, but it will not rank on searches nobody makes. That part is French keyword research and localisation.
WordPress, Shopify and other CMSs
You rarely need to write these tags by hand. Multilingual plugins for WordPress, such as Polylang or WPML, generate them once each page is linked to its translations. Shopify generates them for the languages and markets you set up. The job is to check the output: every page linked to its translations, the right codes, and nothing pointing to drafts or deleted pages.
How to check your hreflang
- View the source of a page and its French version: the two lists must be identical.
- Crawl the site with Screaming Frog or the site audit of Semrush or Ahrefs: they flag missing return links, invalid codes and tags pointing to non-indexable pages.
- Use a generator, such as the free one by Aleyda Solis, to produce clean tags or sitemap entries.
- Search on Google.fr for your brand and your main pages: the French version should appear.
Checking hreflang is part of every French SEO audit I carry out, along with indexing, French keywords and links from French websites.
Frequently asked questions about hreflang
Is hreflang mandatory?
No. Google may find your language versions without it. But the tags are the clearest way to tell Google which version to show in each market, and they prevent your English page from appearing to French searchers.
Do I need hreflang if my French site is on a .fr domain?
Yes, as soon as the same pages exist in another language. Hreflang works across domains: your .com and your .fr point to each other.
Does hreflang improve rankings?
Not directly. It does not make a page rank higher; it makes Google show the right version. The French page still has to deserve its rankings: French keywords, content and links.
Should I use fr or fr-FR?
Use fr if your French version is meant for all French speakers. Use fr-FR if it is written for France specifically, and add fr as a catch-all if you have no other French version.
What is x-default for?
It names the page Google shows when none of your versions matches the searcher’s language or country, usually your main version or a language selector page.
Read next: SEO in France for international companies · French SEO audit
Free first step
Is your French version set up correctly?
I check your hreflang, your French pages and where you stand on Google.fr, then send you 3 priority actions. Free, within 24 hours.
Get my free France check →The author
French SEO consultant since 2010, in-house, in agencies and as a freelancer (Zalando, Evaneos, Frontline). He helps international companies win customers in France.
Free France check within 24h
A first look at your visibility on Google.fr and in French AI answers.
Get my free check →
