By Miguel Ángel Jiménez, Head of SEO at Gecko Studio
You've spent months — or years — building the English, French or German version of your website. It's live, the content is translated, the URLs are separated. And yet something isn't adding up: international traffic isn't arriving, or it's landing on the wrong version. German users are hitting the .es. The French version doesn't appear when you search from Paris.
The problem is almost never the content. It's that Google doesn't know — with certainty — which version to show to which user. And when Google is uncertain, it chooses wrong. But even before we get to Google, there's a more costly and more upstream mistake: deciding how and where to launch each market without having audited that market first.
A well-executed international SEO audit covers two layers: the strategic (which domain structure to choose and with what authority expectations) and the technical (hreflang, geo-targeting, canonicals, cannibalisation between versions). This article walks through both, in that order — because fixing the hreflang of a website built on a poor domain decision is an exercise in futility.
What an international SEO audit is (and what it isn't)
An international SEO audit is the diagnosis of how ready a website is to be understood by Google across more than one language or country. It isn't about translating content or "adding hreflang". It's about verifying that every decision — domain structure, hreflang, canonicals, geo-targeting, internal linking by version — sends Google the same message, without contradictions.
The difference from a "standard" SEO audit is that here the most costly error isn't a weak title tag: it's serving the wrong version to the wrong user, or having launched a market on a domain that starts from zero and will take years to compete. A site can have impeccable on-page across five languages and still lose almost all of its international traffic for one of those two reasons.
Before jumping to a new domain: the decision that conditions everything
The question we receive most often isn't technical, it's strategic: "we're entering France and the UK — do we launch .fr and .co.uk, or do we build it in subdirectories on our current domain?" And the answer is never automatic: it depends on three factors that need to be audited before buying a single domain.
1. A new domain starts from zero
This is what gets underestimated most. When you register a new .fr to enter France, that domain begins without authority: low Domain Rating, no backlink profile, no history. All the authority your brand has built over the years on its main domain does not carry over to the new ccTLD. You're starting an authority race from the starting line, while your local competitors have been running for years.
A subdirectory (domain.com/fr/), by contrast, inherits the authority of the main domain: links pointing to your homepage also help your French pages. That's why, unless the market demands it, a subdirectory is usually the fastest path to traffic. The ccTLD gives the strongest country signal that exists, but it charges you for that advantage in years of authority building. Auditing this means being honest about how much link-building budget and how much time you have for each new market.
2. Look at what's ranking in each market
Before deciding anything, you need to open the real SERP of the target market — not the Spanish one — and read who is ranking and why. Are they strong local competitors or international aggregators? What type of page wins, transactional or informational? What level of authority do the top results have? That analysis tells you whether the market is achievable or whether you're going to hit authority walls that are impossible to overcome in the short term with a brand-new domain.
3. Check which domain extension dominates each market
This is the data point that decides most and the one almost nobody looks at. In many markets, the local ccTLD dominates the SERP overwhelmingly, to the point that multinational brands themselves abandon their .com and compete using the local domain. We see this in real data:
Equivalent in text (the same data as the chart):
| Market / search | Local ccTLD in top 10 | .com in top 10 |
|---|---|---|
| United Kingdom — "car hire" | 9 .co.uk domains | 1 .com domain |
| France — "location de voiture" | 7 .fr domains | 3 .com domains |
The reading is clear: in markets where the ccTLD dominates, a foreign website faces an uphill battle, and even global brands accept this by launching a local domain. In other markets, .com competes on equal footing and a properly signalled subdirectory can compete without difficulty. There is no universal rule: you have to look at the SERP for each market before making a choice. That check — cheap, half an hour of analysis — prevents the most expensive domain decision you'll ever have to reverse.
Website structure: ccTLD, subdomain or subdirectory
Once the market has been analysed, the structure decision comes down to three options, each with its own trade-off:
| Structure | Country signal | Authority | Management |
|---|---|---|---|
ccTLD (.es, .fr, .co.uk) | Maximum | Starts from zero, independent per domain | More complex (one site per country) |
Subdomain (fr.domain.com) | Medium (configurable) | Google treats it almost as a separate site | Intermediate |
Subdirectory (domain.com/fr/) | Medium (via hreflang + Search Console) | Inherits authority from the main domain | Simplest |
In the audit, the first step is to document what structure exists and whether it is consistent. Projects that were migrated or grew without planning frequently mix subdirectories and subdomains for different languages, which enormously complicates the hreflang implementation and dilutes the signals. The control question: is there a single structural logic for all markets, or was each language put together however it could be at the time?
Hreflang audit: the errors that cost you traffic
The hreflang attribute is the primary signal by which you tell Google which language/country version corresponds to each page and which audience it's aimed at. It is implemented in the <head> of each page, in the XML sitemap, or in HTTP headers (for PDFs and non-HTML documents).
The basic syntax is:
<link rel="alternate" hreflang="es-es" href="https://www.domain.com/es/page/" />
<link rel="alternate" hreflang="en-gb" href="https://www.domain.com/en-gb/page/" />
<link rel="alternate" hreflang="fr" href="https://www.domain.com/fr/page/" />
<link rel="alternate" hreflang="x-default" href="https://www.domain.com/page/" />
The x-default indicates the version served when no language/country matches the user. It is typically pointed to the language selection page or to the primary version.
The five most common hreflang errors
1. Missing return tags. This is the most common error and the one Google penalises most silently. Hreflang is bidirectional: if the page at /es/ declares that its English equivalent is at /en/, then the page at /en/ must also declare that its Spanish equivalent is at /es/. If any of these cross-references are missing, Google ignores the entire annotation. Practical check: for each page with hreflang, verify that all referenced versions in turn include references back to all the others in the same group.
2. Hreflang pointing to URLs that return 404 or redirect. This happens when a page in one language is deleted or moved but the annotations in the other versions are not updated. Google crawls every URL declared in hreflang; if it finds one that doesn't exist or redirects, the annotation is invalidated. Practical check: extract all URLs declared in hreflang (sitemap or <head>) and crawl them. Filter those returning 3xx, 4xx or 5xx.
3. x-default misconfigured or absent. The x-default is omitted in many implementations, meaning that when a user arrives from a country without a specific version (for example, Mexico if only versions for Spain and the UK exist), Google has no clear instruction on what to show. In other cases it is configured pointing to a non-existent URL or to one that has its own hreflang, creating a logical loop.
4. Incorrect use of language and region codes. hreflang="es" covers generic Spanish; hreflang="es-es" is specific to Spain; hreflang="es-mx" is for Mexico. Many implementations use es when they mean es-es, or mix ISO 639-1 (language) with ISO 3166-1 (country) incorrectly. Google is relatively tolerant, but code errors can prevent the correct version from being served to the correct country. A typical case: declaring en for a website that actually targets the UK (en-gb) and the United States (en-us) with different content, pricing and currency.
5. Declared versions that don't exist as real pages. Some implementations add hreflang for markets that don't actually have their own content: for example, declaring a fr-be version (Belgian French) that redirects to the generic fr. If Google crawls the URL and receives identical content with no own signal, it may treat it as a duplicate.
The good news is that almost all of these errors are detected in one pass: a Screaming Frog crawl or the Ahrefs hreflang report returns, in a single run, the missing return tags, URLs with errors and language discrepancies. The judgement work starts afterwards, when prioritising which ones to fix first.
Geo-targeting and Search Console: country-level configuration
Beyond hreflang, in subdirectory or subdomain structures it is worth reinforcing the geographic targeting of each property. This configuration acts as a complementary signal, particularly when the domain does not provide a country signal on its own.
What to review in the audit:
- Each subdirectory or subdomain property should have a clear target country and audience, coherent with the hreflang implemented in the code.
- ccTLDs (
.es,.fr,.co.uk) already have implicit geo-targeting; they don't need additional configuration, but they must be verified as independent properties in Search Console. - Verify that the declared targeting matches the hreflang. A discrepancy between the two creates confusion.
In projects with several active properties it is common to find unverified properties, duplicates (with and without www) or subdomain versions that were never added. All of these are blind spots in the data and in the signals Google receives.
Read your data by country before touching anything
An international audit starts by looking at where your traffic is actually coming from, not where you think it's coming from. In tools such as Ahrefs or the Search Console country performance report you can see, market by market, how many impressions and clicks each version receives and which URL is getting the traffic from each country.
That cross-reference — impressions by URL and by country — answers two key audit questions. First: is the traffic arriving actually the audience the business wants? A Spanish-language site may receive a great deal of visits from markets that aren't commercially interesting; knowing this changes the version strategy. Second: it is the most reliable way to detect that Google is serving the wrong version, as we'll see shortly. Without this data, any decision about creating, merging or differentiating versions is made blind.
Cannibalisation between language versions
Classic SEO cannibalisation — two pages competing for the same keyword — has a particularly damaging international variant: two versions of the same content in different languages competing for the same intent when the user searches in English and both the English version hosted on the .es and the en-gb version appear in the index.
How to detect it:
- Search Google for
site:yourdomain.com keywordcombining with terms from the version in the language you're interested in. - Use Search Console to cross-reference the URLs receiving impressions for the same keyword in the same market.
- With a crawler such as Screaming Frog, extract all pages with hreflang and check whether there are URLs from different languages sharing the same content without a cross-canonical.
The usual solution is not to delete content, but to ensure that hreflang is properly implemented and that canonicals are not pointing to the wrong version. A page at /fr/ with a canonical pointing to /es/ is telling Google to ignore the French version, even if the hreflang says otherwise. When hreflang and canonical contradict each other, the canonical wins — which is why it's one of the first cross-checks we carry out in any international audit.
Duplicate content between markets in the same language
A very common case, and precisely the one affecting English-speaking markets: the website for the United Kingdom (/en-gb/ or a .co.uk) and the version for the United States or Australia have practically the same content, with only changes to the currency or phone number. Google may treat them as duplicates and consolidate the signal into a single URL, leaving the other unindexed.
Options for managing this:
- Cross-canonical: if the content is practically identical, declare one as the canonical of the other. You lose granular targeting but avoid the duplicate problem.
- Genuine differentiation: add market-specific content (local testimonials, prices in local currency, geographical references). This is the correct long-term approach.
- Correct hreflang: if they are genuinely distinct audiences with similar content, properly implemented hreflang tells Google it should index both for their respective markets.
How to detect that Google is serving the wrong version
This is the symptom that causes most concern and that sometimes goes unnoticed for months. Signals to look for:
- Search Console, performance by country: filter by country and check which URL receives impressions. If users from France are predominantly landing on the Spanish version, there is a targeting problem.
- URL Inspection: in Search Console, inspect a URL from the French version and look in "Indexing" at which page Google declares as canonical. If it points to the Spanish version, Google has decided they are duplicates.
- Results in the local SERP: check (with a country-specific SERP tool or a VPN) which version of your site appears when searching from the target country. If a French-language search returns your URL in English or Spanish, the targeting is broken.
- Hreflang report in Screaming Frog or Ahrefs: both generate an error report for hreflang with missing return tags, URLs with errors and language discrepancies. It is the fastest way to move from "I think something's wrong" to a concrete list of pages to correct.
The most common pattern is that the version with the most link authority (usually the primary one) ends up absorbing traffic from the secondary versions because hreflang and canonical errors leave Google without a clear instruction. The solution is systematic: first clean hreflang, then coherent internal linking within each version, then content differentiation.
If you want to understand the full framework before applying it to your own case, the Gecko Studio SEO audit guide covers the complete process from technical analysis through to crawling and indexation.
How to prioritise fixes (not all are equal)
An audit that returns 200 issues without a priority order is almost useless. When we close an international diagnosis, we order the fixes by real traffic impact, not by number of errors:
- First, what breaks indexation: hreflang pointing to 404s, canonicals pointing to another version, important pages with no tag at all. These are the ones causing Google to serve or index the wrong version.
- Then, what affects pages with traffic or potential: fix the category already receiving impressions before the page nobody visits, even if both have the same error.
- Finally, fine-grained consistency: language/region codes,
x-default, clean-up of declared versions that add no value.
On sites generated from a template (e-commerce, directories, city pages), this order speeds up: because a change in the template propagates the fix to dozens of pages at once, it is worth fixing the pattern once and verifying the result on a sample, rather than going page by page.
Checklist: international SEO audit step by step
Phase 0 — Strategy (before touching the site)
- Analyse the real SERP of each target market: who ranks, with what type of page and with what authority.
- Check which domain extension dominates each market (local ccTLD vs
.com). - Decide on structure (ccTLD / subdomain / subdirectory) based on required country signal, authority budget and timelines.
Phase 1 — Inventory
- Document all existing language/country versions and their base URLs.
- Verify that the structure is consistent across all markets.
- Check that all properties are in Search Console with geo-targeting configured.
- Review the traffic split by country: does it match the target markets?
Phase 2 — Technical hreflang audit
- Extract all hreflang annotations (sitemap +
<head>). - Verify return tags for each group of pages.
- Check that all URLs declared in hreflang return 200.
- Verify that
x-defaultpoints to a valid and coherent URL. - Check language and region codes (ISO 639-1 + ISO 3166-1).
Phase 3 — Canonicals and duplicates
- Verify that canonicals do not contradict hreflang.
- Detect pages with identical content between versions without a canonical strategy.
- Check that no language versions indexed return the same response.
Phase 4 — Performance analysis
- In Search Console, cross-reference impressions by URL and by country to detect mismatches.
- Check which version of each page has the most link signals and whether that corresponds to the primary version.
- Review the indexation coverage of each version (excluded pages, discovered but not indexed).
Frequently asked questions about international SEO audits
What is international SEO?
It is the set of techniques for making a website rank across multiple countries or languages simultaneously, serving each user the correct version. It encompasses URL structure (ccTLD, subdomain or subdirectory), hreflang, geo-targeting and content differentiation by market. The international SEO audit is the diagnosis that verifies all of this is properly implemented.
Is it better to launch a new domain (.fr, .co.uk) or use a subdirectory?
It depends on the market. A new ccTLD gives the strongest country signal but starts without authority: you begin building Domain Rating from zero. A subdirectory inherits the authority of the main domain and reaches traffic faster. The practical rule: if the market SERP is dominated by local ccTLDs — and many are — consider the local domain while accepting the authority cost; if .com competes on equal terms there, a subdirectory is usually more efficient.
Is hreflang mandatory if I have a multilingual website?
It isn't technically mandatory, but it is strongly recommended. Without hreflang, Google will attempt to determine on its own which version to show, and on sites with similar content across versions the result is usually that only one is indexed correctly. For sites with language subdirectories or translated content, hreflang is practically indispensable.
Do ccTLDs need hreflang?
Yes. Although ccTLDs such as .es or .fr already send a strong country signal, they need hreflang for Google to understand that they are equivalent versions of each other and to consolidate authority signals correctly. Without hreflang, each ccTLD competes independently.
How long does it take for a hreflang fix to be reflected in Google?
It depends on the site's crawl budget and crawl frequency. On medium-sized sites, changes in the sitemap and <head> are typically processed within 2 to 4 weeks; on large sites or those with a limited crawl budget it may take longer. This is an industry-wide indicative range, not a guarantee.
Is a subdomain or subdirectory better for international SEO?
In most cases, a subdirectory: it concentrates link authority on a single domain, is easier to manage and does not require separate verifications for countries without a ccTLD. Subdomains make sense when markets differ considerably in content or technology. ccTLDs provide the best country-targeting signal but require building independent authority for each domain.
How do I know if Google is ignoring my hreflang?
The most reliable indicator is the Search Console report on pages with hreflang: if there are errors there (URLs not found, missing return tags, unrecognised languages), Google is ignoring those annotations. As a complement, inspect several URLs from secondary versions and observe what Google declares as canonical: if it consistently points to the primary version, hreflang is not taking effect.
International SEO: domain strategy and hreflang, pointing in the same direction
The question we receive most often from companies with an international presence is: "we have the website translated — why isn't international traffic arriving?" The answer lies in two layers. The strategic one: sometimes the market was launched on a domain structure that starts at a disadvantage, without having looked at which extension dominates there or how much authority it starts with. And the technical one: incomplete hreflang, canonicals that contradict the targeting, duplicate versions without differentiation.
The work of an international SEO audit is to put both in order: choosing well where you compete, and telling Google — precisely — which version exists for each market and how they relate to one another. When both layers are aligned, international traffic responds.
If you have a multilingual website or are planning to enter new markets and suspect something isn't working as it should, a professional SEO audit focused on the international implementation typically reveals the leakage points within a few hours of analysis.