A dropdown menu kept 248 pages out of Google
Five languages, a dropdown menu in the top right corner. It worked perfectly — for people. For Google, two hundred and forty-eight pages did not exist.
Why a dropdown menu is not navigation
The language switcher was a <select>: pick a language, the page
changes. But an <option value="/de/..."> is not a link. It has no
href, no anchor text, and the crawler does not simulate a change of
selection to find out where it leads.
Google's
documentation on crawlable links is explicit: only an <a> with
an href is followed.
The result: no translated version of the site received a single followable internal link. 248 orphan pages — every English, German, French and Spanish section.
"But the pages were in the sitemap"
They were in the sitemap, yes. It is not enough. A URL declared in the sitemap with no link pointing to it is last in line: the engine sees it and decides it is not worth the crawl. The sitemap tells Google a page exists; internal links tell it the page matters. Those are two different pieces of information, and the second weighs more.
The fix
Trivial: real links, one <a href> for each language version. If you
want the look of a dropdown, build it on top of the links — not instead of them.
What changed: from 1 to 4
At the start of August a single page was indexed. Four days after the fix there were four, and among them were exactly the German, Spanish and French home pages: the three paths that previously did not receive even one link.
I don't call it proof. The site is new and was climbing anyway. But the first three to get in were the three that had been orphans.
What did not change: three weeks later there are still four
This is where the article should end, with the chart going up. What followed is less comfortable: as of August 20 the indexed pages are still four, out of 330 declared in the sitemap. Everything else is stuck on "Crawled - currently not indexed".
Before drawing a conclusion I wanted to see the numbers: I crawled all three hundred and thirty URLs declared in the sitemap, extracted the text of every page net of the boilerplate computed language by language, counted inbound internal links excluding those in the header and footer, and compared every page with all the others in its language to look for duplicates.
The audit says nothing else is broken
| Check | Result on 330 URLs |
|---|---|
| Orphan pages | 0 |
| Unique content, net of the language boilerplate | minimum 300 words, median ~700 |
| Maximum internal similarity between pages | 32% — no duplicates |
| Self-referencing and reciprocal hreflang | 330 of 330 |
| hreflang targets missing from the sitemap | 0 |
noindex / X-Robots-Tag | 0 / absent |
| Response time | ~80 ms |
| 120 requests at concurrency 10 | all 200, no dropped connections |
There is no bug to find. The switcher fix was necessary and not sufficient, and the two things do not contradict each other: it removed an obstacle that would have blocked everything else anyway.
What is missing is not technical
The other three numbers, measured on the same day:
- 0 backlinks, 0 referring domains. No site in the world links to this domain.
- 84 impressions and 6 clicks in 28 days, and only on the four indexed pages.
- Domain opened to indexing on July 27, with 330 URLs published all at once in five languages.
With a clean setup, "crawled - currently not indexed" is not an error to fix. It is a sentence that means: I have seen it, and I don't yet have a reason to give it a slot. Indexing beyond the entry pages is not unlocked by a tag: it is unlocked when something outside the site confirms the site is worth it. On a domain with zero links that moment comes in months, not weeks.
I am writing this because the comfortable version of this article stops at the previous paragraph, and the comfortable version would have made someone believe that fixing the switcher is enough.
The check you can do in ten seconds
If you run a multilingual site: open the source code and look at the switcher. If what
you see is <option value> and not <a href>, your
translations are disconnected from the site.
Because this is the point: a site can have versions in five languages, declare them all in the sitemap, serve them with correct and reciprocal hreflang, respond 200 and load in eighty milliseconds, and still stay invisible, if no page on the site tells the engine those versions deserve to be reached.
The same goes for any navigation built with a <select>: filters,
categories, locations, archives by year. If the link is not a link, for Google it does
not exist.