My site serves content in English, Chinese, and Japanese. When I added hreflang tags, I expected a traffic boost. Instead, I lost 40% of my Google impressions for three weeks.
Here are the four mistakes I made and how I fixed each one.
Mistake 1: Self-Referencing Tags Were Missing
Every page needs an hreflang tag pointing to itself. I only added tags for the alternate languages:
<!-- WRONG -->
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh/page/" />
<link rel="alternate" hreflang="ja" href="https://example.com/ja/page/" />
<!-- CORRECT -->
<link rel="alternate" hreflang="en" href="https://example.com/page/" />
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh/page/" />
<link rel="alternate" hreflang="ja" href="https://example.com/ja/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />
Without the self-referencing tag, Google treats the page as if hreflang doesn't exist at all. It's the most common mistake in every hreflang audit I've seen, and it's the one that bit me hardest.
Mistake 2: x-default Was Pointing to the Wrong URL
I set x-default to my homepage instead of the current page's English version. The x-default tag tells Google which URL to show users whose language doesn't match any of your hreflang entries. It should point to the same page in your primary language — not to a generic homepage.
<!-- WRONG -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
<!-- CORRECT -->
<link rel="alternate" hreflang="x-default" href="https://example.com/current-page/" />
This single mistake caused Google to show my Chinese pages to English-speaking users for two weeks.
Mistake 3: Language Code Format Was Inconsistent
I used zh in some places and zh-Hans in others. Google treats these as different languages. Pick one format and use it everywhere — in hreflang tags, in your sitemap, in your HTML lang attribute. I standardized on zh-Hans for Simplified Chinese because it's more specific.
The same applies to Japanese: use ja, not jp. Country codes and language codes are not the same thing, and mixing them up is silent — no error, just wrong behavior.
Mistake 4: Translated Pages Had Identical Titles and Descriptions
My Chinese and Japanese pages initially had the same English meta titles because I forgot to translate the Rank Math SEO fields. Google saw three pages with identical metadata pointing at each other via hreflang and got confused about which one to rank.
After translating every title and description, Google correctly started showing the Chinese version to Chinese-language searchers and the Japanese version to Japanese searchers.
The Recovery
After fixing all four issues:
- Week 1: No change (Google was recrawling)
- Week 2: Impressions returned to baseline
- Week 3: Impressions exceeded pre-hreflang levels by 15%
The Chinese and Japanese pages started ranking independently in their respective regional searches, which was the whole point.
How I Verify Hreflang Now
I run a monthly check:
- Fetch every page in my sitemap
- Parse hreflang tags from the HTML
- Verify every page has a self-referencing tag
- Verify every alternate URL returns 200
- Verify x-default points to the English version of the same page
If you're running a multilingual site — especially one with visual content like Apple Watch wallpapers for the Series 12 where users search in their own language — hreflang is non-negotiable. But it has to be implemented correctly, or it does more harm than good.
Key Takeaways
- Always include a self-referencing hreflang tag
- Set x-default to the current page in your primary language, not the homepage
- Use consistent language codes everywhere (zh-Hans, not zh)
- Translate SEO metadata, not just visible content
- Monitor impressions weekly after any hreflang change — problems are silent
Building a multilingual WordPress site with 200+ pages taught me that internationalization is 20% translation and 80% technical SEO.
Top comments (0)