Most sites that sell in more than one country are quietly leaking traffic in at least one of them. An international SEO audit is how you find out where. Not a generic crawl with a language filter bolted on — a deliberate pass over targeting signals, market-by-market ranking data, and the duplicate-content traps that only appear once you run multiple locales.
The pattern repeats across almost every multi-market site I have looked at. The home market is fine. The second and third markets rank for the brand name and nothing else. The team assumes it is a content problem. Usually it is a targeting problem, and targeting problems are cheap to fix once you can see them.
Start by proving which market each page is actually ranking in
Before you touch hreflang, get the ranking picture right. Third-party SEO tools query a specific country index. If your tool is set to the US index and your site sells into Singapore, Germany, and Australia, the report will look catastrophic even when the site is healthy. I have watched teams panic over a near-empty keyword profile that was purely a market-selection mistake in the tool.
So step one: check every market separately. Pull organic keywords and top pages per country, and note which URL Google is actually showing. A German query returning your English page is a real signal, not a rendering quirk. In SEO Rocket, the market a project queries is a setting you control per project, and rank checks show the ranking URL alongside position and traffic estimate — which is exactly the field you need when a market looks dead. Treat those position numbers as estimates from periodic crawls, and lean on Google Search Console’s country filter as ground truth for your own site.
Audit hreflang as a graph, not a list
Hreflang breaks in boring, predictable ways. The tags look fine on one page and the cluster is still invalid because the relationship is not reciprocal. Every URL in a language group must point to every other one, including itself, and every one of those pages must point back.
- Missing return tags —
/de/points at/en/but/en/does not point back. Google ignores the pair. - Wrong codes —
en-UKinstead ofen-GB, or a region code with no language (hreflang="de-DE"is valid;hreflang="DE"is not). - Pointing at redirects or 404s — a locale gets restructured, the alternates keep the old paths.
- No x-default — nothing tells Google where to send the 40 countries you did not build a page for.
- Canonical fighting hreflang — each locale page must canonicalize to itself, never to the English original.
That last one is the single most common site-wide killer. A global canonical pointing every locale back to the US page tells Google the other markets do not exist as indexable pages, and hreflang cannot override it.
Check your URL structure is one decision, applied consistently
ccTLDs, subdirectories, or subdomains — the argument is old and the honest answer is that all three work. What does not work is running two of them at once because a past team shipped a market on a different pattern.
What to look for
- Markets split across
example.deandexample.com/de/, both indexed. - Language folders that do not match locale codes used elsewhere (
/de/vs/de-de/). - Country selectors implemented as JavaScript that never emits a crawlable link.
- IP-based auto-redirects that bounce Googlebot from the US to a locale it did not ask for.
Auto-redirect by IP deserves special hostility. Googlebot crawls predominantly from US IPs. If your site force-redirects those requests, your non-US pages may never be crawled properly. Offer a suggestion banner instead of a hard redirect, and always let a visitor override it.
Find the duplicate-content overlap between English markets
US, UK, Australia, Canada, Singapore, Ireland — all English, often near-identical copy. Google is generally good at picking one per market when hreflang is clean, but when it is not clean you get one page absorbing all the others’ visibility.
Run a crawl and cluster pages by near-identical title and H1 across locales. A deep crawl matters here: quick scans of 25 pages will not expose the problem, and a full-site crawl of several hundred to a thousand-plus URLs will. Any cluster where multiple locale variants share the same title, the same meta description, and the same H1 is a cluster relying entirely on hreflang to survive. Give each market a genuine reason to exist — local currency, local shipping terms, local proof, local phrasing — or consolidate to one page and stop pretending.
Audit keyword targeting per market, not per translation
Translation is not localization, and localization is not keyword research. The literal translation of your best-converting US term is frequently not what people search in that country. Even between English markets the vocabulary splits — “mobile phone” versus “cell phone”, “torch” versus “flashlight”, “CV” versus “resume”.
Pull a fresh keyword set from the country index for each market, with local volume, difficulty, and CPC, then compare it against the terms your locale pages are actually optimized for. Anywhere the mismatch is large, you have found a page that will never rank no matter how good the hreflang is. Note that international volume figures are modeled estimates, usually smoothed over roughly twelve months, so read them as relative signals between terms rather than a forecast of clicks.
Benchmark against the weakest page-one competitor in that country
The mistake in market entry is benchmarking against the global leader. Look at position 8, 9, and 10 in the local SERP instead. That is the page you have to beat first, and in secondary markets it is often far weaker than the equivalent US result — thinner content, fewer referring domains, an obviously auto-translated body.
Pull the referring-domain count and Domain Rating for those weakest page-one results, then compare them against your locale page. If you are close on links and losing anyway, the problem is relevance or targeting. If you are 20 referring domains short, links are the gap. Both answers are useful; guessing is not. Links are necessary but never sufficient — a thin locale page with good links still loses to a genuinely local page.
Turn the audit into a ranked fix list
An audit that ends in a 60-item spreadsheet is a document, not a project. Sort what you found into three tiers and work down.
- Indexation blockers — wrong canonicals, noindexed locales, IP redirects, broken hreflang targets. Days of work, immediate effect.
- Targeting corrections — locale codes, x-default, per-market keyword mapping, unique titles and metas.
- Content and authority — localized copy, local proof, and market-specific link acquisition. Months, not weeks.
Then re-measure on a schedule and read trends, not single readings. Daily movement of two or three positions is normal noise in any market, and international SERPs are noisier than domestic ones because of local personalization. Re-run the crawl monthly, watch Search Console by country, and only call a fix successful after three or four consecutive checks agree.
Making the audit repeatable
The value of an international audit compounds when you run it again. The first pass finds a decade of accumulated debt; the fourth pass catches a broken locale within a week of a deploy. Keep the same crawl scope, the same per-market keyword sets, and the same weakest-competitor benchmarks so the comparisons stay honest.
If you want that in one place, SEO Rocket runs per-project market selection, full-site crawls with the actual titles and URLs as evidence, per-country keyword research, and rank tracking with movement deltas, on a flat US$50/month plan. Whatever you use, the discipline matters more than the tool: pick your markets deliberately, audit them separately, and never assume the home market’s health says anything about the others.