If you want to speed up an Elementor website, start by looking at what is actually on the page, because the fix is rarely one plugin or one toggle. Elementor makes it very easy to stack a hero, a slider, a testimonial carousel, an icon grid and a video background onto one page, and every one of those costs the browser something. I like Elementor, and I build with it, but a slow Elementor site is almost always the sum of many small decisions rather than a single mistake. Here is the order I work in, and the things I deliberately avoid.
Why Elementor sites get heavy
Elementor is a visual builder, which means every layout choice is turned into markup, CSS and sometimes JavaScript. The common sources of weight are:
- DOM size. Deeply nested sections, columns, inner containers and wrapper divs pile up. Lighthouse starts warning about an excessive DOM at roughly 800 nodes and fails it past about 1,400. A long landing page built carelessly can pass that without much effort.
- Global CSS and JS. Elementor loads its frontend assets, plus the CSS for widgets, even where you do not use them, depending on your settings.
- Add-on plugins. Third-party widget packs often register dozens of widgets and load their own scripts and styles on every page.
- Sliders, animations and background videos. Each adds JavaScript, and entrance animations delay when content actually appears.
- Heavy images and web fonts. The same problem as any WordPress site, made worse because builders make it easy to drop in full-size media.
Elementor's built-in settings to speed up your website
Before adding any plugin, open Elementor > Settings > Features (called Experiments in older versions). Several performance options live there. What you see depends on your version, because some of them graduated to the default behavior in recent releases, so treat this list as things to check rather than a fixed recipe:
- Optimized DOM Output removes unnecessary wrapper elements from widgets, which lowers DOM size. On older sites, test it, because custom CSS targeting the old wrapper classes can break.
- Improved Asset Loading loads widget scripts and styles only on pages that use those widgets instead of loading everything everywhere.
- Improved CSS Loading inlines or conditionally loads CSS so pages do not request stylesheets for features they never use.
- Lazy Load Background Images defers images set as section or container backgrounds until they approach the viewport. Do not rely on it for a hero background, which you want loading early.
- Inline Font Icons replaces the Font Awesome and eicons font files with inline SVG, removing font requests for icons.
- Containers. The Flexbox container is now the standard layout element in current versions, and it replaces the old section and column pattern with fewer nested wrappers. For new pages, build with containers. Converting an old site wholesale is a project of its own and needs visual testing page by page.
After changing any of these, go to Elementor > Tools and run Regenerate CSS & Data, then clear your cache and check key pages on a phone-width screen.
Hosting and caching: what speeds up Elementor most
No amount of front-end tuning rescues a slow server. Time to First Byte on an uncached page is largely down to hosting quality, PHP version and database speed. Run a current, supported PHP version and make sure the host is not overselling a shared server you share with hundreds of other sites.
On top of that, think in layers:
- Page cache. Stores the finished HTML so WordPress does not rebuild the page for every visitor. This does the most for load times.
- Object cache. Redis or Memcached, if your host offers it, reduces repeated database queries. It matters most for WooCommerce and membership sites with lots of dynamic content.
- CDN. Serves images, CSS and JS from locations near the visitor. It helps most when your audience is far from your server.
Choose one caching plugin, or the host's built-in caching, and configure it properly. Which one matters less than that you pick only one.
Images and fonts that help Core Web Vitals
Image optimization
Images are usually the biggest transfer on an Elementor page and usually the LCP element too. Aim for these:
- Use WebP, or AVIF where your setup supports it. WordPress core supports both formats in the media library in current versions.
- Serve the right dimensions. A 2400-pixel photo shown in a 600-pixel column is wasted bytes. Pick the correct image size in the Elementor widget instead of always choosing Full.
- Lazy-load images below the fold, but never the LCP image. If your hero image is lazy-loaded, it will load late and hurt LCP. Check this in PageSpeed Insights under the LCP element diagnostic.
- Set width and height, or use a fixed aspect ratio, so the layout does not jump as images arrive. That keeps CLS under the 0.1 threshold.
The Core Web Vitals targets to hold in mind: LCP at or under 2.5 seconds, INP at or under 200 milliseconds, and CLS at or under 0.1.
Fonts: fewer, local, swapped
Fonts are the quiet cost on many Elementor builds. Each family and weight is another file, and Google Fonts adds a connection to another host. What I do:
- Limit the design to one or two families and only the weights actually used.
- Host the fonts on your own server. Elementor Pro's Custom Fonts feature lets you upload them, and it can be done with a font-hosting plugin too.
- Use
font-display: swapso text appears right away in a fallback font and swaps once the font has loaded. - Preload the one or two font files used above the fold.
Plugins, WooCommerce scripts and database cleanup
Audit plugins and add-ons
Install Query Monitor on a staging copy and look at which plugins add the most queries, slow hooks and HTTP calls. Then work through the list:
- Remove plugins you no longer use, rather than just deactivating them.
- Replace an add-on pack with native Elementor widgets if you only use two or three of its widgets.
- Where a plugin only needs to run on certain pages, use a per-page script manager (Asset CleanUp and Perfmatters are two commonly used options) to stop its CSS and JS loading everywhere else.
Every plugin is code you maintain and a security surface, so fewer is better even beyond speed.
WooCommerce specifics
WooCommerce on Elementor needs extra care. Three places to look:
- Cart fragments. The
wc-cart-fragmentsscript makes an AJAX request (?wc-ajax=get_refreshed_fragments) to update the mini cart. If your header has no mini cart or you do not need live updates on every page, disabling it removes a request from every page load. Test the add-to-cart flow after. - Script scoping. Payment gateway, review and slider scripts do not need to load on your blog posts or About page. Limit them to cart, checkout and product pages.
- Checkout and cart pages. Never cache these, and be careful with aggressive minification or delayed JavaScript here, because a broken checkout costs real orders. Test with a real test order.
Database cleanup
A tidy database helps most on large or old sites. Limit post revisions, because Elementor sites accumulate a lot of them. You can cap them with define( 'WP_POST_REVISIONS', 5 ); in wp-config.php. Clear expired transients, remove orphaned data from deleted plugins, and check for oversized autoloaded options, which WordPress loads on every request. Always take a backup before running a cleanup.
A testing process that does not mislead you
Test the same page the same way each time. I check PageSpeed Insights (mobile), then GTmetrix for the waterfall view, and Query Monitor on the server side. Run each test a few times and record the typical result, not the best one. Make one change at a time, and look at your actual pages on a phone after each change, not just the score. For the broader picture of how lab and field data differ, my post on a low mobile PageSpeed score applies equally well to WordPress.
Mobile-first habits, and what not to do
Design habits that keep a site fast
- Design mobile-first. Decide what a phone visitor needs and add to it for desktop, not the reverse.
- Use fewer sections. Five purposeful sections beat twelve decorative ones.
- Skip heavy sliders. One strong image with a clear call to action usually converts better and costs less.
- No autoplay video above the fold. A video background is likely to become your LCP element and delays everything beneath it.
- Go easy on entrance animations, which delay visible content.
What not to do
- Do not install three caching plugins. They fight each other, double-compress files and cause stale pages that are hard to debug.
- Do not switch on minify, combine and delay-JS everywhere at once. Enable one option at a time, test the layout, forms, menus and checkout, then continue. "Minify everything" is how sliders and menus stop working.
- Do not chase a perfect score at the cost of a working site. A page that passes Core Web Vitals and converts is the goal.
- Do not skip the backup or staging copy. Performance changes are exactly the kind that can break things.
When to bring in help
If you have worked through the settings above and the site is still slow, the cause is usually a specific plugin conflict, a hosting limit or a heavy page structure that needs rebuilding. That is where my WordPress development and website speed optimization services come in. I start with an audit and test every change on a staging copy before it reaches your live site. Send me your site URL and I will tell you where the time is going.
FAQ
Why is my Elementor website so slow?
Usually it is a combination of a large DOM from nested containers, many widgets and add-on plugins loading assets everywhere, unoptimized images and fonts, and weak hosting or no page caching. Measuring each area separately shows which matters most.
Which Elementor settings improve speed?
Check Elementor > Settings > Features for Optimized DOM Output, Improved Asset Loading, Improved CSS Loading, Lazy Load Background Images and Inline Font Icons. Availability depends on your version, as some are now default. Regenerate CSS and test pages after changing them.
Do I need a caching plugin for Elementor?
Yes, page caching is one of the biggest wins, either through your host or a single caching plugin. Use only one, configure it carefully, and exclude cart and checkout pages on WooCommerce sites.
Should I lazy-load every image on an Elementor page?
No. Lazy-load images below the fold, but leave the main above-the-fold image, usually the LCP element, unlazy so it loads early. Lazy-loading the hero image is a common cause of a poor LCP.
