You click Enable Visual Builder and get a loading animation that never ends, a white screen, or a pop-up headed “Divi Builder Timeout”. Another common version reads “Oops, it looks like the Divi Builder failed to load. Performing the following actions may help solve the problem.” followed by a list of suggestions. Sometimes the builder opens but saves hang, or the page looks fine in the builder and blank on the live site.
Under the hood, the Visual Builder is a large JavaScript application that runs on top of your real front-end page (the URL gains et_fb=1) and talks to WordPress through AJAX requests. It fails when the page underneath it errors, when a request takes too long or gets blocked, or when another script crashes it. This guide walks through Divi’s own tools (the Support Center, Safe Mode, System Status, static CSS and Theme Builder checks), the PHP limits Elegant Themes recommends, the Divi 4 versus Divi 5 differences that matter for troubleshooting, and child theme traps. Problems shared by every builder after an update are covered in our general page builder update guide.
What is happening
When the builder starts, it loads the page, fetches its settings and module definitions, and renders the layout inside the editing interface. Saving sends the whole layout back to the server in one large POST request. Each stage has its own failure mode:
| Symptom |
Most likely cause |
First check |
| “Divi Builder Timeout” pop-up |
The server took too long to answer a builder request: low PHP limits, a slow plugin, or a heavy page |
Step 2: System Status and PHP limits |
| “Oops, it looks like the Divi Builder failed to load” |
A script or request failed during start-up; Elegant Themes says this can have many causes and recommends Safe Mode first |
Step 1: Safe Mode |
| Endless loader or white builder screen |
A JavaScript error, stale browser data, or a blocked script |
Step 1 and the Advanced section |
| Builder works, live page blank or missing sections |
A Theme Builder template overriding the page, or stale generated CSS |
Steps 4 and 5 |
| Saves fail with a spinner or error |
A firewall blocking the large save request, or post_max_size too small |
Step 2 and the Advanced section |
Before you start
You need a WordPress administrator login. For server checks you need your hosting control panel or SSH. Take a full backup before changing theme files, clearing caches by hand, or migrating between Divi versions.
- Server commands run in an SSH terminal from the site folder that contains
wp-config.php. WP-CLI is wp on most hosts and wp-cli on some.
- Browser checks use developer tools: F12, or Cmd+Option+I on a Mac.
- File edits happen in your host’s File Manager or over SFTP. Copy the original file first.
Also note which Divi you run. Divi 5 became the official release on 26 February 2026, and Elegant Themes kept a Divi 4 update path for existing sites. Menu locations and some settings differ between the two, as explained below.
wp theme list --fields=name,status,version,update_version
This runs over SSH. It lists installed themes with the active one marked active (a child theme shows as active, with Divi as parent). A Divi version starting with 5 means Divi 5. A value in update_version means an update is waiting. If you use the Divi Builder plugin with another theme, run wp plugin list instead and look for divi-builder.
Step 1: Turn on Divi Safe Mode
Go to Divi, Support Center in the dashboard (older Divi 4 releases labeled it “Support”) and switch on Safe Mode. Safe Mode temporarily disables third-party plugins, your child theme and custom code for your user only. Visitors keep seeing the normal site, so it is safe on a live site.
Now reload the builder:
- The builder loads. Something Safe Mode switched off is the cause. Turn Safe Mode off and test plugins one at a time on a staging copy, then the child theme, then custom code in Theme Options and the Integration tab.
- It still fails. The cause is the server (limits, errors, a firewall), Divi itself, the browser, or a must-use plugin from your host. Continue to Step 2.
Before blaming the server, try the builder in a private window with browser extensions off. Ad blockers and script blockers can stop builder scripts, and the builder keeps data in the browser’s local storage, which can go stale after updates. In Chrome, open developer tools, choose Application, then Storage, and click Clear site data for your domain. This logs you out of that site in that browser and nothing else.
To bisect plugins quickly on staging:
wp plugin list --status=active --field=name
wp plugin deactivate PLUGIN_SLUG_ONE PLUGIN_SLUG_TWO
These run over SSH on staging. The first prints each active plugin’s folder name. PLUGIN_SLUG_ONE and PLUGIN_SLUG_TWO are names from that list; deactivate half, test, and narrow down. Good output from the second command is “Success: Deactivated 2 of 2 plugins.” If you use the Divi Builder plugin rather than the theme, never deactivate divi-builder during this test.
Step 2: Check System Status and the PHP limits Divi needs
Go to Divi, Support Center, System Status. It checks your server against Divi’s current recommendations and flags anything too low. Show Full Report expands every line, and Copy Full Report copies it for a support ticket. Fix every red or warning line before going further; System Status is the authority for your Divi version.
For reference, Elegant Themes’ help articles list these values:
| Setting |
Value given by Elegant Themes |
Effect when too low |
| PHP version |
7.4 or higher, 8.0 or later recommended |
Fatal errors or warnings in newer Divi code |
memory_limit |
At least 128M; 256M or more for sites with many plugins or heavy content |
Builder requests die with “Allowed memory size exhausted” |
max_execution_time |
120 seconds |
“Divi Builder Timeout” on large pages |
post_max_size and upload_max_filesize |
64M |
Saves of large layouts or imports fail |
max_input_vars |
1000 or more |
Theme Options or large forms save partially |
Elegant Themes describes these as minimums and says higher values generally perform better. Check the live values from the server:
wp eval 'foreach(["memory_limit","max_execution_time","post_max_size","max_input_vars"] as $k){echo $k," = ",ini_get($k),PHP_EOL;}'
This runs over SSH with no placeholders. It prints each setting and its value. Good output shows every value at or above the table. Note that WP-CLI can read a different PHP configuration from your web server, so if the numbers differ from System Status, trust System Status and change the values in your control panel’s PHP settings, or open a ticket if they are locked.
If you are still unsure, look in the PHP error log at the minute of the failure. A line containing “Allowed memory size of BYTES bytes exhausted” confirms memory; “Maximum execution time of SECONDS seconds exceeded” confirms the time limit. A timeout without any PHP error often means a proxy in front of PHP gave up first, which our 502 and 504 guide covers.
Step 3: Clear Divi’s generated CSS
If the builder works but the live page shows old styles, Divi’s generated CSS is stale. Divi 4 writes generated files to wp-content/et-cache/.
In Divi 4
Go to Divi, Theme Options, Builder, Advanced. Next to Static CSS File Generation there is a Clear button. Click it, save, then purge your page cache, server cache and CDN. Elegant Themes’ own announcement of this feature suggests temporarily disabling static CSS while you sort out child theme CSS priority problems, which makes it a useful test: if switching it off fixes the look, the issue is CSS order or caching, not your layout.
In Divi 5
Divi 5 reworked performance settings, and some Divi 4 options are reported to be absent. If you cannot find Static CSS File Generation, look under Divi, Theme Options, General, Performance and clear your caching layers instead.
By hand, on either version
du -sh wp-content/et-cache
find wp-content/et-cache -mindepth 1 -delete
These run over SSH. The first shows the folder size so you know it exists and what you are about to remove. The second deletes everything inside the folder but keeps the folder itself; -mindepth 1 is what protects the folder. These are generated files that Divi rebuilds on the next page view, so nothing is lost, but type the path exactly: running the same command on the wrong folder deletes real data. Good output is silence. “Permission denied” means the files belong to another user, often after a migration; ask your host to fix ownership.
Step 4: Check the Theme Builder and Divi 5 live-page problems
If the page looks right in the builder but blank or incomplete on the live site, open Divi, Theme Builder. Elegant Themes’ Divi 5 documentation names a Theme Builder template overriding the page as the most common cause. A template assigned to “All Pages” or a post type with an empty or broken Body area replaces your page content everywhere it applies.
- Check which templates apply to the affected page and look for “Use On” rules that are broader than intended.
- A template with a custom Body must include a Post Content module, or the page’s own content never shows.
- Disable the suspect template temporarily and reload the live page to confirm.
Step 5: Divi 4 versus Divi 5 when troubleshooting
Divi 5 is a rebuilt framework, and it changes where problems come from:
| Area |
Divi 4 |
Divi 5 |
| How layouts are stored |
Shortcodes such as [et_pb_section] in the post content |
A new block-style format; Elegant Themes describes Divi 5 as moving away from shortcodes |
| Third-party modules |
Run natively |
Modules not yet updated for Divi 5 run in a backward compatibility mode until their developers ship Divi 5 versions |
| Static CSS controls |
Builder, Advanced tab |
Reworked performance options |
| Moving between them |
Not applicable |
The Divi 5 Migrator converts content; Elegant Themes describes the move as one-way, with a restore option right after migration |
Practical consequences: if a page broke right after migrating, check whether it uses third-party modules running in compatibility mode, and test with those extensions updated. Run the compatibility check and take a full backup before running the Migrator, and do it on staging first. If you see raw text such as [et_pb_text] on a live page, Divi is not processing that content at all: the theme or Divi Builder plugin is inactive, or the content belongs to a format the active version is not rendering.
Step 6: Child theme pitfalls
Safe Mode switches off your child theme. If the builder works in Safe Mode and every plugin tests clean, the child theme is the prime suspect. The usual problems:
- Copied template files. A
header.php, footer.php or other template copied from an old Divi version keeps that old code forever, missing hooks newer Divi features depend on. Rename the copied file (for example to header.php.bak) on staging and retest.
- Wrong parent reference. The child’s
style.css header must name the parent folder exactly, including capital letters.
- PHP errors in functions.php. A snippet written for an older Divi or PHP version can throw errors that only appear in the builder’s AJAX requests.
- CSS that stopped applying. Divi’s generated styles may load after or with higher specificity than the child stylesheet, especially with static or inline CSS options on.
Check the parent reference from the server:
wp theme get CHILD_THEME_SLUG --fields=name,version,parent_theme,template
This runs over SSH. CHILD_THEME_SLUG is the child theme’s folder name from wp theme list. template should print the parent folder name exactly, such as Divi. Bad output is a lowercase divi on a case-sensitive server where the folder is Divi, or an empty value. Our child theme guide covers the general rules, including how to enqueue the parent stylesheet properly.
Advanced: watch the builder’s requests in the browser
When the error pop-up gives no detail, the browser does. Open developer tools before you start the builder, choose the Network tab, check Preserve log, then launch the builder or reproduce the failed save.
- Filter for
admin-ajax. Divi’s builder requests go there. Sort by status and click any request that is not 200.
- 403 with an HTML body mentioning a firewall, ModSecurity or a security plugin: the save was blocked, often because the large layout payload looked suspicious to a rule. Copy the rule ID or reference number for your host. Our 403 guide covers firewall false positives.
- 500: a PHP fatal error. Find the matching line in the error log by time.
- 413: the save was larger than the web server allows. That limit lives in the web server configuration (for Nginx,
client_max_body_size), not in PHP, so your host has to raise it.
- Pending for a long time, then failed: a timeout. Compare how long it waited with
max_execution_time and your host’s proxy timeout.
Then check the Console tab. A red “Uncaught TypeError” or “Uncaught SyntaxError” names the script that crashed. A path under /wp-content/plugins/PLUGIN_SLUG/ points at that plugin. Errors about “Unexpected token” while parsing JSON usually mean PHP printed a warning before the reply: set define( 'WP_DEBUG_DISPLAY', false ); in wp-config.php so warnings go to the log instead of the response.
Finally, compare the page’s performance options. Divi’s performance settings (under Divi, Theme Options, General, Performance) include options such as Critical CSS and deferring jQuery. If a layout shifts or flashes unstyled content after enabling them, switch them off one at a time, clear the generated CSS, and retest, especially if a caching plugin also optimizes CSS or JavaScript. Two tools optimizing the same files is a classic source of broken layouts.
When to contact your host or Elegant Themes
Contact your host when System Status shows limits you cannot change, the Network tab shows firewall block pages or 413 responses, or requests time out without PHP errors. Send:
- The UTC time of each failure and the page URL you were editing.
- The failing request URL, its status code, and the response body or block reference.
- The PHP error log lines for those minutes.
- The System Status report from Copy Full Report, and what changed recently.
If the server is healthy and Safe Mode still fails, contact Elegant Themes. Under Divi, Support Center, Remote Access you can grant their support team temporary access; the access token expires after four days, and you can switch it off sooner. Use our diagnostic tools to check headers and status codes from outside your browser, and if the whole site is down rather than just the builder, start at the Emergency Room.