Hreflang for French: France, Canada, Belgium, and Switzerland
How to set up hreflang tags for French-language content across France, Canada, Belgium, and Switzerland. Covers language codes, regional targeting, and implementation examples.
French is spoken as an official language in over 25 countries. For most websites, though, the relevant targets are France, Canada, Belgium, and Switzerland. Each of these markets has distinct content expectations, and hreflang tags are how you tell Google which version of your French content to serve where. For a general overview of how hreflang works, see our complete hreflang guide.
This guide walks through the language and region codes, when you need regional variants versus a single French version, and how to implement it all correctly.
French Hreflang Language Codes
The hreflang attribute uses ISO 639-1 language codes, optionally combined with ISO 3166-1 alpha-2 region codes. Here are the codes relevant to French content:
| Code | Meaning |
|---|---|
| fr | French (no region specified) |
| fr-FR | French for France |
| fr-CA | French for Canada |
| fr-BE | French for Belgium |
| fr-CH | French for Switzerland |
The language code is always lowercase. The region code is always uppercase. They are separated by a hyphen.
When to Use fr Alone
Use fr (without a region) when you have a single French version of your content that is not tailored to any specific country. This is the most common approach and works well when:
- Your French content is written in standard, internationally neutral French
- You do not have separate pages for different French-speaking regions
- You want all French speakers, regardless of location, to see the same page
Google treats fr as a catch-all for French-speaking users when no more specific match exists. If a user in Quebec searches and you have both fr-CA and fr versions, Google will prefer fr-CA. If you only have fr, that is what everyone gets.
When to Use Regional Codes
Use regional codes like fr-FR or fr-CA when your content genuinely differs between regions. Common reasons to create regional variants include:
Different products or services. An e-commerce site might have different catalogs, prices, or shipping options for France vs. Canada.
Legal or regulatory differences. Privacy policies, terms of service, and compliance pages often vary by country.
Localized content. Job listings, store locators, local news, or region-specific promotions.
Language differences. While written French is largely the same worldwide, Quebec French has enough vocabulary and expression differences that some brands create separate content for Canadian audiences.
If none of these apply, you probably do not need regional variants. A single fr version is simpler and easier to maintain.
Quebec French vs. France French
This is where French hreflang gets interesting. Quebec French and France French are mutually intelligible, but they are not identical. The differences show up in vocabulary, expressions, and sometimes grammar.
Some examples:
| France French | Quebec French | English | |---|---|---| | voiture | char / auto | car | | courriel | courriel (same) | email | | magasiner | faire du shopping | to shop | | fin de semaine | week-end | weekend | | stationnement | parking | parking |
For most informational content, these differences are minor enough that a single French version works fine. But for certain types of content, the differences matter:
Marketing copy. If your brand voice matters, Quebec French and France French can feel noticeably different. What sounds natural in Paris may sound formal or foreign in Montreal.
Product descriptions. If you use local terminology for features, sizes, or categories, you will want separate versions.
Legal content. Canadian French legal content follows Canadian law and legal conventions, which are distinct from French law.
If you do create separate versions, use fr-FR and fr-CA to differentiate them. Do not use just fr for France and fr-CA for Canada. Be explicit with both.
Implementation Examples
Here are complete implementation examples for common scenarios. For more patterns, see our hreflang HTML examples.
One French version for all French speakers
If you have an English site and a single French version:
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
</head>
The fr tag covers all French-speaking users globally. The x-default tag specifies the fallback for users who do not match any listed language.
Separate versions for France and Canada
If you have distinct content for France and Quebec:
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/about/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
</head>
With this setup, Google serves the fr-FR version to users in France and the fr-CA version to users in Canada. French speakers in other countries (Belgium, Switzerland, Africa) will not have a specific match. Google will choose one of the French variants or fall to x-default, depending on its assessment of the content.
France, Canada, and a generic French fallback
To cover all bases, you can include regional variants plus a generic fr for other French-speaking regions:
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/about/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
</head>
Here, fr acts as a catch-all for French speakers not in France or Canada. The fr-FR and fr-CA versions are served to their specific regions. This is the most complete setup, but it requires three separate French pages.
Adding Belgium and Switzerland
If you also have localized content for Belgium and Switzerland:
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/about/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/about/" />
<link rel="alternate" hreflang="fr-BE" href="https://example.com/fr-be/about/" />
<link rel="alternate" hreflang="fr-CH" href="https://example.com/fr-ch/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
</head>
This is the full setup. Each region gets its own version, and fr catches everyone else. Remember that Belgium also has Dutch speakers (nl-BE) and Switzerland has German (de-CH) and Italian (it-CH) speakers. If you serve those languages too, include their hreflang tags as well.
Handling x-default for French Sites
The x-default tag tells Google what to show users who do not match any of your hreflang entries. For multilingual sites with French content, you have a few options:
Point x-default to the English version. This is the most common choice for sites where English is the primary or most widely accessible language.
Point x-default to a language selector page. If you have a landing page that lets users choose their language, this is a clean option.
Point x-default to the generic French version. If your site is primarily French and you want non-matched users to see French content, this works too.
There is no universally correct answer. Pick the version that makes the most sense for users who do not fit into any of your specific language/region buckets.
Belgium and Switzerland: Multilingual Complications
Belgium and Switzerland are multilingual countries, which adds complexity.
Belgium
Belgium has three official languages: Dutch, French, and German. If you target Belgian users, consider:
fr-BEfor French-speaking Belgiansnl-BEfor Dutch-speaking Belgiansde-BEfor German-speaking Belgians (small minority)
Most sites targeting Belgium only create French and Dutch versions. German-speaking Belgians typically accept content in French or standard German (de).
Switzerland
Switzerland has four official languages: German, French, Italian, and Romansh. A typical setup for Switzerland:
de-CHfor German-speaking Swissfr-CHfor French-speaking Swissit-CHfor Italian-speaking Swiss
Each of these is a separate hreflang entry pointing to different content. If you do not have Swiss-specific content, Swiss users will fall back to the generic language version (de, fr, or it).
Swiss French vs. France French
The differences between Swiss French and France French are minor compared to the Quebec/France divide. Most sites do not need a separate fr-CH version unless they have Swiss-specific pricing, legal terms, or product offerings.
Common Mistakes with French Hreflang
Using fr-QC instead of fr-CA
Quebec is a province, not a country. The ISO 3166-1 code for Canada is CA, not QC. The correct code for Quebec French is fr-CA. Using fr-QC is invalid and will be ignored by Google.
Forgetting self-referencing tags
Every page must include a hreflang tag pointing to itself. The French France page must include hreflang="fr-FR" with its own URL. This is a requirement that applies to all hreflang implementations. For more on the valid codes, see our hreflang language codes reference.
Missing return links
If the fr-FR page links to the fr-CA page via hreflang, the fr-CA page must link back to fr-FR. Every hreflang relationship must be bidirectional. Missing return links are the most common hreflang error, and Google may ignore the tags entirely if they are not reciprocal.
Using fr-FR when fr would suffice
If you only have one French version, use fr. Adding the -FR region code implies that the content is specifically for France, which may cause Google to deprioritize it for French speakers elsewhere. Use fr to target all French speakers, and only add region codes when you have genuinely different content for different regions.
Inconsistent URL patterns
Keep your URL structure consistent across language variants. If your English pages are at /en/page/, your French pages should follow the same pattern (/fr/page/, /fr-fr/page/, etc.). Inconsistent structures make maintenance harder and increase the chance of errors. For implementation details, see our guide on how to implement hreflang.
Summary
For most sites, French hreflang is straightforward. Use fr if you have one French version. Add regional codes (fr-FR, fr-CA, fr-BE, fr-CH) only when your content genuinely differs by region. Include x-default for non-matched users. Make sure every page has self-referencing tags and return links.
The most common mistake is overcomplicating things. If your French content is the same for all French speakers, a single fr tag is all you need.
Generate hreflang tags for your French content
Enter your URLs, select your language variants, and get copy-paste-ready hreflang tags.
Try Hreflang Generator