International SEO Audit

A step-by-step international SEO audit — URL structure, hreflang errors, geo-redirects, technical signals, content quality, and country-level performance.

First published: Jun 25, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #6 in International SEO#262 on the site

An international SEO audit checks how a site signals language and country to search engines across six areas: URL/domain structure (start with a locale inventory — market, URL pattern, canonical, alternate method), hreflang, geo-redirects (test across a request-state matrix — IP, Accept-Language, cookie, deep links), technical signals (html lang, Content-Language, JS rendering, pagination), content localization, and country-level performance. Hreflang is the core — my Brighton SEO 2023 study of 374,756 domains found 67% of domains using hreflang have at least one error. The GSC International Targeting report is gone (removed Sept 22, 2022), so auditors now lean on crawlers like Ahrefs Site Audit (with its hreflang cluster graph) and Screaming Frog. Prioritize missing return tags and broken URLs over x-default and self-referential tags. Keep observed performance data (GSC, GA4) separate from Ahrefs' estimates — neither alone proves why a market underperforms.

TL;DR — Audit international SEO across six areas: (1) URL/domain structure — start with a locale inventory (market, URL pattern, audience, canonical, indexability, alternate method), then ccTLD vs subdomain vs subfolder, applied consistently; (2) hreflang — the core, where 67% of hreflang-using domains in my 374,756-domain study had errors; (3) geo-redirects vs Googlebot — test a request-state matrix (IP, Accept-Language, cookie, deep links) since Googlebot mostly crawls from US IPs and sends no Accept-Language; (4) technical signals — html lang, Content-Language, JS rendering, pagination, server geolocation; (5) content quality — machine translation (judged on value and purpose, not the method alone), gaps, local E-E-A-T; (6) country-level performance, keeping observed GSC/GA4 data separate from Ahrefs’ estimates. Run it at scale with a crawler, not page-by-page. Prioritize missing return tags and broken URLs over x-default and self-referential tags. The GSC International Targeting report is gone — hreflang errors now surface in Enhancements.

Evidence for this claim Google documents multiple locale-specific URL structures and multiple target-locale signals, so an audit should assess URL architecture and the signals around it together. Scope: Google Search international architecture and target-locale signals. Confidence: high · Verified: Google: Managing multi-regional sites Evidence for this claim Google supports hreflang in HTML, HTTP headers, and XML sitemaps and requires reciprocal alternate relationships, making all delivery locations and return links relevant audit surfaces. Scope: Google Search hreflang delivery and reciprocity guidance. Confidence: high · Verified: Google: Localized versions

Run the whole thing with a crawler, not by hand. Manual checks only reveal issues on the exact pages you look at; a crawl (Ahrefs Site Audit or Screaming Frog) catches the rest. Here’s the six-area process I work through.

1. URL structure audit

Before you score anything, build a locale inventory — one row per market/language combination, listing the URL pattern, intended audience, canonical target, indexability, and which hreflang delivery method (HTML head tags, HTTP headers, or sitemap) is actually deployed. This turns the rest of the audit from a pile of individual URL findings into a dataset you can join your crawl against:

MarketLocaleURL patternAudienceCanonicalIndexableAlternate method
Germanyde-DEexample.com/de/DE-based buyersSelfYesHTML head tags
Global fallbackx-defaultexample.com/Unmatched localesSelfYesHTML head tags

Replace those rows with your own locales — the point is one normalized table before you start scoring hreflang, geo-redirect, or content errors against it.

Three structures, each with a different trade-off, and Google treats them as legitimate:

  • ccTLD (example.de) — strongest geotargeting signal, server location irrelevant, but expensive and you build domain authority separately per domain.
  • Subdomain (de.example.com) — easy setup, flexible hosting, but users may not read it as country-targeted.
  • Subfolder (example.com/de/) — simplest, consolidates authority on one domain, but harder to split out and tied to one server location.

There’s no universally superior structure — each has had success stories. The audit question isn’t “which is best,” it’s “is the chosen structure implemented consistently?” The failure mode is mixed signals: a .de domain hosted on US servers serving English content, or a site that uses /de/ on some pages and de.example.com on others. Consistency across TLD + content language + server/CDN location + internal links + backlinks is what you’re verifying.

