Skip to content

Your Menu Filters Are Eating Your Crawl Budget

Four filters on one menu page can generate ten thousand URLs. Google finds those before it finds your location pages, and nobody notices until they look.

Four dispensary menu filters multiplying into a wall of ten thousand URLs, with the location pages left uncrawled
The short answer

Four menu filters with eight, forty, six and five options generate 9,600 URLs from one page. Google finds those before it finds your location pages.

Subject: Crawl budget Part of: Can Google read the site at all
In this article

Open Search Console, go to Settings, and click Crawl stats.

Look at the total crawl requests for the last ninety days. Then look at how many pages you actually have. If those two numbers are far apart, Google is spending most of its time on your site somewhere you never meant it to go.

On a dispensary site, that place is nearly always the menu filters.

How Four Filters Become Ten Thousand URLs

Filters multiply. That is obvious once said. Almost nobody works it through, because nobody does the maths on a feature that took an afternoon to switch on.

Take a modest menu. It has a category filter with eight options, a brand filter with forty, an effect filter with six, and a potency filter with five bands. Each combination is its own URL, because each one has its own parameter string.

How four menu filters become thousands of URLs Eight categories, forty brands, six effects and five potency bands give 9,600 URLs with all four filters set, against 53 pages that earn anything. FOUR FILTERS, ONE MENU CATEGORY8 options BRAND40 options EFFECT6 options POTENCY5 bands 8 × 40 × 6 × 5 URLS WITH ALL FOUR SET 9,600 more with partial choices, sort orders and pagination PAGES YOU WANTED CRAWLED 12 location pages, 40 guides, 1 menu 53 URLs that actually earn anything WHAT THE CRAWLER FINDS 9,600 filtered variants of one page About 181 low value URLs for every real one
Nobody decided to publish 9,600 pages. The feature did it quietly.

With all four filters set, that is 9,600 URLs from one menu page. Count the partial choices, the sort orders, pagination, and grid or list views, and you are into six figures.

Meanwhile the site has twelve location pages, forty guides and one menu. Fifty-three URLs that earn anything.

The ratio is what matters. For every URL you wanted crawled, there are about 180 that exist only because a filter combination is possible. Filters are one way a menu wastes crawling it never earns back, and the rest of the delivery layer usually needs the same look.

What This Actually Costs

First, what it is not. This is not a penalty. It is not duplicate content of the kind that gets a site actioned. Nobody will send you a notice about it.

It is a discovery problem, which is exactly why it goes unnoticed for years.

Google explains the mechanics in its own guide to faceted navigation. Filter URLs look new, and a crawler cannot tell whether a URL is useful until it has crawled it. So it spends time on thousands of them, and that slows the discovery of the pages you care about.

Where crawl activity goes on a filtered menu site Most crawling is spent on filter combinations, so location pages and new content are found and refreshed slowly. It is not a penalty. A MONTH OF CRAWLING, ILLUSTRATED Filter and sort combinations Menu Real pages What this costs you New location pages take weeks to be found rather than days. Updated pages are revisited slowly. Sold out products linger in the index. What it is not Not a penalty, and not duplicate content in the punished sense. It is a discovery problem, which is why nobody notices until they look. Proportions are illustrative. Your own Crawl stats report shows the real split.
The crawling is happening. It is happening somewhere that earns nothing.

The costs are quiet and they add up. New location pages take weeks to be found, not days. Pages you update are revisited slowly, so improvements take longer to show. Products that sold out three weeks ago stay in the index, because Google has not been back.

And when you finally fix something important, the fix takes far longer to register than it should.

None of this shows up as a drop. It shows up as everything being slower than it ought to be. That is much harder to notice, and much easier to blame on something else.

One honest note. Google says most sites never need to think about crawl budget, and a sixty page dispensary site should be one of them. Filters are how a small site ends up with the URL count of a large one.

Why Dispensary Sites Get This Worse Than Most Retailers

Ordinary online shops have faceted navigation too, and the problem is well known there. Cannabis retail stacks three more things on top.

There are more filters. A clothing shop filters on size and color. A dispensary menu filters on category, brand, strain type, effect, potency, terpene and format. Customers really do shop that way, and the platform offers all of it.

Stock turns over every week. A combination that showed products last month shows nothing this month. So you build up a pile of URLs that exist, load a valid page, and hold no products. Google calls those soft 404s once it notices, and it takes a while to notice.

The menu platform makes them. These URLs are not in your sitemap, and nobody decided to create them. The menu software builds them. That means the person in charge of your SEO often has no idea they exist.

How To See The Scale Of It On Your Own Site

1. Search Console, Settings, Crawl stats. Look at total requests over ninety days, and at the breakdowns by response and by file type. A large volume of HTML requests against a small count of real pages is the signal.

2. Open the Pages report and read the reasons. Look for large counts under “Crawled, currently not indexed”, “Duplicate without user-selected canonical” and “Soft 404”. Filter URLs land in all three. Open the examples and count how many carry a question mark.

3. Read your server logs if you can get them. Filter for Googlebot and count requests to URLs with parameters, against requests to your real pages. This is the most accurate view you will get, because it shows what Google actually fetched.

4. Crawl your own site and count. Point a crawler at the menu and let it run. The number it reaches before you stop it is the number Google is dealing with.

Check what a crawler receives

The site checker fetches a page the way a crawler does. It reports what is in the HTML, how much of the page relies on JavaScript, and how heavy the response is before anything renders.

Run the dispensary site checker

What Google Recommends For Filters

Google updated its guidance on faceted navigation at the end of 2024, and it is more direct than most SEO advice. Five points apply to a dispensary menu.

