A pattern we see almost every week. A Spanish business calls us, frustrated. They built a beautiful bilingual site (often Spanish + English, sometimes Spanish + Catalan, increasingly Spanish + Portuguese for the LATAM/Brazil play). The site looks great. The content is good. But:
- The Spanish version ranks fine.
- The second language doesn't rank at all — or worse, the second-language pages are eating the rankings of the Spanish ones.
There are typically five mistakes underneath this pattern. Each one alone is enough to torpedo your international SEO. Three or four stacked is the norm. Here's the diagnosis, ranked in order of how often we find them.
Trap #1 — hreflang is wrong, missing, or contradicting <link rel="canonical">
This is the single most common technical error. Symptoms:
- Google indexes only the Spanish version
- The English version has zero impressions in Search Console for English queries
- "Duplicate without user-selected canonical" warnings in Search Console for the second-language URLs
The cause is almost always one of:
hreflang tags missing entirely (≈40% of cases)
hreflang referencing the wrong URL pair (e.g. /en/page points back to /es/another-page)
<link rel="canonical"> set to the Spanish URL on the English page (a copy-paste accident from a CMS)
hreflang="en-US" when targeting all English speakers (use hreflang="en" unless you have specific country variants)
The fix that always works, copy-able:
<link rel="alternate" hreflang="es" href="https://yoursite.com/es/products/widget" />
<link rel="alternate" hreflang="en" href="https://yoursite.com/en/products/widget" />
<link rel="alternate" hreflang="x-default" href="https://yoursite.com/es/products/widget" />
<link rel="canonical" href="https://yoursite.com/en/products/widget" />
Three rules:
- Self-referencing canonical on every page — pointing to itself.
- Reciprocal hreflang: every page must declare every language version, including itself.
x-default points to the version you want shown to anyone not matching another language.
Missing x-default alone has caused us to recover +38% organic traffic for one client in three months.
Trap #2 — Translated, not localized
Pasting your Spanish copy into DeepL and shipping it is a fast way to:
- Rank for nobody (because the keywords are wrong for the target market)
- Confuse readers (because cultural context isn't translated)
- Annoy Google's quality systems (because translated content is usually thin)
A real example: a Madrid law firm translated their Spanish landing page about "abogados de divorcio" directly to English. The result:
- The page used "divorce lawyer" — a US/UK term
- The Spanish target keyword density was lost entirely
- The new English version had 0.4% keyword relevance for either UK or US searches
What to do instead:
- Keyword research in the target language first. The English keyword for that page in the UK market is "divorce solicitor" (you'd never get to "solicitor" by translating from Spanish).
- Localize examples and proof. Spanish testimonials in a UK-aimed page hurt trust. Same for "calle Velázquez" addresses on a page targeting London buyers.
- Adapt monetary values, dates, units. €/£/$ is obvious; less obvious: 24-hour vs 12-hour time, dd/mm vs mm/dd dates, comma vs period decimals.
- Use a human, native, vertical-specialist for the final pass. Not your bilingual cousin. Not GPT. The ROI is brutal: roughly €200 of editing pays back €5–€10k of organic value per page.
Trap #3 — Identical URLs across languages, then a soft 404
A pattern that's almost invisible:
- The English version of every page exists at
/en/...
- It returns 200, looks fine to a human
- But the page is identical content in Spanish because the translation wasn't actually done
Google's quality systems detect this. The English pages are demoted to "soft 404" status. They never rank.
How to find this in 5 minutes: in Search Console → Pages → "Soft 404", filter by URLs containing /en/. If you see lots of them, that's the problem.
The fix: complete the translation, or temporarily unpublish the English path with a real 404 (not 301 to Spanish — that's a different mistake).
Trap #4 — Mixed-language content within one page
Even subtle versions of this hurt:
- An English page with a Spanish header on the navigation
- A blog post translated into English but with the date format
martes 4 de marzo left in
- A button labeled "Send" but a privacy notice underneath in Spanish
- Open Graph tags in Spanish on an English page
Google detects the page's language with two signals: the <html lang=""> attribute and the body content's actual language. If they disagree, the page falls into a confused state where neither language ranks well.
Quick checklist:
<html lang="en"> matches body language
- All
og:locale, og:title, og:description in the page's language
- Currency, date, address formats are localized
- Auto-translated chat widgets (Crisp, Tidio, etc.) actually use the right language for the page
Trap #5 — Geo-IP redirects that hide the second language from Google
This is the deathblow we see in surprisingly many large Spanish brands:
- The site detects the user's IP
- Spanish users are redirected to
/es/ automatically
- English users are redirected to
/en/
- Googlebot crawls from a US IP and only ever sees the English site
- The Spanish site never gets indexed properly
Same problem in reverse: a /en/ page with an automatic redirect to /es/ for Spanish-IP visitors. Googlebot from a Spanish IP gets bounced. The English page is never indexed.
The fix is non-negotiable:
- Never auto-redirect based on IP without giving the user a choice
- Use the
Vary: Accept-Language header only for content negotiation, never for blocking the alternate version
- Always present a manual language picker that updates a cookie
- Allow Googlebot all language paths without redirects
We've recovered organic traffic by 80–120% on multilingual sites just by killing the auto-redirect.
Bonus: the 5 international SEO checks we do in our first audit
If we open your bilingual site for the first time, here's what we check in 90 seconds:
- View source on the homepage → check
hreflang, canonical, <html lang>.
- Search
site:yoursite.com /en/ in Google → see how many English URLs are indexed vs how many exist.
- Open Search Console → Performance → filter by URLs containing
/en/ → if impressions are 5%+ of /es/, you're not crashed; if they're below 1%, you have one of the traps above.
- Try opening your site from a US-based proxy → see if you're being redirected, what content is served.
- Run the English homepage through PageSpeed and through Google's Rich Results Test → confirm correct language detection.
If we run those five and one fails, we have a 70% chance of recovering significant traffic in the next 90 days.
A concrete recovery story
A B2B SaaS in Madrid serving the LATAM market had zero organic traffic in English despite having ~85 well-written English pages.
Diagnosis: traps #1, #4, and #5 all present. Their CDN was redirecting any non-Spain IP to /es/ "for performance reasons". Googlebot in the US never saw the English pages.
Fix: removed the geo-redirect, fixed hreflang, audited 12 pages with mixed-language content. Cost of project: €2,800 (one engineer, one SEO, two weeks).
90 days later:
- English pages indexed: 0 → 78
- English organic clicks/month: 0 → 1,420
- LATAM trial signups: +34
- Estimated ARR added in 6 months: ~€96,000
This is the kind of fix that pays for itself in a month and keeps paying for years.
We do international SEO audits weekly
If your bilingual or multilingual site feels "stuck" on the second language, send it our way. We'll run our 5-trap audit and a Search Console check for free, write up the diagnosis with severity, and tell you what's worth fixing first. We won't try to upsell you a generic "SEO retainer" if you don't need one.
Request an international SEO audit or see our SEO services.
Bilingual is a competitive advantage. Bilingual done badly is invisible.