Hreflang for German: DE, AT, and CH Variants

How to configure hreflang tags for German content targeting Germany, Austria, and Switzerland. Language codes, regional differences, implementation examples, and common pitfalls.

German is spoken natively in Germany, Austria, Switzerland, Liechtenstein, Luxembourg, and parts of Belgium and Italy. For most websites, the three markets that matter are Germany, Austria, and Switzerland. If you serve content to more than one of these regions, hreflang tags tell Google which version belongs where. For background on hreflang in general, see our complete hreflang guide.

This guide covers the language codes, when regional variants actually make sense, implementation patterns, and the mistakes that trip people up.

German Hreflang Language Codes

Hreflang uses ISO 639-1 for languages and ISO 3166-1 alpha-2 for regions. Here are the codes for German:

| Code | Meaning | |---|---| | de | German (no region specified) | | de-DE | German for Germany | | de-AT | German for Austria | | de-CH | German for Switzerland |

Language codes are always lowercase. Region codes are always uppercase. Separated by a hyphen.

You will occasionally see de-LI (Liechtenstein) or de-LU (Luxembourg) mentioned, but these are rarely needed in practice. Most sites targeting those countries use de or de-CH as a reasonable fallback.

When de Alone Is Enough

Use the plain de code when you have a single German version of your content that is not customized for any specific country. This is the right choice when:

  • Your German content is written in standard High German (Hochdeutsch)
  • You do not have different pricing, products, or legal terms for different German-speaking countries
  • You want all German speakers to land on the same page regardless of location

Standard written German is highly consistent across Germany, Austria, and Switzerland. Unlike French, where Quebec French has distinct vocabulary, or English, where US and UK spelling conventions differ noticeably, written German is more uniform. The differences that do exist are subtle and rarely affect whether a user can understand the content.

For informational content, blogs, documentation, and general marketing pages, de alone is almost always sufficient.

When Regional Codes Matter

Regional variants become necessary when the content itself changes between countries. Here are the common scenarios:

Pricing and currency

Germany and Austria use the euro. Switzerland uses the Swiss franc. If your site displays prices, you likely need separate pages for Switzerland at minimum. An Austrian and German version might share the same page since both use EUR, but Swiss users need to see CHF.

Legal and compliance content

Privacy policies, terms of service, refund policies, and similar legal pages are governed by national law. Germany follows German federal law. Austria has its own civil code. Switzerland is not in the EU, which means different data protection rules. If you have localized legal content, use regional hreflang codes.

Product availability

E-commerce sites often have different product catalogs or shipping options per country. If a product is available in Germany but not in Austria, the product page should use de-DE rather than generic de.

Local services

Job listings, store locators, event pages, and other location-specific content obviously need regional targeting.

Vocabulary differences

While written German is mostly standardized, there are some differences:

| Germany | Austria | Switzerland | English | |---|---|---|---| | Kartoffel | Erdapfel | Kartoffel/Herdapfel | potato | | Tomate | Paradeiser | Tomate | tomato | | Tschuss | Servus | Tschau/Ade | bye | | Januar | Janner | Januar | January | | Stuhl | Sessel | Stuhl | chair |

These differences matter more in casual or marketing content than in technical or formal writing. Most businesses do not create separate content just for vocabulary reasons.

Implementation Examples

Here are practical hreflang setups for common scenarios. For more general patterns, see our hreflang HTML examples.

Single German version with English

The simplest case. One German page for all German speakers:

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/pricing/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/pricing/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing/" />
</head>

The de tag covers German speakers in every country. The x-default fallback sends everyone else to English.

Germany and Austria together, Switzerland separate

This is the most common pattern for businesses that sell in EUR and CHF:

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/pricing/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/pricing/" />
  <link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/pricing/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing/" />
</head>

Here, de serves as the default for Germany, Austria, and other German-speaking regions. de-CH specifically targets Swiss German speakers. Google will prefer de-CH for users in Switzerland and fall back to de for everyone else.

Separate versions for all three countries

If you have distinct content for each market:

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/pricing/" />
  <link rel="alternate" hreflang="de-DE" href="https://example.com/de-de/pricing/" />
  <link rel="alternate" hreflang="de-AT" href="https://example.com/de-at/pricing/" />
  <link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/pricing/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing/" />
</head>

