Magento 2 Layered Navigation Not Showing

Layered navigation on Adobe Commerce and Magento Open Source runs on four things working together: anchor category settings, attribute configuration, a working search engine index, and clean cache. According to Adobe's official documentation, layered navigation is available only for anchor categories, and the Catalog Input Type for Store Owner property of each attribute must be set to Yes/No, Dropdown, Multiple Select, or Price for that attribute to filter at all. Miss any one of those four requirements and the sidebar filters vanish with no error message anywhere in the admin.

This guide walks through the causes in the order they actually show up on live stores, starting with the one Adobe itself lists as the prerequisite, then working through attribute setup, search engine indexing, a confirmed Magento core bug, and theme or extension conflicts. Every fix below is checked against Adobe's own documentation or a verified GitHub issue, not paraphrased from another blog post.

What Layered Navigation Depends On?

Before troubleshooting, it helps to know what the filter sidebar actually needs to render. Four systems have to line up:

  • Category configuration. The category must be flagged as an anchor category. Non-anchor categories display products but never show filter options, by design.
  • Attribute setup. Each attribute needs the right input type and the correct "Use in Layered Navigation" setting.
  • Search engine index. Since Magento 2.4.0, layered navigation queries OpenSearch or Elasticsearch instead of MySQL directly. If that index is stale or the engine is down, filters disappear silently.
  • Cache freshness. Configuration changes only take effect after a reindex and cache flush.

A break in any one of these removes the sidebar from the frontend, and the symptoms often look identical from the storefront (an empty or missing "Shop By" panel), even though the root causes are completely different.

Diagnostic Order: Check These Four Things First

