An 80-URL sitemap across five languages looks like a solved problem. Then you audit it.
1. hreflang is a promise you have to keep
Six hreflang tags per page (five languages plus x-default) is the easy part. The hard part is that every one of them has to point at a page that returns 200 with the right canonical. One stale URL in the alternate set and the whole cluster gets dropped, not just the bad line.
2. A sitemap can be valid XML and still be wrong
Schema-valid is not the same as correct. The checks that actually matter:
- every
<loc>returns 200 (not 301, not 404) - no
<loc>duplicates a URL that another<loc>canonically resolves to -
<lastmod>changes only when the content actually changed
3. Canonical and hreflang must agree
A page that claims "I am the English original" in canonical and "I am the Russian alternate" in hreflang is telling crawlers two different stories. Both have to be generated from one source of truth (a per-page translation map), not written by hand.
4. Breadcrumbs are structured data, so validate them as data
BreadcrumbList JSON-LD that does not match the visible breadcrumb trail is worse than no JSON-LD at all: you are describing a page that does not exist.
5. Check the live site, not the build output
A correct build directory means nothing. Fetch the deployed URLs and count: hreflang tags, canonical, breadcrumbs, <loc> entries. If the count does not match the expectation, the deploy half-failed — which happens often when files are uploaded in a loop.
That is the audit routine I run on noomicheems.online, an independent, unofficial companion site for the browser game NoomiClone by jamesnorth. It is not the developer's site and makes no claim to the game. The guide page is what the crawl actually needs to reach.