Two more checks here: never use URL parameters for language/country targeting (Google calls this “not recommended” — it makes segmentation hard), and remember GSC no longer has a manual country-targeting setting. For ccTLDs Google infers geotargeting from the TLD automatically. If you target Bing markets, Bing Webmaster Tools still has a Geo Targeting feature (domain/subdomain/directory/page level) that’s worth setting.

2. Hreflang audit (the core)

This is where most international audits live and die. Hreflang tags work in pairs to form a cluster of equivalent pages — when configured correctly, the right version swaps in for the right country during re-ranking; when broken, the swap doesn’t happen and users see the wrong language.

This section covers what belongs in a broad audit — the error taxonomy, what actually breaks a cluster, and how I triage with a crawler. For the full extraction-to-matrix mechanics (pulling every annotation from all three implementation methods, building the reciprocal matrix, and reading cluster graphs at scale), see How to Audit Hreflang at Scale.

The nine error types

From my Brighton SEO 2023 study (The Most Common Hreflang Issues Across 374,756 Domains, the largest hreflang study to date — nearly 10× larger than any other), here are the errors to hunt for, with how common each is:

Error% of hreflang-using domains
Missing x-default56.3%
Missing self-referencing tags18.0%
Tags pointing to redirected/broken pages16.9%
Missing reciprocal (return) tags15.3%
Tags pointing to non-canonical URLs8.0%
Incorrect hreflang values (wrong language/country codes)4.6%
Inconsistent language attributes (hreflang vs html lang)3.2%
Multiple pages for the same language2.5%
Same page for multiple languages2.5%

67% of domains using hreflang have at least one issue. But not all errors are equal, and this is the nuance most checklists miss:

  • Missing return tags are the most functionally damaging. If page A references page B but B doesn’t link back to A, Google may ignore the whole annotation pair. “If page X links to page Y, page Y must link back to page X.”
  • Missing x-default is the most common (56.3%) but not strictly required — it’s a recommended fallback, not a hard requirement.
  • Self-referencing tags are a best practice, not a requirement either. 18% miss them and many still work fine. Fix for robustness, but it’s not a critical blocker.
  • Value errors are real breakers: using jp instead of ja for Japanese, typos like js for ja, three-letter codes (gbr instead of gb), la (Laos) misused for Latin America. Use ISO 639-1 for language and ISO 3166-1 Alpha-2 for region. (Google does tolerate some things — underscores like en_gb, the specially reserved en-UK, relative URLs, UTF-8 encoded characters.)
  • Inconsistent URL formats (trailing slash, http vs https) and orphaned locale URLs (hreflang pointing at 404s or redirects) quietly break clusters too. Alternate URLs must be fully qualified with the transport method — https://example.com/page, not //example.com/page or /page.

A key distinction I drew at Pubcon 2019: hreflang is about the indexed version, not the canonical. It doesn’t matter what your canonical is set as — it matters what the indexed version is. If your hreflang points to a URL that’s canonical-chained away from the indexed URL, the signal can be lost. Verify the indexed URL with GSC’s URL Inspection, not just the canonical tag.

Ahrefs Site Audit hreflang checks

Ahrefs Site Audit runs a specific set of hreflang checks I lean on:

  1. Hreflang annotation invalid (wrong ISO codes, e.g. en-en or en-uk)
  2. Self-referencing hreflang annotation missing
  3. Page referenced for more than one language
  4. More than one page for the same language
  5. Hreflang and HTML lang mismatch
  6. Missing reciprocal hreflang (no return tag)
  7. Hreflang to non-canonical
  8. Hreflang to broken page
  9. HTML lang attribute missing / hreflang defined but HTML lang missing

Ahrefs hreflang cluster visualization (the differentiator)

