Divi fix

Why Is My Divi Site So Slow? Static CSS, Modules and the Fix

Divi is rarely slow for one reason. It is slow because a page asks a phone to lay out several hundred modules, wait on a slider and read styles Divi could have trimmed if its performance options were on. Each of those has a specific fix, and most of them live in screens you already have.

pagespeed · divi home page · mobile
Mobile load, by cause
What the home page is carrying
Slow LCP
Fullwidth slider hero86%
Builder CSS printed inline67%
Marketplace module pack58%
Phone-hidden duplicates49%
Full framework scripts41%
Icon font and Google Fonts30%
Illustrative — dynamic CSS off and no static file in et-cachesettings first

What you are seeing

  • The hero slider is the last thing to settle on a phone
  • PageSpeed Insights warns about unused CSS and an excessive DOM size
  • Desktop feels acceptable while the mobile score sits in the red
  • The page source shows a long block of inline styles on every load
  • A caching plugin is active and the first visit is still slow

Why it happens on Divi

Most common first.

  1. 1

    Module count, hidden duplicates included

    Every Divi module arrives wrapped in a section, a row and a column, so a text block per paragraph multiplies quickly. The quiet multiplier is the Visibility setting. A section disabled on phones is hidden with CSS, which means the phone still downloads it, along with the phone-only copy built to replace it.

  2. 2

    A hero built from Divi's heaviest modules

    Fullwidth sliders, video backgrounds and parallax sections sit at the top of the page, exactly where the browser is judged on how soon the main content paints. A slider leans on JavaScript before it settles: five slides, and the visitor leaves during the first. Section background images are CSS backgrounds, so they miss the responsive sizes WordPress gives an ordinary image unless someone sets a phone background by hand.

  3. 3

    Dynamic loading switched off, or defeated by a child theme

    Divi's Performance tab holds the options that keep a page from loading the whole framework: Dynamic Module Framework, Dynamic CSS, Dynamic Icons and Dynamic JavaScript Libraries. With them off, every page carries code for modules it never uses. An older child theme that enqueues the parent stylesheet by hand can have the same effect, loading the full stylesheet on top of the trimmed one.

  4. 4

    Static CSS that Divi cannot write

    Divi saves each page's builder styles to a file in wp-content/et-cache so browsers can cache it. If Static CSS File Generation is disabled, or that folder stopped being writable after a host move, the same styles are printed into the page on every visit instead. Nothing looks broken. The page is simply heavier each time.

  5. 5

    Marketplace extensions that load on every page

    Third-party module packs, from the Divi Marketplace and elsewhere, add their own stylesheets and scripts. Many load them site-wide whether or not the page uses one of their modules, and Divi's dynamic options have no say over another vendor's files.

How to fix it, in order

Least invasive first. Stop at the step that fixes it.

  1. 1

    Measure on mobile and make a staging copy

    Run the home page through PageSpeed Insights on mobile and write down the Largest Contentful Paint element and the DOM size. Then clone the site to staging. Several of the changes below can alter how a page looks, and you want to find that out in private.

  2. 2

    Turn Divi's dynamic options on, one at a time

    Go to Divi, Theme Options, General, Performance. Enable Dynamic Module Framework, Dynamic CSS, Dynamic Icons and Dynamic JavaScript Libraries, checking your key pages after each. Then try Critical CSS and the jQuery deferral option, which are the two most likely to disturb a third-party script.

  3. 3

    Give each optimization one owner

    If a caching plugin also generates critical CSS, removes unused CSS or delays JavaScript, decide which tool does that job and switch it off in the other. Two tools rewriting the same stylesheet is how a speed fix becomes a layout bug.

  4. 4

    Confirm static CSS files are being written

    Open Divi, Theme Options, Builder, Advanced. Static CSS File Generation should be enabled; press Clear beside it. Reload a page, view its source and look for a stylesheet served from the et-cache folder. If there is none, ask the host to check that wp-content/et-cache is writable.

  5. 5

    Rebuild the hero as a still image

    Replace the slider or video background with one headline, one image and one button. Upload the image at the size it displays, and give phones a smaller file using the phone tab in the background settings. This one change often moves the mobile number more than any option on the Performance tab.

  6. 6

    Cut modules, then audit extensions

    Open the Layers panel in the Visual Builder and work down the page: merge neighboring text modules, replace Divider spacers with padding and delete device-specific duplicates. On staging, deactivate each third-party Divi extension in turn and re-test. What is left after that is server and cache territory, which our WordPress speed guide covers.

Keep it from coming back

  • Recheck the Performance tab after any troubleshooting session; options turned off to test something tend to stay off
  • Style with global presets instead of per-module settings, so new pages add content and not CSS
  • Clear static CSS after every Divi update and every host move
  • Before installing a module pack, check whether a native Divi module already does the job

The permanent fix

A faster Next.js build, with a CMS made for your business

If the home page still fails Core Web Vitals on phones after the options are on and the modules are cut, what remains is the builder's own markup and scripts, and no setting removes those. Rebuilt on Next.js, each page leaves the server as a static file with none of Divi's module scripts attached, and editing happens in a custom CMS shaped around the handful of things you actually change. That is a decision for after the cleanup, with the before and after numbers in hand.

On Divi todayOn Next.js with a custom CMS
What you keep updatedWordPress, the theme, its builder and every bundled plugin, all in stepNothing on a schedule. There is no theme or plugin stack to fall out of step
How a page is servedBuilt from the database on each visit, through the theme and its builderBuilt ahead of time and served as finished files from servers near the visitor
How you edit itA general-purpose builder with every option the theme shipsA CMS built around what your business actually changes: services, prices, photos, posts
What can break itAn update to any one of those parts, or a license that lapsesA change someone makes on purpose, tested before it goes live

Your content, your addresses and your rankings come with you: every page is moved, every old address is redirected, and you get a login to an editor that only shows what you need. A repair is still the right call for many sites, and we will say so when it is.

Free · No obligation

Want this fixed on your Divi site?

Tell us what you are seeing. We look at the site, tell you plainly what is wrong and what it takes, and quote a fixed price before any work starts.

Which of these sounds like you? (pick any)

Frequently asked

For most sites, all of the dynamic ones: Dynamic Module Framework, Dynamic CSS, Dynamic Icons and Dynamic JavaScript Libraries. Critical CSS and deferred jQuery help too, but test them page by page because older plugins sometimes expect jQuery to load early. Anything you disable should have a known reason written down.

Critical CSS loads the styles for the top of the page first and the rest afterward. If the split lands in the wrong place, part of the page appears unstyled for a moment. Raise the Critical Threshold Height setting on the same Performance tab, and make sure a caching plugin is not generating its own critical CSS on top.

There is no official limit. The practical test is the DOM size warning in PageSpeed Insights and how the page feels on a mid-range phone. If the Layers panel takes real scrolling to get through, start merging: one text module can hold a heading and three paragraphs that were built as four modules.

It fixes the wait before the page starts to arrive, which matters if server response is the slow part. It does nothing for the weight of the page once it lands. Check both readings before paying for a bigger plan; the WordPress speed guide on this site explains how to tell them apart.

Keep reading

CallGet a quote