Guides

How to find crawl traps

Practical steps to find crawl traps such as faceted navigation, infinite calendars, session IDs and parameter loops, and how to fix them without hurting indexing.

A crawl trap is any part of a site that can generate a practically unlimited number of URLs, most of which show duplicate, empty or near-useless content. Crawlers cannot know a URL is useless until they have fetched it, so traps soak up crawling that could have gone to your real pages. Google's documentation calls these "infinite URL spaces" and names two harms: overcrawling, and slower discovery of new useful URLs.

The usual suspects

How to find them

1. Look at what Google is actually fetching

Open the Crawl Stats report in Search Console and look at the example URLs under the breakdowns, especially By purpose → Discovery and By response → OK (200). Parameter-heavy URLs, repeated path segments, or dates far in the future or past are strong hints. The examples are a sample, not a complete list, so treat them as leads.

2. Analyse server logs

Logs are the most complete record of crawling. Filter to verified Google crawler requests — user-agent strings can be spoofed, so verify using reverse DNS or Google's published IP ranges as described in Google's documentation. Then group requested URLs by path pattern and by parameter name. Useful questions:

3. Crawl the site yourself

Run a desktop crawler with a sensible URL limit and watch for the crawl count exploding in one section. Sort the results by URL length, by number of query parameters, and by duplicate titles. A crawl that never "finishes" is itself a finding.

4. Compare against what you intend to be crawled

Your XML sitemaps should list the canonical URLs you care about. If the number of URLs being crawled or discovered is far larger than your sitemap inventory, find out where the difference comes from. The free Crawl Budget Snapshot gives a quick view of your sitemap URL count and robots.txt rules to compare against.

5. Test nonsense URLs

Request a URL that should not exist, such as a filter combination with no products or a page number far beyond the last page. If it returns 200 with a template page, you have a soft-404 pattern that can feed a trap.

How to fix them

Google's faceted navigation guide gives a clear decision: if you don't need the filtered URLs indexed, prevent crawling; if you do, make them as crawl-friendly as possible.

If the URLs don't need to be in Search

If some filtered URLs should be indexable

Weaker signals

rel="canonical" pointing filtered pages at the unfiltered version may reduce crawling of the variants over time, and rel="nofollow" on filter links can help only if every link to those URLs carries it. Google describes both as generally less effective in the long term than robots.txt or fragments. A noindex tag does not stop crawling at all, because Google must fetch the page to see it.

Other traps

After the fix

Changes take time to show. Watch the Crawl Stats report and your logs over the following weeks: requests to the trapped patterns should fall, and the share of crawling spent on real pages should rise. For background on why this matters, see crawl budget explained.

Check your own site

The free Crawl Budget Snapshot fetches a site's public robots.txt and sitemaps and gives a quick crawl-waste score with suggested fixes. It is a starting point, not a replacement for Search Console or log analysis.

References

More guides