Skip to main content

Confirm

Are you sure?

SEO · Checked once per domain

Locale content is actually translatedWhat it checks and how to fix it

What it checks

Compares the visible text of pages that declare each other as different-language hreflang alternates. Any pair that is 90% or more similar is flagged as probably untranslated (warning); the check passes when every compared pair is clearly different, and is skipped when the audit found no cross-language pairs.

Why it matters

A "/de/" page that still carries the English body copy is not a German page: it competes with the original as a near-duplicate and gives German searchers nothing. Google can treat large sets of such pages as duplicate or scaled low-value content, which can drag down the whole site rather than just the affected URLs.

How to fix it

Translate the full main content of each flagged page: the title, headings and body, not only the navigation and footer. A locale that has no translated content yet should not be published or listed in hreflang until it does.

While a locale is unfinished, remove it from the hreflang set and keep it out of the index:

<!-- on the untranslated /de/ page -->
<meta name="robots" content="noindex, follow">

and drop its entry from the alternates of the other locales:

<link rel="alternate" hreflang="en" href="https://example.com/pricing">
<link rel="alternate" hreflang="fr" href="https://example.com/fr/tarifs">
<!-- no hreflang="de" line until the German page is translated -->

The check is a text-similarity heuristic, so review each flagged pair: short pages made mostly of product names or code can be legitimately similar.

Monitor this automatically

Full Stack Audit runs this check and 126 others on your site on a schedule, and emails you when one that passed starts failing.

More SEO checks