International SEO: What works and what doesn’t

A lot can go wrong with international SEO, and resources describing how to do it correctly are outdated. I ran a series of tests to find out the best way to optimize sites for multiple languages and locales. The results may surprise you.

International SEO isn’t something you think about until you need it. It’s also an area with few experts but plenty of outdated recommendations. If you’ve paid any attention to experienced SEOs on Twitter that do international targeting, then you know they’re frustrated. That’s because what used to work no longer does reliably.

Based on trusted sources and articles online, one should add hreflang links to pages, properly structure their site for each locale, specify geo-targeting in Google Search Console, and call it a day. But in reality, that rarely works.

I needed answers but couldn’t find anything definitive. So I decided to get the answers myself. I created a new site and ran a series of tests to determine what works and what doesn’t with international SEO. I think the results of the tests may surprise you.

The goal of the tests

The main goal of the tests was to find out which signals reliably display locale-specific pages on Google for a target country.

Success and failure criteria

If a page written in Spanish is targeted for Argentina and a duplicate of that page is targeted for Mexico, the test would be successful if each one appears within its target country. However, if the Argentinian page displays first on Google in Mexico or the Mexican page displays first on Google in Argentina, the test is considered a failure.

Information architecture

There are multiple options for how to set up country-specific versions of a site. The three most common are:

  1. Country-code top-level domain (ccTLD) – domain.mx
  2. Subdomain – mx.domain.com
  3. Subfolder – domain.com/mx/

Using ccTLDs is difficult to scale and each domain is considered a standalone property.

Using a subdomain is akin to using a subfolder on the main domain and carries some value from it, but the subdomain is still a standalone property.

I recommend using a single domain with subfolders for the locales. It benefits from being on a single property and it should utilize the International Organization for Standardization (ISO) Alpha-2 codes for language and country. That’s the architecture I used for the test site.

It should be noted that while the folder structure may be a signal, I didn’t test any alternatives because I consider this approach a best practice.

Google Search Console international targeting

The legacy version of Google Search Console (GSC) supports international targeting. It enables you to choose the target country for any site that’s been added to GSC.

GSC allows you to add domains with subfolders as sites. When you add a property, use the URL prefix type and enter the entire URL with the subfolder.

Adding domain to Google Search Console
Adding a locale-specific section of the site as an individual property in Google Search Console

After you’ve successfully added and verified each property with a subfolder, visit the International Targeting page in the legacy version of GSC. Select one of the properties, click on the Country tab, click the Target users in: checkbox, and select the target country.

Google International Targeting
Setting the target country in the legacy version of Google Search Console

Using international targeting was not part of the test, as I see it as another best practice. However, in hindsight, it probably would have been good to also test the efficacy of this.

Which international signals were tested?

I originally planned to test with several signals, but the addition of each one made the test exponentially more complex. For the sake of practicality and time, I narrowed the list of signals down to four.

  1. hreflang metadata in HTML
  2. hreflang in XML sitemap
  3. Name of country in <title>
  4. Name of country in page content

How were the international signals tested?

I registered a new domain, coywolf.country, to conduct the test. I made the page at the root of the domain a global sitemap. It lists the regions and countries for each version of the site. Each country link is appended with the language it’s in.

Coywolf Country Global Home
Coywolf Country international SEO test site

Many sites put their global sitemap in a subfolder like domain.com/global, but it made more sense to me to put it at the root. The content structure on the page reinforces the individual locales to Google and also acts as a dispatch page for visitors.

Avoiding geo-redirects

I didn’t use geo-redirects and would never intentionally use them because it can interfere with Google’s ability to correctly index pages. For example, if Googlebot was crawling from a U.S. datacenter, it wouldn’t be able to crawl and index the other locales.

If geo-redirects are a requirement, I recommend using one of the following methods.

  1. Disable geo-redirects for Googlebot – To ensure Googlebot can crawl the entire site and discover pages for each locale, consider disabling the geo-redirect when Googlebot visits the site. This shouldn’t be considered cloaking, and if it is, it shouldn’t be the type of cloaking that Google would consider misleading.
  2. Enable geo-redirect based on user action – My preferred method out of the two is to only use a geo-redirect after a visitor has chosen their locale. This way you don’t have to make an exception for Googlebot, and the geo-redirect is localized to the visitor’s browser.

Making things up for cleaner testing