If you do not need filter URLs in search, stop them being crawled. Google’s first suggestion is to disallow them in robots.txt, while leaving the plain versions open.

Filters in the URL fragment cost nothing. A fragment is the part after a #. Google says filters built that way have no effect on crawling at all. If your menu platform supports it, it is the cleanest option for sort and view settings.

Canonical tags help slowly. Google says a canonical may, over time, reduce crawling of the other versions. Useful, but not a fix on its own.

Return a 404 for empty combinations. When a filter combination has no results, Google recommends a 404. On a menu where stock turns over weekly, this one matters a lot.

Keep the order consistent. Use the standard & separator, keep filters in the same order every time, and never allow the same filter twice. Otherwise one combination can exist under several URLs.

What to do with each kind of menu URL Clean category paths are indexed. Filter combinations are blocked in robots.txt. Empty combinations return 404. Sort and view options move into the URL fragment or are blocked. ONE RULE PER KIND OF URL URL TYPEEXAMPLEWHAT TO DO Single category/menu/edibles/Index it, write for it Filter combination?brand=x&effect=yBlock in robots.txt Empty combination?brand=sold-outReturn a 404 Sort or view#sort=priceFragment, or block
Four kinds of menu URL, four rules. Most sites need all four.

The Fix, Decided Per Filter Rather Than Per Site

The instinct is to block everything with one wildcard in robots.txt. That is too blunt, and it throws away URLs that could rank.

Some filters match real demand. People search “flower dispensary near me” and “edibles Eugene”. Nobody searches for indica gummies under 100mg from one brand, and that combination should never have been a URL.

Which filter URLs to open and which to close Open the few single category paths people search for. Close combinations with robots.txt, or with canonical and noindex first if they are already indexed. DECIDE PER FILTER, NOT PER SITE OPEN THESE Filters people search for /menu/flower/ /menu/edibles/ /menu/prerolls/ One category, a clean path, and real content written for it. Usually six to ten of these, never hundreds. CLOSE THESE Everything combined ?brand=x&effect=y&thc=z ?sort=price&view=grid ?page=2&brand=x Not indexed yet: block the patterns in robots.txt. Already indexed: noindex or canonical first, then block. Empty combinations should return a 404, which is Google’s own advice.
Six to ten open category paths. Everything combined stays closed.

1. Pick the six to ten filters that match real searches. Usually the top level categories: flower, edibles, prerolls, concentrates, vapes and tinctures. Check them against your Search Console query data rather than guessing.

2. Give those a clean path, not a parameter. /menu/flower/, not /menu/?category=flower. Then treat each one as a real page. Give it a heading, a paragraph about that category at your store, and a place in your internal links.

On a chain, decide which page owns “edibles” plus a town, the category page or the store page. The cannibalization mapper helps you settle that before two of your own pages compete for it.

3. Close everything else. If the combinations are not indexed yet, block the parameter patterns in robots.txt, as Google suggests. Add a canonical to the clean parent page as well.

4. If they are already indexed, change the order. Google cannot see a noindex or a canonical on a URL it is not allowed to crawl. Add those first, give Google a few weeks to process them, and block afterwards.

5. Keep your sitemap to the clean paths only. A sitemap that lists parameter URLs is asking for the problem. Check it, because plugins sometimes add them.

On one chain, Search Console had picked up just over 40,000 URLs, for a site with 61 pages worth having.

The team had spent the previous quarter on content. They could not understand why new guides took three weeks to reach the index. They assumed it was an authority problem and were thinking about buying links to fix it.

The whole thing was one menu with five filters, switched on during a platform move eighteen months earlier.

That last detail is the one to remember. The cause was a migration, not a decision. Nobody chose ten thousand pages. Somebody moved platforms, and the new one had more filters than the old one.

Do not block already-indexed filters in robots.txt as your first move.

If Google has already indexed thousands of filter URLs, blocking them stops it crawling them. Then it can never see the noindex or canonical that would clear them out. They stay in the index, frozen, and a temporary problem becomes a permanent one.

Noindex or canonical first. Let it process. Block afterwards.

How To Keep It From Coming Back

This problem grows back, and that is what catches teams who have fixed it once.

Check after every platform change. Menu providers add filter options in updates. A new filter multiplies against every existing one, it does not add to them. One new filter with five options takes 9,600 URLs to 48,000.

Put it on your migration checklist. A platform move is the most common cause of all, because the new system inherits the old URLs and adds its own.

Our guide to dispensary menu migration has the full checklist for a platform move, including redirects, sitemaps and the checks to run after launch.

Watch the Crawl stats trend, not the single number. A steady climb with no rise in real pages means something started making URLs. Finding it early is far cheaper than finding it at 40,000.

What This Is Worth Fixing Alongside

Crawl waste is a foundation problem. It belongs in the same phase as the other things that decide whether Google can read your site at all.

The first is whether your menu products reach the HTML. If your menu is an embed, why an embedded menu stays out of Google covers that fix. This post is the next step once it works.

The second is whether your age gate lets the crawler read the page at all.

Fix all three and everything after them gets faster. Fix none of them, and next quarter’s content program will be delivered onto a site that cannot process it.

Crawl budget rarely comes up in dispensary SEO work, yet on a large menu it decides which pages Google ever sees.

If those three foundation fixes are more than your team can take on, they are the core of our cannabis technical SEO work.

If you take one thing away

Open Crawl stats today and compare the request count with the number of pages you have. If the gap is huge, your filters are the first place to look.

Check This On Your Own Site With The Site Check

It runs in your browser, needs no signup, and tells you whether the problem described above applies to you. If it does, the fix is named rather than quoted.

Open the Site Check