Before changing any settings, check them in this order. It matches how often each one is actually the culprit:

  1. Is the affected category (and its parent, if it's a subcategory) set to Anchor: Yes?
  2. Are the missing attributes set to Filterable and using an input type layered navigation supports?
  3. Is the search engine (OpenSearch or Elasticsearch) running and correctly configured?
  4. Have you reindexed and flushed cache since the last change?

Working through these four in sequence resolves the majority of cases before you need to touch a theme file or disable an extension.

Fix 1: Category Not Set as Anchor

This is the most common cause, and it's also the one Adobe's own documentation leads with. A category that isn't marked as an anchor will show its products normally, but the layered navigation block simply won't render, because Magento doesn't build filter data for non-anchor categories at all.

How to fix it:

  • In the Admin, go to Catalog > Categories.
  • Select the affected category.
  • Expand Display Settings.
  • Set Anchor to Yes.
  • Save the category.

Then reindex the catalog and clear cache:

bin/magento indexer:reindex catalog_category_product bin/magento cache:flush

One detail that trips up a lot of store owners: layered navigation depends on anchor categories, and if a subcategory's parent is not itself an anchor, filtering can behave inconsistently across the category tree. If several subcategories are missing filters at once, check the parent category first rather than editing each child individually.

It's also worth knowing what happens at the other end of this setting. If you deliberately hide a category by setting Include in Menu to No and Anchor to No, that category stays active but disappears from both the top menu and layered navigation, which is a useful trick for landing pages you don't want indexed by filter, but a frustrating surprise if you set it by accident.

Fix 2: Attributes Not Configured for Layered Navigation

Even with the category correctly anchored, individual attributes need to be explicitly turned on for filtering. New attributes and imported ones almost always default to off.

The Catalog Input Type for Store Owner property of the attribute must be set to Yes/No, Dropdown, Multiple Select, or Price. Text fields and text areas can't be used for filtering no matter what else you configure.

How to fix it:

  • Go to Stores > Attributes > Product.
  • Open the attribute (Color, Size, Brand, and so on) in edit mode.
  • Under Storefront Properties, set Use In Layered Navigation.

Here you have two real options, and the difference between them matters more than most guides explain. "Filterable (with results)" includes only the filters for which matching products exist, and omits attribute values with zero product matches from the list. "Filterable (no results)" displays filters for all available attribute values and their product counts even when zero-match values exist, and if the value is a swatch, it shows crossed out instead of hidden.

For most stores, "Filterable (with results)" gives a cleaner customer experience because shoppers never click into a filter that returns nothing. Use "Filterable (no results)" only if you specifically want customers to see the full range of options, including ones that don't apply to the current selection.

  • Set Use In Search Results Layered Navigation to Yes.
  • Repeat for each attribute you want in the sidebar.
  • Save, then reindex and flush cache.

One easy miss: if the Use in Search setting on that attribute is set to No, the Use in Search Results Layered Navigation option doesn't even display, and the attribute won't be used in search regardless of the layered navigation setting. Check Use in Search first if the Layered Navigation field seems to have gone missing from the attribute edit screen.

Fix 3: Search Engine (OpenSearch/Elasticsearch) Misconfiguration or Downtime

Since Magento 2.4.0, layered navigation pulls its filter data from OpenSearch or Elasticsearch rather than querying MySQL directly. If the search engine is down, unreachable, or pointed at the wrong host, the sidebar simply won't populate, and nothing in the admin panel will flag it as an error.

Check that the engine is running:

curl -X GET "localhost:9200" curl -X GET "localhost:9200/_cluster/health?pretty"

Then confirm Magento's configuration matches:

  • Go to Stores > Configuration > Catalog > Catalog > Catalog Search.
  • Verify Search Engine is set to your actual installed engine.
  • Confirm the Server Hostname and Server Port match your setup.

If you're mid-migration between engines, this is the step to double-check twice. Elasticsearch reached end of upstream support alongside recent Magento releases, and OpenSearch (a fork of Elasticsearch 7.10.2) is now the recommended engine for current versions. A store still pointing at a decommissioned Elasticsearch instance after an upgrade will lose layered navigation with no obvious error. If your store handles a large, multi-attribute catalog and search indexing performance is a recurring headache alongside layered navigation issues, MageDelight's Advanced Search Ultimate extension rebuilds Magento's search and filtering on a more configurable Elasticsearch/OpenSearch layer, which is worth a look if this keeps happening after every reindex.

After correcting the configuration:

bin/magento indexer:reindex catalogsearch_fulltext bin/magento cache:flush

Fix 4: Cache and Index Are Stale

This one applies to every fix above it. None of the settings you just changed take effect until the relevant index rebuilds and cache clears; this is the single most common reason a fix "doesn't work" on the first try.

Full reset:

bin/magento indexer:reindex bin/magento cache:flush

If the problem persists after that:

rm -rf generated/code/* generated/metadata/* bin/magento setup:upgrade bin/magento setup:di:compile

Via the Admin panel, go to System > Cache Management, select all cache types, and flush. Then go to System > Index Management and reindex all. If Varnish or a CDN sits in front of your store, purge those layers too since a stale full-page cache will mask a setting change even after everything on the Magento side is correct. For stores managing multiple category landing pages and inconsistent metadata alongside these filter issues, it's worth reviewing the broader Magento 2 SEO configuration at the same time, since caching problems tend to surface in both places together.

Fix 5: The Magento 2.4.5 "Display Out of Stock Products" Bug

If your store runs Magento 2.4.5 and layered navigation shows incorrect results, ignores selected filters, or displays the wrong product counts, this is very likely a confirmed core bug rather than a configuration mistake.

The trigger is Stores > Configuration > Catalog > Inventory > Stock Options > Display Out of Stock Products, set to Yes. When that setting is enabled on Magento 2.4.5, filtering products on the category page has no effect; all products continue to display regardless of the filter applied. This was logged and confirmed by Magento's engineering team as GitHub issue #36312, tagged Component: LayeredNavigation and Issue: Confirmed. A related report, GitHub issue #36377, notes the same defect on 2.4.4, 2.4.5, and 2.4.5-p1, and confirms it was resolved internally under Jira ticket AC-6395, targeted for the 2.4.6 release.

Your options:

  • Set Display Out of Stock Products to No, if that's acceptable for your store. This sidesteps the bug entirely.
  • Upgrade to 2.4.6 or later, where the fix from AC-6395 is already applied.
  • Apply a quality patch or a third-party fix module if you're locked to 2.4.5 for other reasons.

If you're still on 2.4.5 for compatibility reasons, treat this as a strong argument for scheduling the 2.4.6+ upgrade rather than patching around it long-term. Core bugs like this one tend to resurface in edge cases (configurable products, multi-website setups) that a community patch doesn't always cover.

Fix 6: Third-Party Extension or Custom Theme Conflicts

If the four checks above are all correct and the bug in Fix 5 doesn't apply to your version, the remaining cause is almost always a conflict introduced by a theme or an extension that touches catalog search, filtering, or category rendering.

Diagnostic steps:

  • Switch to developer mode: bin/magento deploy:mode:set developer
  • Check var/log/exception.log and var/log/system.log for filter-related errors.
  • Disable suspect extensions one at a time (see command below).

bin/magento module:disable Vendor_ModuleName bin/magento setup:upgrade bin/magento cache:flush

  • If layered navigation reappears after disabling a specific module, you've found the conflict.

Theme compatibility check: temporarily switch to the Luma theme (bin/magento config:set design/theme/theme_id 2) and flush cache. If filters appear on Luma but not your custom theme, the layout XML for your theme is likely missing the catalog.leftnav block, or the template files for Magento_LayeredNavigation were never carried over from an older theme version.

This is a particularly common issue during a Hyvä migration, since Hyvä replaces Knockout.js-based layered navigation templates with Alpine.js components, and any custom theme built before that migration needs a compatibility layer installed for the filters to render correctly. If you're in the middle of, or planning, a move to Hyvä, it's worth reading through a dedicated Luma-to-Hyvä migration guide before touching layered navigation templates directly, since fixing filters on a theme you're about to replace is wasted effort.

For stores running an AJAX-based layered navigation extension (whether from MageDelight, Amasty, Mirasvit, or another vendor), a misconfigured filter extension is a common cause of exactly this symptom, since these modules override Magento's default rendering. MageDelight's Advanced Layered Navigation extension is built and tested against Magento Open Source and Adobe Commerce 2.4.0.x through 2.4.9.x and ships Hyvä-ready by default, which removes one common source of this exact conflict for stores running a modern theme stack.

Quick Reference: Symptom to Likely Cause

Symptom

Likely cause

Where to check

Fix

No filters on one category only

Category not anchored

Catalog > Categories > Display Settings

Fix 1

One attribute missing from sidebar

Attribute not filterable, or wrong input type

Stores > Attributes > Product

Fix 2

Filters gone site-wide after upgrade

Search engine misconfigured or down

Stores > Configuration > Catalog Search

Fix 3

Changed a setting, nothing happened

Stale cache or index

CLI reindex and cache flush

Fix 4

Filter counts wrong, filters ignored on 2.4.5

Confirmed core bug (Display Out of Stock)

Stores > Configuration > Inventory

Fix 5

Works on Luma, not on custom theme

Theme missing template blocks

Layout XML, catalog.leftnav

Fix 6

Filters break after installing an extension

Extension conflict

var/log/exception.log; disable modules one by one

Fix 6

 

Preventing This From Happening Again

A few habits keep layered navigation from breaking silently in the future:

  • Include filter checks in your upgrade checklist. Layered navigation is one of the first features to break during a Magento version upgrade, and it rarely throws an error when it does.
  • Set indexers to "Update on Schedule" in production. Manual reindexing during business hours can lock tables and cause temporary, confusing outages that look like a configuration problem.
  • Review filterable attributes periodically. Attributes that never produce results in most categories add clutter without adding value; disabling them keeps the sidebar meaningful.
  • Monitor your search engine's resource allocation. An under-resourced OpenSearch or Elasticsearch instance can return incomplete filter data well before it shows any other symptoms.

FAQ

Here are quick answers to the most common questions store owners ask about this issue.

1. Why did my layered navigation filters disappear after a Magento upgrade?

Upgrades frequently reset search engine configuration or leave the index stale. Reindex and flush cache first, then confirm your search engine settings under Stores > Configuration > Catalog > Catalog Search, since upgrades can silently revert these values.

2. Does layered navigation require OpenSearch or Elasticsearch?

Yes. Since Magento 2.4.0, layered navigation depends on a working search engine index rather than a direct MySQL query. If that engine is down or misconfigured, the sidebar won't populate even though every other setting is correct.

3. Why does layered navigation work on some categories but not others?

Each category has its own anchor setting, and it doesn't automatically apply site-wide. Check Anchor: Yes on every affected category, including parent categories, and confirm products in those categories actually have values assigned for the filterable attributes.

4. Why are my filter counts showing the wrong numbers?

On Magento 2.4.5, this is very likely the confirmed bug tied to Display Out of Stock Products being enabled. Set that option to No, upgrade to 2.4.6 or later, or apply a patch that addresses Jira ticket AC-6395.

5. Can layered navigation work with a custom theme?

Yes, but the theme has to include the correct template blocks and layout XML, specifically the catalog.leftnav block. Test with the Luma theme first; if filters appear there but not on your custom theme, the theme's templates or Hyvä compatibility module are the place to look.

Layered navigation rarely fails for one single reason. It's almost always the intersection of an anchor setting, an attribute configuration, and an index that's fallen out of sync, occasionally compounded by a confirmed core bug or a theme that hasn't caught up with a Magento version change. Work through the diagnostic order above before touching custom code, and in most cases the fix takes minutes, not a developer ticket.