How to Disable Magento 2 Indexers: CLI, Admin Panel, and Custom Module

How to Disable Magento 2 Indexers: CLI, Admin Panel, and Custom Module

[Updated: March 18, 2026]

Bulk imports grinding to a halt. Admin panel freezing after every product save. These problems trace back to Magento 2 indexers running when they should not.

Disabling or suspending indexers gives you control over when data processing happens. This tutorial covers three methods: CLI commands, admin panel configuration, and custom module development.

Key Takeaways

  • Magento 2 indexers transform raw database data into optimized lookup tables for fast page loads.
  • The indexer:set-status suspended command (2.4.7+) is the recommended way to pause indexers.
  • CLI commands offer the most control. The admin panel works for quick mode changes.
  • Never disable price, category, or search indexers on stores that use default Magento features.
  • Set indexers to "Update by Schedule" in production. Avoid "Update on Save" for high-traffic stores.

What Is a Magento 2 Indexer?

Magento 2 indexer = a process that transforms raw database records into optimized index tables. Instead of calculating product prices, stock levels, and category assignments on every page load, Magento reads from pre-built tables.

Perfect for: Store owners managing large catalogs, developers running bulk imports, teams testing payment or inventory integrations.

Not ideal for: Stores with fewer than 100 products or minimal admin activity.

What is Magento 2 Indexer

Indexers run after product details, category assignments, or stock data change. The processed results go into index tables that power catalog pages, layered navigation, and search results.

Each indexer handles one part of Magento's core features. The table below lists all default indexers in Magento 2.4.8.

Complete List of Magento 2 Indexers

Indexer Code Name What It Does
catalog_category_product Category Products Maps products to categories
catalog_product_category Product Categories Maps categories to products
catalog_product_price Product Price Calculates final prices with tier pricing, discounts, and customer groups
catalog_product_attribute Product EAV Indexes product attribute values for layered navigation
cataloginventory_stock Stock Processes stock status and quantity data
catalogsearch_fulltext Catalog Search Builds the full-text search index for product search
catalogrule_rule Catalog Rule Product Applies catalog price rules to products
catalogrule_product Product/Catalog Rule Maps products to catalog price rules
customer_grid Customer Grid Rebuilds the customer grid in admin (supports schedule mode since 2.4.8)
design_config_grid Design Config Grid Indexes design configuration data
inventory Inventory Indexes Multi-Source Inventory (MSI) data
salesrule_rule Sales Rule Indexes cart price rules

This table lists Magento Open Source indexers. Adobe Commerce adds additional indexers for Target Rules and SaaS Data Export.

Check the full status of your indexers with:

bin/magento indexer:info

When to Disable or Suspend Indexers

Not every store needs every indexer active at all times. Common scenarios:

During bulk imports. Large data imports trigger reindexing after each record. Suspending indexers before import and running a full reindex after completion cuts import time from hours to minutes.

External inventory systems. Stores that sync stock through third-party tools like ERPs or PIMs can suspend the stock indexer. The external system manages inventory data, and the Magento indexer creates conflicts or duplicate processing.

Headless architecture. Headless setups serve data through APIs, not Magento's frontend index tables. Indexers add server load without delivering value.

Development and testing. Developers make frequent catalog changes. Automatic reindexing slows each save operation. Suspending indexers during development speeds up the workflow.

Custom pricing logic. Stores that calculate prices through custom modules can suspend the price indexer. The default indexer overwrites custom values.

Method 1: CLI Commands (Recommended)

The Magento CLI provides the most control over indexer behavior. All commands run from your Magento root directory.

Check Current Status

bin/magento indexer:status

This shows the status (Ready, Reindex Required, Processing, Suspended) and mode (Update on Save, Update by Schedule) for each indexer.

Set Mode to Schedule

Switch indexers from automatic updates to scheduled mode:

# All indexers
bin/magento indexer:set-mode schedule

# Specific indexers
bin/magento indexer:set-mode schedule cataloginventory_stock catalog_product_price

Two modes are available:

  • realtime (Update on Save): Reindexes after every change. Suitable for small catalogs.
  • schedule (Update by Schedule): Reindexes via cron jobs at set intervals. Recommended for production.

