// KOSTENLOSES TOOL · HREFLANG TAG ERSTELLEN
hreflang Tag erstellen
Trag ein URL-Muster und deine Sprachcodes ein und du bekommst den vollständigen hreflang-Satz — jede Version, x-default inklusive — plus den passenden xhtml:link-Block für die sitemap.xml. Kostenlos, im Browser, ohne Anmeldung.
Auch aufEnglishDeutschEspañolFrançais日本語한국어Português (Brasil)繁體中文
An der Stelle von {locale} steht das Sprachsegment. Es wird durch den kleingeschriebenen Code ersetzt (de-ch); ein leeres Segment fällt auf die Startseite zusammen.
ISO-639-1-Codes, optional mit -Script oder -REGION (de-AT, zh-Hant). Hinter dem Code darf ein Pfad stehen (de /preise/ legt Deutsch auf die Wurzel), eine vollständige URL oder ein eigenes Segment (de-CH ch).
Die Version für alle, deren Sprache in deinem Satz nicht vorkommt. Meist die englische Seite, die de-Version oder eine Sprachauswahl.
hreflang Tags in vier Schritten erstellen
Ein Muster, eine Liste, zwei Kopierbuttons. Der Generator leitet jede URL aus dem Muster ab, deshalb ist der Satz von Haus aus vollständig und wechselseitig — nichts, was du von Hand gegenprüfen müsstest.
- URL-Muster eintragen. Schreib die URL einer Version und setz {locale} an die Stelle des Sprachsegments: https://example.de/{locale}/preise/. Der Code wird kleingeschrieben eingesetzt, ein leeres Segment fällt auf die Startseite zusammen.
- Sprachcodes auflisten. Einer pro Zeile: de, de-AT, de-CH, en, fr. Folgt eine Version dem Muster nicht — Deutsch liegt auf der Wurzel, die Schweizer Preise unter /ch/ — schreib den Pfad hinter den Code: de /preise/. Eine vollständige URL oder ein eigenes Segment funktioniert genauso.
- x-default wählen. Leg fest, welche Version Suchende sehen, deren Sprache in deinem Satz nicht vorkommt. Bei einer DACH-Site mit englischer Fassung ist das die englische, sonst die de-Version oder eine Sprachauswahl. Auslassen ist erlaubt, der Generator warnt aber, weil du diese Entscheidung damit an Google abgibst.
- Beide Blöcke kopieren. Den Head-Block unverändert in den Head jeder Version einfügen — jede Seite muss alle Versionen nennen, sich selbst eingeschlossen. Den Sitemap-Block in die sitemap.xml, in ein urlset, das den xhtml-Namensraum deklariert. Ein Kanal genügt; wenn du beide pflegst, müssen sie übereinstimmen.
Warum hreflang zählt — und warum der Satz wechselseitig sein muss
hreflang ist ein Attribut am link-Element, das Suchmaschinen sagt, für welche Sprache und optional für welche Region jede Sprachversion einer Seite geschrieben ist. Ohne diese Angabe landet jemand, der auf Deutsch sucht, auf deiner englischen Seite, während die deutsche als Beinah-Dublette unindexiert liegen bleibt. Mit ihr tauscht Google die passende Version ein und bündelt die Signale der Gruppe, statt sie auf mehrere URLs zu verteilen.
Die Regel, an der die meisten Seiten scheitern, ist die Wechselseitigkeit. Jede Version muss jede andere und sich selbst nennen. Verweist Seite A auf B, B aber nicht zurück auf A, wertet Google die Angabe als nicht vertrauenswürdig und verwirft sie — für dieses Paar, nicht nur für eine Seite. Von Hand gepflegte Sätze laufen in dem Moment auseinander, in dem eine Sprache dazukommt. Deshalb schreibt dieser Generator den vollständigen Satz aus einem einzigen Muster und gibt dir einen Block, den du überall einfügst, statt eines Schnipsels pro Seite, den du dauernd nachziehen müsstest.
Dieselbe Ableitung baut die hreflang-Sätze auf clize.ai selbst: Sitemap und Sprachseiten entstehen aus einer einzigen Liste von Sprachpräfixen, also kann keine Seite eine Version behaupten, die die Sitemap nicht kennt.
de, de-DE, de-AT, de-CH — und was x-default damit zu tun hat
DACH ist der Grund, warum deutschsprachige Seiten öfter über hreflang stolpern als andere: drei Länder, eine Sprache, drei Suchmärkte. de allein steht für Deutsch überall — Deutschland, Österreich, Schweiz, Liechtenstein, Südtirol. de-DE, de-AT und de-CH engen es auf ein Land ein. Die genauere Angabe gewinnt: Wer in Wien sucht, bekommt de-AT, wenn es diese Version gibt, sonst fällt Google auf de zurück.
Die eigentliche Frage ist deshalb nie „welchen Code nehme ich", sondern „habe ich wirklich drei Seiten". Drei Länderversionen lohnen sich, wenn der Inhalt sich tatsächlich unterscheidet: Preise in CHF statt EUR, Versandkosten und Lieferzeiten, Impressum und Widerrufsbelehrung, Zahlarten wie Twint in der Schweiz oder EPS in Österreich — und in der Schweiz die Rechtschreibung ohne ß. Unterscheidet sich nichts davon, ist eine einzige de-Seite die bessere Wahl: eine URL, ein Satz Signale, nichts nachzupflegen.
Gemischt geht auch, und oft ist das die sauberste Lösung: de als Auffangversion plus de-CH für den einen Markt, der eigene Preise hat. Der Generator nimmt unterschiedlich genaue Codes in derselben Liste an — schreib de und de-CH untereinander und gib der Schweizer Zeile ihren eigenen Pfad: de-CH /ch/preise/.
x-default ist die Zeile, die in deutschen Sätzen am häufigsten fehlt. Sie sagt, welche Version jemand sieht, dessen Sprache in deinem Satz gar nicht vorkommt — die polnische Suchende, der brasilianische Einkäufer. Bei einer DACH-Site mit englischer Fassung zeigt x-default auf die englische Seite; gibt es keine, auf die de-Version oder auf eine Sprachauswahl. Ohne x-default entscheidet Google selbst — und das ist die eine Entscheidung in diesem Satz, die du kostenlos an dich ziehen kannst.
Ein ehrlicher Hinweis zur Prüfung: Der Generator gleicht den Sprachteil gegen ISO 639-1 ab und korrigiert Groß- und Kleinschreibung, den Regionsteil prüft er nicht. de-XY läuft hier durch und wird später von Google ignoriert. Die Länderliste musst du selbst gegenlesen.
Canonical und hreflang zusammen
Jede Sprachversion braucht ein selbstreferenzierendes Canonical: Auf der österreichischen Seite steht <link rel="canonical" href="https://example.de/at/preise/"> — also die Seite selbst. Das Canonical ist der einzige Tag im Head, der sich je Version unterscheidet; deshalb steckt es nicht im gemeinsamen Block oben. Schreib es pro Seite und lass es nie auf eine andere Sprachversion zeigen. Zeigt das Canonical der Schweizer Seite auf die deutsche, sagst du Google „indexiere stattdessen die deutsche" — und die Schweizer Seite fällt aus der hreflang-Gruppe heraus. Genau so verschwinden de-CH-Versionen, an denen technisch sonst nichts falsch ist.
Die beiden übrigen Bedingungen sind rein mechanisch: Jede URL im Satz muss 200 zurückgeben und indexierbar sein — keine Weiterleitung, kein noindex — und die URLs müssen absolut sein, mit Schema und Host. Der Generator gibt ausschließlich absolute URLs aus. Weiterleitungen und Indexstatus siehst du im Crawl oder, für deine eigene Domain kostenlos, mit clize seo check: HTTP-Status und Google-Indexstand pro Seite.
Häufige hreflang-Fehler
- Ländercode statt Sprachcode.
atoderchallein sind ungültig, richtig sindde-ATundde-CH. Undukheißt Ukrainisch, nicht Vereinigtes Königreich. - ger oder deu statt de. hreflang will ISO 639-1, also den Zweibuchstabencode. Der Generator warnt bei allem, was er dort nicht findet.
- Unterstrich statt Bindestrich.
de_ATwird stillschweigend zude-ATnormalisiert — im eigenen CMS bleibt es trotzdem falsch. - Fehlende Rückverweise. A nennt B, B nennt A nicht. Das Paar wird verworfen. Denselben vollständigen Block in jede Version.
- Kein Selbstverweis. Jede Seite muss sich selbst im Satz nennen. Der erzeugte Block tut das bereits.
- Canonical auf eine andere Sprache. Diese Seite fällt aus dem Satz. Selbstreferenzierendes Canonical in jeder Version.
- Relative URLs. hreflang braucht absolute URLs mit Schema und Host. Der Generator gibt nichts anderes aus.
- Head und Sitemap sagen Verschiedenes. Entscheide dich für einen Kanal oder erzeuge beide aus derselben Quelle — wie hier.
Für die anderen maschinenlesbaren Flächen derselben Seite gilt dieselbe Ein-Quelle-Regel: Der FAQ-Schema-Generator schreibt JSON-LD und sichtbares HTML aus einer Liste, und wenn du eine llms.txt für Agenten veröffentlichst, schick sie durch den llms.txt Validator — ein relativer Link dort ist derselbe Fehlertyp wie ein relatives hreflang hier.
// FAQ
Was ist hreflang?
hreflang ist ein Attribut am link-Element, das Suchmaschinen sagt, für welche Sprache und optional für welche Region jede Sprachversion einer Seite geschrieben ist. Google zeigt damit die Version, die zur Sprache und zum Standort der Suchenden passt, und behandelt die Versionen als eine Gruppe statt als Dubletten.
Reicht de oder brauche ich de-DE, de-AT und de-CH?
de allein reicht, solange es eine einzige deutsche Seite für den ganzen Sprachraum gibt. Eigene Länderversionen lohnen sich erst, wenn der Inhalt sich wirklich unterscheidet: Preise in CHF, Versand, Impressum, Zahlarten, Schweizer Schreibung ohne ß. Mischen ist erlaubt und oft am saubersten: de als Auffangversion plus de-CH für den Markt mit eigenen Preisen.
Kann ich at oder ch als hreflang-Wert nehmen?
Nein. hreflang braucht immer eine Sprache; ein Ländercode allein ist ungültig. Richtig sind de-AT und de-CH. Auch ger und deu sind falsch, weil hreflang den zweibuchstabigen ISO-639-1-Code will, also de.
Was ist x-default und brauche ich es?
x-default benennt die Version für alle, deren Sprache in deinem Satz nicht vorkommt — etwa eine Sprachauswahl, die Startseite oder die englische Fassung. Pflicht ist es nicht, empfohlen schon: Ohne x-default entscheidet die Suchmaschine selbst, welche Version diese Leute bekommen.
Gehören die hreflang-Tags in den Head oder in die Sitemap?
Jeder Kanal genügt für sich: Link-Elemente im Head, ein HTTP-Link-Header für Dateien ohne HTML oder xhtml:link-Einträge in der sitemap.xml. Bei vielen Versionen hält die Sitemap den Head schlank. Nutzt du beides, müssen beide dasselbe sagen — also aus einer Quelle erzeugen.
Widersprechen sich hreflang und Canonical?
Nein, solange jede Version ein selbstreferenzierendes Canonical hat. Zeigt ein Canonical auf eine andere Sprachversion, forderst du die Suchmaschine auf, stattdessen jene zu indexieren — und die Seite fällt aus der hreflang-Gruppe heraus.
Prüft dieses Tool meine vorhandenen hreflang-Tags?
Nein, es erzeugt aus deinem URL-Muster einen vollständigen, wechselseitigen Satz. Ersetz deine bestehenden Tags in jeder Version durch den erzeugten Block, statt sie zu mischen, damit keine Seite einen veralteten oder unvollständigen Satz behält.
Tags gesetzt? Jetzt nachsehen, was Google wirklich sieht.
Die eigene Site zu prüfen kostet nichts: jede Seite mit HTTP-Status und Google-Indexstand, Positionen und Impressionen aus der Search Console im Vergleich zum letzten Zeitraum, dazu die Zugriffe nach Quelle mit KI-Engines getrennt ausgewiesen. Ein Befehl aus deinem Agenten heraus.
$ npm i -g @clize/clize && clize install $ clize seo check --domain deinedomain.de[ Agent SEO by Clize → ]