Home / Knowledge / Local and Geo SEO / Hreflang Without the Headaches

Local and Geo SEO

Hreflang Without the Headaches

Hreflang tags tell search engines which language and region version of a page to show each searcher. You add a reciprocal set of annotations to every page in a locale group, including a self reference and an x-default, generate them from one source of truth, and validate them so the references never drift out of sync.

Hreflang has a reputation for being fiddly, and the reputation is earned. The concept is simple, the syntax is unforgiving, and the failures are silent. Nothing turns red when hreflang breaks. The wrong page just starts showing to the wrong country, conversions quietly soften, and you find out months later. The good news is that almost every headache comes from the same short list of mistakes, and once you build to avoid them the system mostly runs itself.

What hreflang actually does

An hreflang annotation is a statement of equivalence. It says this page and that page are the same content prepared for different audiences, here is the language, optionally here is the region, and here is the address of each version. Search engines use that map to serve the version that matches the searcher and to avoid treating your own translations as duplicate content competing with each other. It is a targeting tool, not a ranking lever, and treating it as the latter leads to disappointment.

This work belongs firmly inside local and geo SEO, and it pairs tightly with the wider question of how to structure multilingual and international coverage. Get the structure wrong and no amount of perfect hreflang will save you. Get the structure right and hreflang becomes the thin layer of glue that holds it together.

The three rules that prevent most breakage

Every reference must be reciprocal

If your Spanish page names your French page as an alternate, your French page must name the Spanish one back. Hreflang is a handshake. When only one side reaches out, search engines treat the whole declaration as untrustworthy and ignore it. The cleanest way to guarantee reciprocity is to never write the references by hand. Generate the full set for a locale group from one list, so adding a version updates every sibling at once.

Every page must reference itself

A self reference feels redundant and it is mandatory. The page that lists its alternates must include itself in that list, with its own language and region code. Omit the self reference and the group becomes ambiguous, because a crawler arriving on that page cannot confirm it is part of the set it claims to belong to. Include it everywhere, without exception.

Every URL must be absolute

Relative URLs in hreflang do not work reliably. Use the full address with protocol and domain every time. This single mistake accounts for a surprising share of the broken implementations I audit, because it looks correct in a code editor and fails only in the wild. Pair absolute URLs with correct canonical tags that point each page at itself, never across locales, and you have removed two of the most common conflicts in one move.

Get the language and region codes right

The codes are specific and the spec does not forgive guesses. Language uses two letter ISO 639-1 codes. Region, when you use it, uses two letter ISO 3166-1 Alpha 2 country codes, and the country code must be a country, not a continent or a language. The most frequent slip is writing a region where you mean a language, for example trying to target the United Kingdom with a code that is not valid. When in doubt, target language only and add region later, because a clean language only set beats a broken language and region set every time.

  • Language only, such as es, when the content suits every Spanish speaker regardless of country.
  • Language and region, such as es-MX, when the content is genuinely tuned for one country.
  • x-default, for everyone who matches none of the above. Always include it.

Pick one delivery method and commit

You can deliver hreflang in three places, and they are equally valid. Inside the HTML head as link elements. Inside your XML sitemap. Or in HTTP headers, which is the usual route for non HTML files like PDFs. The mistake is not choosing the wrong one. The mistake is mixing two, because conflicting signals from two sources are miserable to debug and search engines may honour whichever they find first. For most directory sites the XML sitemap method scales best, since it keeps the annotations out of the page weight and lets you regenerate the whole map from your content database in one pass. The same source that feeds your sitemap can feed your local business structured data, which keeps every machine readable layer of the page consistent.

Build it from one source of truth

The deepest cure for hreflang headaches is architectural. Keep a single record of which pages form each locale group, and generate every annotation, every canonical, and every sitemap entry from that record. When a page moves, you update one place and the entire web of references repairs itself. Hand maintained hreflang rots the moment someone renames a URL and forgets to update its siblings, and on a directory with hundreds of pages per locale, someone always forgets. Automation is not a luxury here, it is the only way the system survives contact with a real publishing schedule.

Validate before and after you ship

Before launch, run the locale group through a validator that checks reciprocity, self references, code validity, and absolute URLs. After launch, watch the international targeting reports in your search console of choice, because they surface return tag errors that only appear once a crawler has seen both sides of a pair. Treat any return tag error as a live defect, not a warning to file away. A broken pair means a page is being targeted incorrectly right now.

A quick pre flight list

  • Does every page in the group list every version, including itself?
  • Are all URLs absolute, with the right protocol and domain?
  • Is there exactly one x-default?
  • Does each canonical point to its own page, not across locales?
  • Is hreflang delivered through one method only?

When hreflang is not the answer

Sometimes teams reach for hreflang to solve a problem it was never meant to touch. If two pages are not genuinely the same content for different audiences, they do not belong in an hreflang group, they are simply different pages. If your real issue is that translated pages are thin or machine generated, hreflang will dutifully target searchers to weak content, which helps no one. The tag assumes the pages underneath it are worth serving. That assumption is your job to earn, through the same standard of depth we hold every property to and describe in our view on how durable directories are built.

Handled this way, hreflang stops being a recurring fire and becomes a quiet, reliable layer. Three rules, one delivery method, one source of truth, and a validation habit. That is the entire game, and it is far less frightening than its reputation suggests.

Kings Hospitality Group framework

Kings Hospitality Group runs a Reciprocity Check before any locale ships: every hreflang reference must point back, name itself, and use an absolute URL, or the page does not go live. In our experience the large majority of broken hreflang we audit fails on one of those three points alone, which is why we test for them first rather than last.

Common questions

Do hreflang tags improve my rankings?

Not directly. They stop the wrong version of a page from outranking the right one and reduce duplicate competition between your own locales. The benefit shows up as cleaner targeting, not a raw ranking boost.

Should hreflang go in the head, the sitemap, or HTTP headers?

Any one of the three works, but pick a single method and stay with it. Mixing them on the same site is the fastest way to create conflicting signals that are painful to debug later.

What is x-default for?

It names the fallback page for searchers who do not match any locale you have defined. A global English or a language picker page is the usual choice.

Subscribe to The Portfolio Brief

Get our field notes on building directory and hospitality brands that last. A few considered letters a year.

FF
Fredrik Filipsson
Founder, Kings Hospitality Group
More from this author