eCommerce

14 Fixes for a Slow Magento 2 Store

Fourteen Magento 2 speed fixes in order of impact: production mode, full-page cache with Varnish, Redis, OpenSearch, indexers, cron, extensions, images, Hyvä, and hosting. What to check first and why.

A slow Magento 2 store loses sales on every page and drags down search rankings through Core Web Vitals. The good news is that most slow Magento stores are slow for the same short list of reasons. Here they are, roughly in the order we check them on a performance audit. The first five are configuration and can often be fixed in a day.

1. Make sure the store is in production mode

It sounds obvious, but we regularly find live stores running in default or developer mode, which generates static files on the fly and turns off optimizations. Run bin/magento deploy:mode:show. If it doesn't say production, fix that first.

2. Put Varnish in front of the full-page cache

Magento's built-in full-page cache works, but Varnish is the recommended production setup and is much faster at serving cached pages. Then check the cache hit rate. Category and CMS pages should mostly come from cache. A low hit rate usually means a block somewhere is marked uncacheable.

3. Hunt down cacheable="false" blocks

A single layout block with cacheable="false" disables full-page caching for every page that block appears on. Poorly written extensions sometimes add one to the header or footer, which turns off caching for the whole site. Search your layout XML and extensions for it.

4. Use Redis for cache and sessions

File-based cache and sessions slow down under load and on shared disks. Configure Redis for the default cache, page cache (if not using Varnish), and sessions, ideally as separate databases or instances so a session flood doesn't evict your cache.

5. Set indexers to "Update by Schedule" and fix cron

"Update on Save" makes admin saves and imports slow and can lock tables during busy periods. Switch indexers to "Update by Schedule," then make sure cron is actually running reliably. Stuck cron jobs are a frequent hidden cause of stale prices, missing products, and growing database tables.

Search and layered navigation run on OpenSearch (or Elasticsearch on older versions). Undersized search servers make category filtering and search results pages slow. Give it enough memory, keep it on the supported version, and check slow queries. For large catalogs, a dedicated search service like Hawksearch can be worth it.

7. Audit your extensions

Third-party extensions are the most common cause of slow Magento stores we see. Profile a slow page and look for observers and plugins that run on every request, extensions making external API calls during page load, and modules you no longer use. Disabling and removing unused extensions is free performance.

8. Clean up the database

Log tables, quote tables full of abandoned guest carts, old cron history, and URL rewrites multiplied by every store view all grow without limit. Configure log cleaning, prune old quotes, and check for bloated URL rewrite tables, especially after a migration.

9. Switch the frontend to Hyvä

Magento's default Luma theme loads a lot of JavaScript (RequireJS, Knockout, jQuery) that hurts mobile performance. Hyvä replaces it with a lightweight Tailwind and Alpine.js frontend and routinely moves stores from failing to passing Core Web Vitals. It's a project rather than a setting, but it's the biggest single frontend improvement available.

10. If you stay on Luma, fix the JavaScript

Not ready for Hyvä? Turn on JS and CSS minification, defer non-critical scripts, remove unused modules from the page, and be careful with JS bundling. Magento's built-in bundling often makes things slower by creating huge files. Measure before and after each change.

11. Optimize images

Serve WebP or AVIF, size images to their display dimensions, lazy-load anything below the fold, and preload the main product or hero image so it doesn't hurt Largest Contentful Paint. A CDN or image service that resizes on the fly saves a lot of manual work on large catalogs.

12. Remove or delay third-party scripts

Chat widgets, review platforms, heatmaps, affiliate pixels, and several tag managers' worth of marketing tags can add seconds to every page. Audit them all, remove what nobody uses, load the rest after user interaction where possible, or move tags server-side.

13. Use a CDN

A CDN serves static assets and media from locations close to your customers and takes load off your origin server. Many also handle image optimization, compression, and HTTP/3. For U.S. stores with national customers it's an easy win.

14. Right-size your hosting

Magento needs real resources: enough PHP-FPM workers, fast NVMe storage, sufficient RAM for MySQL buffers, and a current supported PHP version. Shared hosting and undersized VPS plans are false economies for any store doing meaningful revenue. Make sure your hosting can handle peak days, not only a normal Tuesday.

Where to start

SymptomLikely causeCheck first
Every page is slow, even cached onesMode, hosting, or no Varnish#1, #2, #14
Some pages fast, some slowUncacheable blocks#3, #7
Category filtering is slowSearch engine sizing#6
Admin and imports are slowIndexers, cron, database#5, #8
Fast server, poor mobile scoresFrontend JavaScript and images#9–#12

Most of these fixes are covered by our technical SEO and Core Web Vitals service, and ongoing performance monitoring is part of Magento 2 support plans. If your store is several major versions behind, read our Magento development guide or talk to us about an upgrade or migration.

Frequently asked questions

Why is my Magento 2 store so slow?

The most common causes are the store not running in production mode, full-page caching disabled or bypassed by an uncacheable block, poorly written third-party extensions, a JavaScript-heavy Luma theme, and undersized hosting.

Is Hyvä worth it for Magento performance?

For most stores, yes. Hyvä replaces Luma's heavy JavaScript with a lightweight frontend and typically moves stores from failing to passing Core Web Vitals on mobile. It also tends to lower frontend maintenance costs.

How much does Magento 2 performance optimization cost?

A performance audit with configuration fixes typically falls within our $2,500–$12,000 technical SEO range, depending on store size. A Hyvä theme rebuild is a larger project, scoped separately.

Related articles

Need help putting this into practice?

Reed Dynamic builds the eCommerce stores, mobile apps, and integrations discussed on this blog. Tell us what you're working on.

Or call (734) 535-8954 · Mon–Fri 9–5 ET