This is the part no competing guide calls out, and it genuinely changed how I audit. In Site Audit, open the URL Details panel for any page, go to the Hreflangs tab, and you see the page’s full hreflang cluster rendered as a network graph — every page in the cluster as a node, every annotation as an edge. Errors are highlighted in red, so a missing or mistakenly-added link in the cluster jumps out visually.

It’s the first tool to show hreflang clusters this way. Instead of reading a spreadsheet of “page X is missing a return tag to page Y,” you see the broken edge in the graph. It makes it far easier to spot which cluster is broken at a glance — and far easier to explain the problem to stakeholders than a typical export.

Screaming Frog hreflang method

If you prefer Screaming Frog: enable Configuration > Spider > Crawl Hreflang before crawling. For multi-domain implementations (ccTLDs that reference each other), add the external domains under Config > CDNs — without that, hreflang tags pointing to .de, .fr, etc. won’t be validated. Run post-crawl analysis to populate the hreflang filters, then review them (Contains Hreflang, Non-200 Hreflang URLs, Unlinked Hreflang URLs, Missing Return Links, Inconsistent Language & Region Return Links, Non-Canonical Return Links, Noindex Return Links, Incorrect Language & Region Codes, Multiple Entries, Missing Self Reference, Not Using Canonical, Missing X-Default, and tags placed outside the head). Export via Reports > Hreflang.

For a manual spot-check: view source on a sample page, search for hreflang, and for each alternate URL confirm it returns 200 and has a return tag pointing back, with matching ISO codes.

3. Geo-redirect audit

This is the silent killer. Googlebot crawls primarily from US IP addresses. If your site auto-redirects every non-local visitor to a “local” version based on IP, Googlebot — coming from a US IP — gets sent to the US version every time. The consequence: Googlebot never reaches your other language versions, can’t see their return tags, and those versions can effectively fall out of the index. A silent deindex.

There is no path that follows all international SEO best practices while also maintaining geo-IP redirects on individual pages. Google itself notes “IP location analysis is difficult and generally not reliable” and that “most, but not all, Google crawls originate from the US.” On locale-adaptive pages (ones that serve different content by detected location/language instead of separate URLs), Google is explicit that it “might not crawl, index, or rank all your content for different locales” — largely because Googlebot typically sends no Accept-Language header at all. (Managing Multi-Regional and Multilingual Sites; How Google Crawls Locale-Adaptive Pages)

Test across a request-state matrix, not one condition:

  • No IP signal, no Accept-Language, no cookie — Googlebot’s typical state. Confirm the URL still resolves to a crawlable, indexable page instead of bouncing to a default market.
  • US IP (or VPN) with default browser settings — see which version loads.
  • Varied Accept-Language values — check the redirect doesn’t override an explicit hreflang/language choice.
  • Existing locale cookie — verify it doesn’t permanently trap a user who tries to switch markets.
  • Deep links straight to a non-default locale URL (not just the homepage) — confirm they load the requested locale instead of bouncing to a default.

From that matrix:

  • Identify any IP- or cookie-based redirects.
  • The only acceptable auto-redirect is from the x-default / root URL. Individual language/country pages should never auto-redirect.
  • Confirm users can manually override with a language selector, and that a cookie preference doesn’t permanently trap them.

4. Technical checks

A cluster of signals beyond hreflang:

  • The html lang attribute. Set it correctly, but know its role: Google uses the visible content of the page to detect language, not the lang attribute. So html lang is mostly for UX/accessibility (screen readers) and other engines — Google ignores it for language detection. A page with lang="en" serving French content is still a bug worth fixing. (Ahrefs flags hreflang/lang mismatches.)
  • Content-Language HTTP header. The <meta http-equiv="content-language"> tag is deprecated by the HTML spec — don’t use it. The HTTP response header is still valid, and it matters because Bing weights Content-Language as a primary language signal while Google treats it as a weak hint. For Bing markets, set the header correctly.
  • JavaScript rendering. If hreflang is injected by client-side JS after load, crawlers that don’t fully render JS may miss it, or process it late. Compare the raw page source (no JS) against the rendered version in URL Inspection. Best practice: hreflang in server-rendered HTML head, HTTP Link headers, or XML sitemaps. SPA sites (React, Vue, Next.js in CSR mode) are the highest risk.
  • Pagination with hreflang. Each paginated URL needs its own complete hreflang set, and page 2 in English should point to page 2 in French — not the French homepage. If you also canonicalize paginated pages, make sure hreflang points to the canonical/indexed URL, since Google ignores hreflang on non-canonical pages.
  • Server IP / CDN geolocation for ccTLDs. For ccTLD properties, hosting in-country (or a CDN with PoPs there) is a mild reinforcing signal — TLD dominates, but consistency helps in competitive markets. More practically, regional PoPs cut TTFB and improve Core Web Vitals, which is measurable.
  • GSC after deprecation. The International Targeting report was deprecated/removed on September 22, 2022 (live since 2014), and nothing replaced it directly. Hreflang errors now surface in the Enhancements section, with limited detail — treat it as a secondary signal behind your crawl tools.

