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 #10 in International SEO#181 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 SEOInternational SEO is the practice of optimizing a site so search engines understand which countries and/or languages it targets, and serve the right version to each user. It spans URL structure, hreflang, and on-page localization. across six areas: (1) URL/domain structure — start with a locale inventory (market, URL pattern, audience, canonical, indexability, alternate method), then ccTLD vs subdomainConfiguring a site or URL to target users in a specific country. vs subfolder, applied consistently; (2) hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. — the core, where 67% of hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others.-using domains in my 374,756-domain study had errors; (3) geo-redirectsA geo-redirect automatically sends a visitor to a location- or language-specific URL based on IP or browser signals — a UX/serving mechanism that's separate from, and can actively undermine, hreflang. vs GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. — test a request-state matrix (IP, Accept-Language, cookie, deep links) since GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. mostly crawls from US IPs and sends no Accept-Language; (4) technical signals — html langThe HTML lang attribute is a global attribute — most importantly set on the <html> element (<html lang=\"en\">) — that declares the natural language of THIS document's content using a BCP 47 language tag (en, es, en-US, pt-BR). It's distinct from hreflang, which points to alternate-language URLs. Google ignores lang for language detection; Bing uses it as a fallback targeting signal; and it drives accessibility (screen-reader pronunciation) and the browser auto-translate prompt., Content-Language, JS renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM., paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., 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 crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index., not page-by-page. Prioritize missing return tags and broken URLs over x-defaultx-default is the reserved hreflang value that points to a fallback URL — the page Google shows when a user's locale doesn't match any of your other hreflang tags. It is optional and does not mean \"English.\" 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 sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.) 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-redirectA geo-redirect automatically sends a visitor to a location- or language-specific URL based on IP or browser signals — a UX/serving mechanism that's separate from, and can actively undermine, hreflang., or content errors against it.

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

  • ccTLDCountry-code top-level domain like .de or .co.uk — a strong geotargeting signal. (example.de) — strongest geotargetingConfiguring a site or URL to target users in a specific country. 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 linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. + backlinks is what you’re verifying.

Two more checks here: never use URL parametersThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO. 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 ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility. still has a GeoGenerative Engine Optimization — visibility inside AI answer engines. 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 ScaleIf page A lists page B as an alternate, B must list A back — or Google ignores the pair..

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-1Two-letter language codes used in hreflang (en, es, de). for language and ISO 3166-1 Alpha-2Two-letter country codes used in hreflang region targeting (us, gb, au). 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 slashA trailing slash is the forward slash (/) at the end of a URL — example.com/page/ versus example.com/page. Except at the bare root domain, the two versions are different URLs to search engines, so you pick one format and enforce it., http vs httpsHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.') and orphaned locale URLs (hreflang pointing at 404s or redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.) 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 tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content..

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 hreflangIf page A lists page B as an alternate, B must list A back — or Google ignores the pair. (no return tag)
  7. Hreflang to non-canonical
  8. Hreflang to broken page
  9. HTML lang attributeThe HTML lang attribute is a global attribute — most importantly set on the <html> element (<html lang=\"en\">) — that declares the natural language of THIS document's content using a BCP 47 language tag (en, es, en-US, pt-BR). It's distinct from hreflang, which points to alternate-language URLs. Google ignores lang for language detection; Bing uses it as a fallback targeting signal; and it drives accessibility (screen-reader pronunciation) and the browser auto-translate prompt. 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 crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor.. 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, NoindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. 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.

TIP Audit the whole hreflang cluster, not one tag at a time

A mostly connected cluster can still contain one broken reciprocal pair. Sitemap-only mode does not inspect page-head tags or HTTP Link headers.

Map reciprocal relationships with my free returntag - hreflang checker Free

  1. Run the locale sitemap set and review every language, region, and x-default node together.
  2. Prioritize missing returns, broken targets, and clusters split by inconsistent URLs.
  3. Fix both sides of each relationship, rerun, then verify head or HTTP-header implementations separately when used.
The graph keeps the intact relationships visible while isolating the one-way pair that needs repair.

The sitemap-only result reads five URLs and 24 annotations across en-US, en-GB, fr-FR, de-DE, and x-default. It reports nine reciprocal pairs, one missing return, and zero broken targets. The issue says the fr-FR URL does not link back to en-US.

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 SEOInternational SEO is the practice of optimizing a site so search engines understand which countries and/or languages it targets, and serve the right version to each user. It spans URL structure, hreflang, and on-page localization. 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 renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM.. 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 sitemapsAn XML sitemap is a UTF-8 file listing the canonical URLs on your site (with optional lastmod) so search engines can discover and prioritize them. It's a discovery and diagnostic aid, not a guarantee of indexing — and Google ignores its priority and changefreq tags.. SPA sites (React, Vue, Next.js in CSR mode) are the highest risk.
  • PaginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. 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 TTFBTime to First Byte — the time from the start of a request to when the first byte of the response arrives. It's a diagnostic metric (not a Core Web Vital) and a major input to FCP and LCP; ≤0.8 s is good. and improve Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data., 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 descriptionsThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through., 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 contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. 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.

6. Performance audit by market

Finally, where are you actually winning and losing. Keep two data types separate as you go: Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. 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 localizationLocalization is adapting content for a specific target market — not just translating the words, but adjusting currency, formats, idioms, cultural references, local search terms, and trust signals so the experience feels native. 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 VitalsWeb Vitals is Google's initiative (launched May 2020) for unified page-experience quality signals. Core Web Vitals — LCP, INP, and CLS — are the subset used in ranking; the rest (TTFB, FCP, TBT, Speed Index) are diagnostic, not ranking factors. by country too (CrUXChrome User Experience Report — Google's public dataset of real-world (field) performance data from eligible Chrome users. It's the official field-data source behind the Core Web Vitals program. in PageSpeed InsightsPageSpeed Insights (PSI) is a free Google tool at pagespeed.web.dev that reports two kinds of data for a URL: real-user field data from the Chrome UX Report and a single Lighthouse lab run with the 0–100 Performance score. Only the field Core Web Vitals are what Google uses for ranking.), 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 a quote first.