Note that there is no generic de here. German speakers outside Germany, Austria, and Switzerland (say, in Luxembourg or Liechtenstein) will not match any entry and will get the x-default version. If you want to cover those users with German content, add a generic de as well:

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/pricing/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/pricing/" />
  <link rel="alternate" hreflang="de-DE" href="https://example.com/de-de/pricing/" />
  <link rel="alternate" hreflang="de-AT" href="https://example.com/de-at/pricing/" />
  <link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/pricing/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing/" />
</head>

The de version catches all German speakers who are not specifically in DE, AT, or CH.

Switzerland with multiple languages

Switzerland has four official languages. If you target the Swiss market with both German and French content:

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
  <link rel="alternate" hreflang="de-CH" href="https://example.com/de-ch/about/" />
  <link rel="alternate" hreflang="fr" href="https://example.com/fr/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 setup handles German and French speakers in Switzerland specifically while also serving generic German and French versions for users in other countries.

Choosing x-default for German Sites

The x-default tag specifies what users see when they do not match any of your hreflang entries. Your options:

English version. The most common choice for international sites. Users who do not speak German or any other language you support get English.

German version. If your site is primarily German and most of your audience is German-speaking, pointing x-default to the German version is reasonable.

Language selector. If you have a dedicated language selection page, point x-default there.

There is no wrong answer as long as the page you point to is useful for users who do not match your other hreflang entries.

Common Mistakes

Using de-AT when content is identical to de-DE

If your Austrian and German content is exactly the same text, you do not need both de-AT and de-DE. Use de to cover both. Creating regional variants with identical content wastes effort and creates more opportunities for hreflang errors.

Forgetting self-referencing tags

Every page in a hreflang set must include a tag that points to itself. The de-CH page must have hreflang="de-CH" with its own URL. Forgetting this is one of the most common hreflang implementation errors.

Missing return links

Hreflang relationships are bidirectional. If the de-DE page references the de-AT page, the de-AT page must reference the de-DE page back. If return links are missing, Google may ignore the entire hreflang set.

Using de-SZ for Switzerland

The ISO 3166-1 code for Switzerland is CH (from the Latin "Confoederatio Helvetica"), not SZ. SZ is the code for Eswatini (formerly Swaziland). Using de-SZ is a common and embarrassing mistake. For a full reference, see our hreflang language codes list.

Inconsistent hreflang across implementation methods

If you use HTML link elements on some pages and sitemap annotations on others, make sure they do not conflict. Contradictory signals across methods will confuse Google. Pick one method and use it consistently, or be very careful when combining approaches.

Swiss German (Schweizerdeutsch) is spoken, not written

Swiss German dialects (Schweizerdeutsch) are primarily spoken languages. Written content in Switzerland uses standard High German (Hochdeutsch), the same written form used in Germany and Austria. You do not need to worry about dialectal differences in written content.

Real-World Scenarios

SaaS company with EUR and CHF pricing

A SaaS company sells subscriptions in euros for Germany and Austria, and in Swiss francs for Switzerland. The pricing page has two versions: one showing EUR and one showing CHF. All other content is identical.

Setup: Use de for the generic German version (including the standard pricing page in EUR), and de-CH only for the Swiss pricing page. Non-pricing pages just use de.

E-commerce shipping to DACH

An online retailer ships to Germany, Austria, and Switzerland with different shipping costs and product availability per country.

Setup: Use de-DE, de-AT, and de-CH for product and checkout pages where the information differs. Use generic de for blog posts, help articles, and other content that is the same across all three countries.

News site with regional editions

A German news outlet has separate editorial teams for Germany and Austria, covering local news alongside international stories.

Setup: Use de-DE and de-AT for locally relevant stories. For international news coverage that is identical, use de.

Summary

German hreflang is simpler than many people expect. Written German is highly standardized, so most sites only need the plain de code. Add regional codes (de-DE, de-AT, de-CH) when your content genuinely differs between countries, most commonly for pricing, legal content, or country-specific product information.

Keep it simple. Use de when one version works for everyone. Add regional codes only when the content justifies it. Always include self-referencing tags and return links. And remember: Switzerland's country code is CH, not SZ.

Generate hreflang tags for your German content

Enter your URLs, select your regions, and get correct hreflang markup in seconds.

Try Hreflang Generator