5. Content quality audit

Implementation can be perfect and the site can still fail in-market because the content isn’t actually localized:

  • Machine translation check. Unedited MT is a red flag. It misses local search intent (the terms people in that country actually search), cultural context, and cohesive semantic structure. Google holds translated pages to the same quality bar as original content. Check whether titles, meta descriptions, and URL slugs were localized too — slugs should use local keywords, not transliteration. One nuance worth auditing accurately: machine translation isn’t automatically a policy violation. Google’s scaled-content-abuse policy turns on purpose and value — it names automated translation as one example of a technique that becomes abusive when it’s used primarily to manipulate rankings and adds little value to users, and the same test applies to human-written scaled content. Judge translated pages on usefulness, originality, accuracy, and market fit — not on “was this translated by a machine” alone.
  • Thin/duplicate content across versions. Watch for near-identical pages across languages, and for primary-market pages cannibalizing the localized versions for the same queries.
  • Market-specific content gaps. Use Ahrefs Site Explorer > Organic Keywords filtered by target country to see what the site ranks for in each market, and compare to the primary market. High-performing English content with no localized equivalent is your gap list.
  • Local E-E-A-T. Authority doesn’t travel automatically — relevance is built, not assumed. US PR coverage doesn’t earn trust in Japan. Audit for local author bios and credentials, local references, local certifications/compliance, reviews on local platforms (e.g. Rakuten in Japan), and links from local sites. A central content team with no local input can’t hit the same threshold as a local subject-matter expert.
Evidence for this claim Audit translated pages for usefulness, originality, accuracy and market fit; Google’s scaled-content policy focuses on manipulation and little user value regardless of method, with automated translation only one example in that abusive context. Scope: multilingual and multi-regional websites, crawling, indexing and search reporting as applicable Confidence: high · Verified: Spam policies for Google Web Search

6. Performance audit by market

Finally, where are you actually winning and losing. Keep two data types separate as you go: Search Console and GA4 give you first-party observed rows (actual clicks, impressions, sessions); Ahrefs’ country traffic-share and keyword-volume numbers are third-party estimates. Both are useful for building a hypothesis about a market — neither one, by itself, proves why Google chose to rank or not rank a page in that market. Google says as much about geotargeting generally: “geotargeting isn’t an exact science.” Treat crawl and performance findings as leads to confirm, not final proof.

  • Country-level traffic. Ahrefs Site Explorer > Metrics by Country shows organic

  • Country-level traffic. Ahrefs Site Explorer > Metrics by Country shows organic traffic share and keyword counts per country. Compare each market’s actual traffic share against its potential (search demand there). Markets where you have content but disproportionately low traffic signal a technical/hreflang problem; good rankings with poor CTR signal a title/description localization problem.

  • Benchmark local competitors. Site Explorer > Organic Competitors filtered by country surfaces who actually ranks in that market — often entirely different, local-language entities than your global competitors. Use a link/content gap against them.

  • GA4 country segmentation rounds it out: high traffic + poor engagement = content quality; low traffic to a market you’ve localized = discovery/hreflang. Check Core Web Vitals by country too (CrUX in PageSpeed Insights), since regional performance varies widely without a CDN.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.