About the Author
Written by the founder of Hilmost. I focus on building privacy-first utilities for the modern web.
For six weeks, Google simply wasn't indexing new pages on Hilmost Toolbox. Tools were live, working, and useful — but invisible in search. No warnings, no manual penalty, just silence.
The first instinct is to assume something dramatic is broken. It wasn't. The real cause was quieter: our sitemap was including parameterized URLs — the same Time Zone Converter page, but with query strings like ?sourceZone= or ?team= attached for shareable links. To a crawler, each of those looks like a separate page. Multiply that across a handful of tools with shareable state, and you get a sitemap bloated with near-duplicate URLs, all competing for the same crawl budget.
On top of that, trailing-slash inconsistencies meant /tool/ and /tool were sometimes treated as two different pages instead of one.
Individually, neither issue looks severe. Together, they diluted crawl priority enough that genuinely new content kept getting deprioritized.
The fix was unglamorous: enforce trailingSlash: false across the Next.js config and Firebase hosting rules, sanitize the sitemap to exclude parameterized variants, and make sure every parameterized pattern had an explicit robots.txt disallow rule with a canonical tag pointing back to the clean URL.
The lesson that stuck: crawlers don't reward effort, they reward clarity. A sitemap should describe exactly what you want indexed — nothing implied, nothing left for Google to guess at. If you're building shareable or stateful URLs into a tool, decide before launch whether they're crawl-worthy, not after.
If you're seeing indexing delays with no clear error, check your sitemap for URL variants first. It's a boring thing to check, and it's usually the answer.
Written by the founder of Hilmost. I focus on building privacy-first utilities for the modern web.