Skip to main content

Elementor Speed Optimization: Reduce Load Time

WordPress · 28.01.2025 · 4 min read
Illustration for “Elementor Speed Optimization: Reduce Load Time”

Why Elementor Slows a Site Down

Elementor generates a large DOM, loads dozens of CSS/JS files and by default pulls in Google Fonts through external requests. All of this increases load time.

Elementor → Performance Settings

SettingRecommendationImpact
Google FontsDisable / System Fonts-200–500 ms
Font AwesomeLoad only used icons-80 KB
CSS Print MethodInternal Embedding-1 HTTP request
Improved Asset LoadingEnable-30–50%
Lazy Load Background ImagesEnable+LCP score

Disabling Google Fonts in Elementor

// functions.php — fully disable Google Fonts
add_filter('elementor/frontend/print_google_fonts', '__return_false');
add_filter('elementor/fonts/print_google_fonts', '__return_false');
💡 Use the system fonts -apple-system, BlinkMacSystemFont, Segoe UI — they load instantly with no HTTP requests.

Reducing the DOM Size

Elementor adds wrapper divs around every widget. To reduce the DOM:

  • Elementor Pro: enable Improved Asset Loading
  • Use Container instead of Section/Column (less div nesting)
  • Remove unused widgets via Elementor → Tools → Regenerate Files
⚠️ After changing the Performance settings, always clear the Elementor cache and the page cache.

Diagnosing Elementor errors

Elementor is a heavy visual editor, and some of its failures come specifically from generating CSS and JS on the fly, not from the content itself.

Error text or symptomCauseWhat to do
There has been a critical error on this website after an Elementor updateAn Elementor Pro version is incompatible with Elementor core or the themeRoll back the plugin version and check wp-content/debug.log
White screen in the editor, while the site works fine on the front endA JS conflict in the admin panel, usually with another plugin adding its own scriptsOpen the editor with ?safe_mode=1 and disable plugins one by one
500 error during Regenerate CSSNo write permission to the wp-content/uploads/elementor directorySet 755 permissions on the directories and 644 on the cache files
Layout "jumps" after Lazy Load Background ImagesThe background container has no minimum height, so the browser cannot reserve spaceSet a min-height on the container before the background image loads

General page-load speedup principles that also apply to Elementor are covered in the article on WordPress speed.

When optimizing Elementor will not help

  • Landing pages with dozens of widgets on one screen — the DOM will still be large; it makes more sense to hand-build static HTML/CSS
  • Cheap shared hosting with a single CPU core — rendering the editor itself in the admin is heavy regardless of front-end settings
  • Themes deeply tied to the Elementor Theme Builder — disabling part of the Performance features can break the header and footer templates
  • Projects with frequent new blocks added — Regenerate Files has to be run again after every significant change; it is a manual operation
  • Sites where screen reader accessibility matters — Elementor's wrapper divs around every widget make markup semantics harder than hand-coded layout

It is also worth checking which PHP version is running under the hood: Elementor's own rendering benefits noticeably from PHP 8.2 with OPcache enabled, and as an alternative to heavy page cache plugins you can consider LiteSpeed Cache if the hosting runs on LiteSpeed.

Caching Elementor's generated files

The CSS files Elementor generates on the fly should be served with a long cache lifetime at the web server level:

location ~* ^/wp-content/uploads/elementor/ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}
💡 After every Regenerate Files the file name changes because of the version in the path, so a long cache is safe: the browser will never see stale CSS.

How to check that Elementor is no longer slow

  • The Coverage tab in DevTools shows the percentage of unused CSS and JS on the page
  • PageSpeed Insights: the number of render-blocking resources should drop after Improved Asset Loading
  • The size of the wp-content/uploads/elementor directory before and after Regenerate Files — a sharp jump means junk is piling up
  • The number of HTTP requests in the Network tab — a basic Elementor page should not exceed 40–50 requests
  • Time to Interactive in Lighthouse — Elementor's heavy JS often keeps the page "non-interactive" for more than 3 seconds on a mid-range mobile device

Compare metrics on the same page before and after changes, not across different pages of the site — different Elementor templates can vary in weight several times over even within a single site.

curl -sI https://example.com/wp-content/uploads/elementor/css/post-123.css \
  | grep -i cache-control
Was this article helpful?
← Back to Knowledge Base Ask Support