goodkeel

Hreflang on 96 Shopify stores: what we found

Christopher Uryga · November 2026

We checked the hreflang tags on 96 Shopify stores, drawn at random from stores that publish tags in two or more languages, against Google's guidelines. Here is how often they were wrong, which mistakes came up most, and how we did it.

The short version

What we checked

For each store we read the home page and one product page, the first product in the store's own product feed, then fetched the alternate addresses their tags listed. The checks are the same ones our free hreflang checker runs, built from Google's documentation:

Errors break a rule Google states. Warnings, such as an alternate that redirects or a missing x-default, are worth fixing but don't make Google ignore the tags on their own.

What we found

ProblemKindStoresShare
Canonical disagrees with the tagsError77%
An alternate is marked noindexError66%
Two sets of tags on one pageWarning66%
An alternate redirectsWarning55%
One-way link: the alternate doesn't link backError44%
An alternate returns 404 or a server errorError44%
One code points at two addressesError44%
x-default repeated or conflictingError or warning44%
Tags outside the page's <head>Error11%
The page doesn't list itselfError11%

Share is of the 96 stores. A store with several problems counts once in each row. No store had invalid codes or alternates without a full address.

Translations that call themselves copies

Five stores had translated or regional pages whose canonical points at the main-language page:

<!-- on https://yourstore.com/fr/products/linen-shirt -->
<link rel="canonical" href="https://yourstore.com/products/linen-shirt">

The hreflang tags say the French page is the version for French speakers. The canonical says it's a copy of the English page. Google gets two contradicting instructions and can leave the French page out of French results. On Shopify this often comes from theme or app code that builds the canonical from the product's address without the language folder; Shopify's own canonical_url keeps it. The canonical guide covers how to find which one your store uses.

A related pattern showed up on three stores that list each colour as its own product. The colour pages name the main product as their canonical but still carry a full set of hreflang tags. Google expects hreflang tags on canonical pages, so tags on a page that calls itself a copy are likely to be ignored. Decide which page should be in search, and put the tags on that one.

Alternates that tell Google to stay away

Six stores listed alternates that carry noindex:

<!-- on https://yourstore.com/ -->
<link rel="alternate" hreflang="es-PT" href="https://yourstore.com/es-pt">

<!-- on https://yourstore.com/es-pt -->
<meta name="robots" content="noindex">

One tag sends Spanish speakers in Portugal to a page, and the page itself asks to be kept out of search. Often one of the two is left over: a market the store stopped selling in, or a language version hidden on purpose while its tags stayed. If the page should be found, take the noindex off. If it shouldn't, take it out of the tags.

Links to products that aren't there

On three stores, the product page listed an alternate in another market that returns 404:

<link rel="alternate" hreflang="nl-NL" href="https://nl.yourstore.com/products/linen-shirt">
<!-- https://nl.yourstore.com/products/linen-shirt returns 404 -->

This is what happens when a product isn't sold in one market but its tags still list that market. A 404 can't link back, so Google ignores the pair. Shopify's automatic tags left such products out in our own test, so this suggests tags written by a theme or an app. Hreflang Manager leaves them out too.

Six stores printed two sets of tags on the same page. Duplicate hreflang tags on Shopify covers how to find the second source.

How stores set up their markets

We sorted stores by where their alternates live, read from the addresses in their tags:

Stores using subdomains had errors more often in our sample (4 of 9, against 11 of 73 using subfolders), but nine stores are too few to say that subdomains cause more problems.

How we picked the stores

We started from the Tranco list (list V354N), a research ranking of the most visited sites on the web, and drew 25,000 sites from it at random. We requested each home page once: 16,986 answered, 761 of them were Shopify stores, and 224 of those published hreflang tags in two or more languages. We drew 100 of the 224 at random for the full check, and 96 of them had at least one page we could read.

Every request identified itself as a Goodkeel research crawler with a link back to this site, honoured robots.txt beyond the first home-page request, and the full checks ran at no more than five a minute across the whole study.

Limits

We don't name any store. Every example on this page uses a made-up domain and product.

Check your own store

Paste a product page into the free hreflang checker. It runs the same checks as this study, on any page of your store, with nothing to install. If you'd like your whole store checked every week and the tags managed for you, that's what Hreflang Manager does.

The guides cover the common fixes: translated URL handles, duplicate hreflang tags, language and region codes, and Shopify's automatic hreflang tags.

Sources