URL hierarchy affects crawl efficiency almost entirely through the internal-link graph that the folder structure tends to imply, not through the URL string itself: a page’s directory depth is not a direct ranking or crawl signal, and what actually determines whether a page in a million-plus-URL set gets crawled promptly is how many internal links point to it and how deep it sits in the click-path from pages Google already crawls frequently. Teams that restructure URLs expecting a crawl lift from the reorganization alone typically see nothing change, because the actual link graph didn’t change. At the scale this question is really about, million-plus programmatic sets, that general principle compounds into a specific structural risk worth walking through directly: hub-and-spoke navigation with heavy pagination as the only discovery path.
Why crawl depth in the link graph matters more than folder depth in the URL
Google’s own documentation on crawling describes discovery as fundamentally link-driven: Googlebot finds new URLs by following links from pages it already knows about, and it prioritizes recrawling pages it considers important based on signals including how well-linked they are internally. A page nested four folders deep in the URL (/a/b/c/d/page) that is linked directly from the homepage or from a frequently-crawled hub page is, in practice, “shallow” from Googlebot’s perspective, because crawl depth is measured in link-hops from a well-crawled starting point, not in URL path segments. Conversely, a page with a short, flat URL (/page) that is only reachable by following a chain of paginated category listings, five or six clicks deep with no other inbound internal links, is deep in the crawl graph regardless of how short its URL looks.
For programmatic sets exceeding a million URLs, this link-hop depth compounds badly if the site relies on hub-and-spoke navigation with heavy pagination as the only path to individual pages. If category hub pages paginate at, say, 20 or 50 items per page, and the programmatic pages have no other inbound links (no cross-linking between related pages, no links from a sitemap-adjacent page, nothing from higher-authority content), then a meaningful share of the set can end up dozens of pagination-clicks deep in the crawl graph. Google has to traverse that pagination chain, or discover the URLs some other way (XML sitemaps, for instance), to even know the pages exist, let alone prioritize recrawling them. This is a crawl-budget problem in the literal sense Google describes it: for very large sites, Google allocates crawling attention based on a mix of the site’s perceived value, server capacity, and the demonstrated importance of individual URLs, and URLs that are hard to reach in the link graph read as low-importance by default, independent of their folder path.
XML sitemaps mitigate the discovery problem (Google can find the URL) but they don’t fully substitute for internal linking as a signal of importance. Google’s documentation notes that sitemaps are a hint, not a directive, and that internal linking remains one of the strongest low-effort signals of which pages a site considers significant. A URL that exists only in a sitemap, with no internal links pointing to it, tends to get crawled less frequently and re-crawled less reliably than one that’s also reachable through a few internal links from reasonably authoritative pages.
What folder structure does actually contribute
None of this means folder structure is irrelevant, it’s just not a direct crawl or ranking lever. A logical hierarchy (/category/subcategory/item versus an arbitrary flat namespace) tends to correlate with better internal linking almost by accident, because a well-organized taxonomy naturally produces breadcrumb trails, category hub pages, and related-item modules that link laterally and vertically through the structure. In that sense, hierarchy design is a scaffold that makes it easier to build a good link graph, not a substitute for building one. If the hierarchy exists but the templates don’t actually surface links to sibling and parent pages, the hierarchy provides no crawl benefit on its own.
Folder structure also matters for things adjacent to crawl efficiency without being crawl efficiency itself: segmenting Search Console data and log files by URL path is far easier with a semantic hierarchy than with flat or hashed slugs, which matters enormously when diagnosing crawl behavior across a million-plus-URL set. Grouping by directory lets you spot that an entire subcategory is under-crawled or over-crawled far faster than eyeballing individual URLs. That’s a diagnostic and operational convenience, though, not a mechanism Googlebot itself relies on.
There is no official Google guidance specifying an ideal maximum folder depth (claims of “three levels max” or similar circulating in SEO folklore aren’t sourced to any Google statement). The actual constraint isn’t the count of path segments; it’s whether the pages at any given depth are reachable within a reasonable number of link-hops from crawl-frequent pages, and whether the server can sustain the crawl rate Google is willing to allocate to the set.
Practical implication for structuring a million-plus programmatic set
The design priority, in order, should be: build internal linking that mirrors real topical relationships (parent-to-child, sibling-to-sibling, and links from your highest-authority pages down into the set) rather than relying on hierarchy or sitemaps alone to carry discovery. Use pagination and hub pages as a supplement, not the sole path, since deep pagination chains are one of the most common causes of the “large chunk of the site rarely gets recrawled” pattern in log-file analysis. Then let the folder structure follow the same logical taxonomy as the link structure, mainly so the two reinforce each other and so your own analysis of crawl behavior at this scale stays tractable through directory-level segmentation in Search Console and log files. Monitor crawl behavior directly (via server log analysis and the Search Console Crawl Stats report) rather than assuming a URL reorganization changed anything until you can see a shift in actual crawl frequency by directory or by page cohort. At this scale, verification through logs is the only way to know whether structural changes actually affected what Googlebot does, since the effect runs through the link graph and crawl budget allocation, both of which have to be observed directly rather than inferred from the URL taxonomy alone.