Suspend Indexers (Magento 2.4.7+)

The indexer:set-status command, introduced in version 2.4.7, is the cleanest way to pause indexers:

# Suspend specific indexers
bin/magento indexer:set-status suspended cataloginventory_stock catalog_product_price

# Suspend all indexers
bin/magento indexer:set-status suspended

Suspended indexers stop all automatic updates, both real-time and cron-triggered. This is the recommended approach for bulk operations and maintenance windows.

Restore indexers after your operation completes:

# Mark as needing reindex
bin/magento indexer:set-status invalid cataloginventory_stock catalog_product_price

# Trigger reindex
bin/magento indexer:reindex cataloginventory_stock catalog_product_price

Reindex Specific Indexers

Target specific indexers instead of running a full reindex:

# Single indexer
bin/magento indexer:reindex catalogsearch_fulltext

# Multiple indexers
bin/magento indexer:reindex catalog_product_price cataloginventory_stock

After reindexing, clear the Magento cache to serve fresh data.

Parallel Reindexing

Speed up reindexing by running multiple threads:

MAGE_INDEXER_THREADS_COUNT=3 php -f bin/magento indexer:reindex catalog_product_price

This distributes the workload across CPU cores. Set the thread count to match your available cores. Effective for large catalogs with millions of records.

Method 2: Admin Panel

For quick mode changes without SSH access, use the Magento admin interface.

  1. Navigate to System > Tools > Index Management
  2. Select the indexers you want to modify (checkboxes)
  3. Choose an action from the dropdown:
    • Update on Save: Reindex after every change
    • Update by Schedule: Reindex via cron
    • Invalidate index: Force reindex on next cron run
  4. Click Submit

The admin panel shows each indexer's current mode, status, and last update time. Use this for quick adjustments. For bulk operations or automation, the CLI provides more options.

Method 3: Custom Module with Plugin (Advanced)

For permanent changes to indexer behavior, create a Magento 2 module that uses a plugin (interceptor) to override indexer logic.

Step 1: Create Module Structure

app/code/YourVendor/DisableIndexer/
├── etc/
│   ├── module.xml
│   └── di.xml
├── Plugin/
│   └── Indexer/
│       └── ConfigPlugin.php
└── registration.php

Step 2: Register the Module

registration.php:

<?php
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'YourVendor_DisableIndexer',
    __DIR__
);

etc/module.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="YourVendor_DisableIndexer"/>
</config>

Step 3: Create the Plugin

etc/di.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Framework\Indexer\Config\Converter">
        <plugin name="disable_stock_indexer"
                type="YourVendor\DisableIndexer\Plugin\Indexer\ConfigPlugin"/>
    </type>
</config>

Plugin/Indexer/ConfigPlugin.php:

<?php
namespace YourVendor\DisableIndexer\Plugin\Indexer;

use Magento\Framework\Indexer\Config\Converter;

class ConfigPlugin
{
    private const DISABLED_INDEXERS = [
        'cataloginventory_stock',
    ];

    public function afterConvert(Converter $subject, array $result): array
    {
        foreach (self::DISABLED_INDEXERS as $indexerId) {
            unset($result[$indexerId]);
        }
        return $result;
    }
}

Step 4: Enable and Verify

bin/magento module:enable YourVendor_DisableIndexer
bin/magento setup:upgrade
bin/magento cache:clean
bin/magento indexer:info

The disabled indexer no longer appears in the indexer list. This approach uses Magento 2's plugin system, which is the supported way to modify core behavior.

Important: This plugin removes the indexer from the system entirely. It will not appear in indexer:info and cannot be reindexed. For most use cases, setting the mode to schedule or using indexer:set-status suspended is sufficient. Reserve this method for cases where an external system replaces the indexer's function.

When NOT to Disable Indexers

Magento 2 Disable Indexer for Multi-Store Setup

Default Pricing

The price indexer calculates tier prices, customer group prices, and promotional discounts. Disabling it shows incorrect prices to customers. Keep it active unless a custom module handles all pricing logic.

Layered Navigation

Attribute indexing powers filtered search on category pages. Without it, customers cannot filter by size, color, or price range. Broken filters reduce conversions.

