Elementor is slowing your site: here is how much and what to do
10 min read · 15-Aug-2024
villagehosting.in team
15 August 2024
Elementor is easy to use and slow by default. But the gap between a slow Elementor site and a fast one is mostly configuration. Here is how to close that gap — and when to accept that a rebuild is the only answer.
Cloudflare Rocket Loader must be OFF if using Elementor forms
Elementor's form submission and popup triggers rely on JavaScript loading in a specific order. Cloudflare's Rocket Loader defers and reorders JS execution, breaking Elementor forms silently — the page looks fine but form submissions stop working. Always disable Rocket Loader for sites using Elementor Pro forms.
How much does Elementor actually add?
A WordPress site with a minimal theme (like GeneratePress) and no page builder loads approximately:
- Page weight: 200–400 KB
- HTTP requests: 8–15
- Time to Fully Loaded: 1–2 seconds
The same page built with Elementor (with a typical widget set):
- Page weight: 800 KB – 1.5 MB
- HTTP requests: 25–50
- Time to Fully Loaded: 3–6 seconds
Elementor adds:
elementor-frontend.min.css— 450+ KB uncompressed CSSelementor-frontend.min.js— 350+ KB uncompressed JS- Additional JS for each widget type used (animation library, icon library, etc.)
- Custom CSS stored in the database (different from the main stylesheet)
This is the "Elementor tax". It exists on every page, even simple ones.
Why Elementor is slow by default
1. Global CSS loaded everywhere: Elementor generates one large CSS file with rules for all possible widgets, even widgets you never used on that page.
2. Render-blocking scripts: Elementor's JS loads synchronously by default, blocking page rendering until the script downloads and executes.
3. Font Awesome loaded by default: 400 KB of icon font even if you only use 2 icons.
4. Google Fonts via multiple requests: Each font family can be a separate HTTP request.
5. Elementor Hello theme bloat: The Elementor Hello Theme is minimal, but many users start with a theme that adds its own CSS and JS on top of Elementor.
Fix 1: Enable Elementor's performance improvements
Elementor → Settings → Performance:
Improved Asset Loading: Loads CSS and JS only for elements used on each specific page. Can reduce page weight by 30–50%. ✅ Turn ON.
Inline Font Icons: Loads only the icons you use instead of the full icon library. ✅ Turn ON.
CSS Print Method: External File: Generates a static CSS file instead of inline CSS. Better for caching. ✅ Set to "External File".
Google Fonts: If you use Google Fonts through Elementor, enable "Disable Google Fonts" and self-host them instead (Omgf plugin or host manually).
Fix 2: Lazy load above-the-fold images
Elementor respects the WordPress loading="lazy" attribute for images. Ensure your caching plugin isn't removing it.
For Elementor Pro gallery and image carousel widgets, lazy loading may need to be enabled in each widget's settings.
Fix 3: Defer Elementor JavaScript
Add to your child theme's functions.php:
add_filter( 'script_loader_tag', function( $tag, $handle ) {
$defer_scripts = [
'elementor-frontend',
'elementor-waypoints',
'elementor-dialog',
];
if ( in_array( $handle, $defer_scripts ) ) {
return str_replace( ' src', ' defer src', $tag );
}
return $tag;
}, 10, 2 );
Warning: Test this carefully. Deferred scripts can break animations, accordions, and tabs on specific pages. Test every page type after applying.
Fix 4: Remove Font Awesome if not used
If you're using Elementor's default icons but not Font Awesome specifically:
Elementor → Settings → Advanced → Load Font Awesome 4 Support: Disable.
Or better: use SVG icons instead of icon fonts. SVGs are smaller and don't block rendering.
Fix 5: Consolidate and minify CSS/JS
Use LiteSpeed Cache (on LiteSpeed servers) or WP Rocket (paid, ~₹2,500/year):
- Enable CSS minification and concatenation
- Enable JS minification
- Enable async/defer for JS where safe
- Enable lazy loading for images and iframes
After enabling concatenation, test every page — Elementor's JS sometimes conflicts with concatenation.
Fix 6: Use a CDN for Elementor assets
Elementor's CSS and JS files are large and cached well. Serve them from a CDN:
With LiteSpeed Cache → CDN:
- Enable CDN
- Set your CDN URL (BunnyCDN, Cloudflare)
- All static assets including Elementor files are served from the CDN
This is particularly valuable for Indian visitors — Cloudflare's Mumbai PoP or BunnyCDN's Mumbai server delivers assets from local servers instead of your origin.
The Elementor speed floor
Even with all optimisations applied, Elementor has a performance floor. A well-optimised Elementor site typically achieves:
- LCP: 2.5–3.5 seconds on desktop
- LCP: 3.5–5 seconds on mobile
A site rebuilt with the native block editor (Gutenberg) can achieve:
- LCP: 1.5–2.5 seconds on desktop
- LCP: 2–3 seconds on mobile
For landing pages where conversion rate depends on speed, the difference is meaningful.
When to consider switching away from Elementor
Stay with Elementor if:
- Your current PageSpeed score is above 70 and you're happy with it
- Your editors rely on Elementor's visual interface
- The site is performing well for your business goals
Consider switching to blocks if:
- You're starting a new site
- PageSpeed score is below 50 despite optimisations
- The site is primarily content (blog, portfolio) without complex layouts
- A developer is handling the build (not non-technical editors)
Consider a complete rebuild if:
- Elementor site can't pass 50 on PageSpeed after all optimisations
- The site is a high-traffic e-commerce store where every second costs money
- You're ready to rebuild rather than continue patching
Most Indian SMB sites built by agencies don't need the rebuild — they need the configuration fixes in this guide. Apply them in order, measure after each step, and stop when you've hit your performance target.
Measuring your improvements
Before and after each change, test with:
- Google PageSpeed Insights: paste your URL — measure LCP, TBT, and CLS scores
- GTmetrix: shows waterfall chart — identify which requests are still large
- Chrome DevTools → Network tab with "Slow 3G" throttling — simulates Indian 4G conditions
Target: LCP under 3 seconds on mobile at Slow 4G (GTmetrix Lighthouse score above 75).