Testing pages on Google can quickly get murky. There’s so much variance when testing content in search results, that it makes it difficult to impossible to determine what’s working and what isn’t. That’s why I usually test with made up words.

For these tests, I created made up words using a fake word generator. I generated several fake words, because not any fake word will do. I tested each fake word in Google, and only used them if no results were returned. That includes no “Did you mean…” results. Finding fake words with no results takes a lot longer than you might think. Many of the words one would assume wouldn’t have any results ended up having several.

After tediously selecting and testing numerous fake words, I came up with the following fake words.

  1. avesslational
  2. henspiconsed
  3. inacheroosenum
  4. naritrannument
  5. yuneticketrims

For each fake word I created a page and wrote fictional stories about them.

Testing criteria

Each page contained slightly different signals from the others. I wanted to test how a page performed with one of the signals removed. Since there were four signals, four of the pages have one of the signals removed. I kept all of the signals on a fifth page just in case the results showed you needed all of them to meet the success criteria.

  1. avesslational – Excluded the country name in <title>
  2. henspiconsed – Had all signals
  3. inacheroosenum – Excluded from the XML sitemap
  4. naritrannument – Excluded hreflang metadata in HTML
  5. yuneticketrims – Excluded the country name in the page content

Testing method

I used Encrypt.me VPN as a proxy for the target country.

Encrypt.me VPN Proxy
Selecting a proxy for an international location in Encrypt.me

Next, I opened a new Incognito window in Chrome and visited Google’s ccTLD (if there was one) for the target country.

Google Belgium
Google Belgium

I then verified that Google saw my computer as being in that country.

Location Belgium
Confirming the location that Google detects

If Google wasn’t using the same language of the page I was testing, I would switch to the target language (I’ll explain why that’s important later).

Google Belgium
It’s important to search using the same language as the page you’re searching for

The final step was to search using one of the fake words for the query. If the page related to the country was returned first, then it was considered a success. If a page from a different country was the first result, it was considered a failure.

Which international signals worked, and which didn’t?

Before I conducted the tests, I manually requested indexing for every page in GSC. I then ran a site: operator query for each locale to make sure all of the pages were indexed.

Google Site Operator Search
Run a site: operator search to confirm test pages are indexed

Using the previously described testing criteria, I tested every page. To my pleasant surprise, all of the tests were successful. However, there was one caveat. The language on the page has to match the language being used in Google. For example, if I searched for a page written in Spanish, and Google was set to English, the results became unpredictable – they failed.

What I learned from the tests is that Google relies on international signals and the page’s language to return the correct results for a locale. What I didn’t learn was which signals are essential and which ones are supplemental.

I decided to do some more tests. I created new country-specific versions of the site and tested with the following criteria:

  1. Exclude hreflang metadata in HTML and XML sitemap for all pages.
  2. Exclude the name of the country in <title> and in page content for all pages (only use hreflang).

When I excluded hreflang from the metadata and sitemaps, all of the tests succeeded. The correct page was displayed first in Google for every search. However, when I excluded the country in the <title> and in the page content, but kept hreflang in the metadata and sitemaps, most of the tests failed.

I want to reiterate what I just said. Not using hreflang but including the country name on the page and in the HTML source worked. Excluding the country name and only using hreflang failed. The results are contrary to what most online documentation recommends, including from Google.

International SEO recommendations

Based on the test results, I have a much clearer idea of what should be considered essential and secondary or optional.

Essential international signals

  1. IA best practices – Using proper folder and navigational structure to reinforce locales.
  2. GSC international targeting – Assigning a country to the locale’s subfolder.
  3. Country in <title> – Appending the page title with the country name and the ISO alpha-2 code.
  4. Country on the page – Mentioning the country in the copy and navigation, like breadcrumb links.
  5. Fully translated pages – If a site version targets a language and country, the page, including its metadata, should be fully translated into the language. Otherwise, it might confuse Google.

Secondary International signals

  1. hreflang metadata – hreflang should be used as a fallback signal to further confirm to Google what locale the site version is associated with. It is also likely useful for ecommerce sites and can help reinforce the currency being used.
  2. hreflang XML sitemap – If a site is large, including hreflang in a sitemap may help Google more quickly discover different locale-specific versions of the site. I recommend doing this in addition to including hreflang metadata on each page.

Keep in mind that these findings are only from one experiment. There are many other ways this could be tested, and I encourage you to test it yourself. Please feel free to study and even copy what I’ve done at coywolf.country.

Related Articles