Multi-Store Configurations

Stores with multiple store views depend on synchronized index data. Disabling indexers creates inconsistencies in product visibility, pricing, and stock across views.

Catalog Search

The fulltext search indexer builds the search index. Disabling it breaks product search. Consider this only if an external search engine replaces native Magento search.

SEO and URL Rewrites

Magento indexers maintain URL rewrite tables. Disabling them causes broken URLs and redirect failures that harm search engine rankings.

Best Practices for Indexer Management

Track Indexer Status

Use "Update by Schedule" in production. Adobe recommends scheduled indexing over real-time for all production stores. Real-time mode triggers reindexing on every save, which degrades performance during high admin activity. Since Magento 2.4.8, all new indexers default to scheduled mode.

Suspend indexers during bulk operations. Before large imports, suspend indexers with indexer:set-status suspended. Run a full reindex after the import completes. This avoids thousands of incremental reindex operations.

Reindex one at a time. Target specific indexers with bin/magento indexer:reindex [indexer_name]. Full reindexing puts unnecessary load on the server.

Schedule reindexing during low traffic. Configure cron jobs to trigger reindexing during off-peak hours. Avoid overlap with other resource-heavy cron tasks.

Monitor indexer health. Run bin/magento indexer:status as part of your monitoring routine. Catch stuck or failed indexers before they affect the storefront.

Test changes in staging. Never modify indexer configurations in production without testing first. Verify that the frontend displays correct data after reindexing.

FAQ

What happens if I disable all indexers in Magento 2?

The storefront stops updating. Product prices freeze, search results become stale, and category pages show outdated data. Only disable specific indexers that conflict with external systems or custom logic.

How do I check which indexers need reindexing?

Run bin/magento indexer:status from your Magento root directory. Indexers with "Reindex Required" status need processing. "Ready" means the index is current. "Suspended" means manual intervention paused the indexer.

What is the difference between "Update on Save" and "Update by Schedule"?

Update on Save reindexes after every admin change. Update by Schedule batches changes and processes them via cron at set intervals. Adobe recommends scheduled mode for production stores with active admin users.

Can I suspend indexers during a data import?

Yes. Run bin/magento indexer:set-status suspended before the import. This prevents thousands of incremental reindex operations. After the import, set the status to invalid and run bin/magento indexer:reindex to rebuild all indexes at once.

Does disabling an indexer delete its data?

No. The existing index tables remain intact with their last processed data. The indexer stops processing new changes. When you re-enable the indexer, run a full reindex to sync the tables with current data.

How does Magento 2.4.8 change indexer behavior?

Magento 2.4.8 adds schedule mode support to the Customer Grid indexer, which was restricted to real-time mode in earlier versions. On new installations and upgrades, all indexers default to "Update by Schedule" instead of "Update on Save." Existing indexer configurations remain unchanged during upgrades.

When should I use the CLI vs the admin panel for indexer management?

Use the CLI for bulk operations, automation, and production management. The admin panel works for quick visual checks and mode changes. The CLI provides commands like set-status suspended that the admin panel does not offer.

Is it safe to run reindexing during business hours?

For small catalogs, reindexing finishes in seconds. For large catalogs (100K+ products), schedule reindexing during off-peak hours. Use MAGE_INDEXER_THREADS_COUNT to parallelize the process and reduce execution time.

Summary

Magento 2 indexer management controls how your store processes and serves catalog data. Suspend indexers during bulk imports and maintenance. Use scheduled mode in production. Reserve real-time mode for small stores with minimal admin activity.

Three methods give you full control:

  • CLI commands for production management and automation
  • Admin panel for quick mode changes
  • Custom modules for permanent indexer modifications

Managed Magento hosting provides the server infrastructure and cron configuration that reliable indexer management requires.

CEO & Co-Founder

Raphael Thiel co-founded MGT-Commerce in 2011 together with Stefan Wieczorek and has built it into a leading Magento hosting provider serving 5,000+ customers on AWS. With 25+ years in e-commerce and cloud infrastructure, he oversees hosting architecture for enterprise clients. He also co-founded CloudPanel, an open-source server management platform.


Get the fastest Magento Hosting! Get Started