You open a post or page to edit it, and instead of the usual block editor with your content and the block inserter, you get a blank white panel, a spinning loader that never finishes, or a message like "The editor has encountered an unexpected error." Sometimes it half-loads — the toolbar shows up but no blocks render. This is almost always a JavaScript failure, and it's fixable without touching your content.
Symptom: What a Broken Block Editor Looks Like
A few common variations, all with the same root cause family:
- Editor screen is completely white below the title field
- "Updating failed. The response is not a valid JSON response."
- Blocks show as "This block contains unexpected or invalid content" on every post
- The editor loads but clicking "+" to add a block does nothing
- Browser console shows errors mentioning
wp-blocks,wp-editor, or a 403/404 on a.jsfile
First move, every time: open your browser's DevTools (F12), go to the Console tab, and reload the edit screen. The actual error is sitting right there — guessing without it wastes time.
Cause 1: A Plugin Is Throwing a JavaScript Error
The block editor is a React app that loads dozens of small JS bundles. If one plugin enqueues broken or conflicting JS on the post edit screen, the whole editor can fail to mount — even if the error came from an unrelated plugin.
Confirm this is the cause by disabling plugins one at a time (or all at once, then re-enabling) via Plugins > Installed Plugins, or over SSH/WP-CLI if you're locked out of wp-admin:
wp plugin deactivate --all
wp plugin activate classic-editor
Reload the edit screen. If it loads clean, reactivate plugins one by one, checking the console after each, until you find the culprit. Security plugins, SEO plugins with custom Gutenberg panels, and page builders are the usual suspects.
Cause 2: REST API Is Blocked or Broken
The block editor talks to /wp-json/wp/v2/ constantly — loading post data, autosaving, fetching block types. If the REST API returns a 403, 404, or HTML instead of JSON, the editor can't initialize properly.
Test it directly:
curl -I https://yourdomain.com/wp-json/
You want a 200 OK. Common breakers:
| What you see | Likely cause |
|---|---|
| 403 Forbidden | Security plugin or ModSecurity rule blocking /wp-json/ |
| 404 Not Found | Permalinks broken — resave under Settings > Permalinks |
| HTML page instead of JSON | A PHP warning/notice is being printed before the JSON output, corrupting the response |
For the third case, check your PHP error log (in cPanel: Metrics > Errors, or ~/logs/ for the domain) right after reproducing the issue. A stray Warning: or Deprecated: line from a plugin printed before the JSON payload will break it every time.
Cause 3: Browser Cache or a Caching Plugin Serving Stale JS
If you or a teammate updated WordPress or a plugin recently, the browser (or a page cache in front of wp-admin) may still be serving an old, mismatched version of the editor's JavaScript bundles against the new PHP code. Version mismatches between wp-admin assets and core often produce exactly this "blank editor" symptom.
Fix:
- Hard refresh:
Ctrl+Shift+R(orCmd+Shift+Ron Mac) - Clear any caching plugin (WP Super Cache, LiteSpeed Cache, W3 Total Cache) — most exclude
/wp-admin/by default, but confirm it isn't misconfigured - If you're behind Cloudflare, purge cache and check that Development Mode or a page rule isn't caching admin URLs
Cause 4: PHP Memory Limit Too Low
The block editor loads a lot on one screen. On tight shared hosting plans with a low memory_limit, the editor can silently fail to fully initialize under load. Bump it in wp-config.php, above the "That's all, stop editing" line:
define( 'WP_MEMORY_LIMIT', '256M' );
In cPanel, also check MultiPHP INI Editor and raise memory_limit for the domain directly — the WordPress constant can't exceed what PHP itself allows.
Cause 5: A Corrupted or Outdated wp-includes / wp-admin Folder
Interrupted updates, a bad file restore, or an incomplete migration can leave core JS files missing or truncated. Re-upload core files without touching your content or plugins:
wp core download --skip-content --force
Or manually: download the matching WordPress version from wordpress.org, and overwrite only the wp-admin and wp-includes folders via File Manager or SFTP — never touch wp-content or wp-config.php during this step.
Quick Triage Order
If you don't want to read the causes above in detail, work through this order — it resolves the vast majority of cases fastest:
- Check the browser console for the actual error
- Hard refresh + clear any cache (browser, plugin, CDN)
- Test
/wp-json/returns 200 and clean JSON - Deactivate all plugins, confirm editor loads, reactivate one by one
- Re-upload WordPress core files if nothing above fixes it
Prevention
A few habits keep this from recurring:
- Update plugins and WordPress core on a staging copy first, especially anything that adds custom blocks or Gutenberg panels
- Keep
WP_DEBUG_LOGon for staging sites so PHP warnings surface in the log instead of silently breaking REST responses - Exclude
/wp-admin/and/wp-json/from any page-caching layer, including Cloudflare page rules - Set a sane
memory_limit(256M minimum for active sites) rather than relying on hosting defaults
Frequently Asked Questions
Should I just switch to the Classic Editor instead of fixing this?
It's a fine short-term workaround — installing the Classic Editor plugin gets you writing again immediately — but it doesn't fix the underlying JS or REST API issue, which can affect other things (block-based themes, the site editor, some plugin admin screens). Use it to unblock yourself, then still track down the real cause.
Why does the editor work for one user but not another on the same site?
This usually points to a browser extension (ad blockers and privacy extensions can block wp-json calls) or stale browser cache on that specific machine, rather than a server-side problem. Try the affected user in an incognito window with extensions disabled.
Could my security plugin or firewall be blocking the block editor?
Yes — this is one of the most common causes. Security plugins and server-level firewalls sometimes block requests to /wp-json/ as a precaution. Check your security plugin's firewall log, and if you're on a VPS with ModSecurity, check modsec_audit.log for a rule ID tied to the timestamp of the failed edit.
I see "This block contains unexpected or invalid content" — is that the same issue?
Related but different: that specific message means the editor loaded fine but couldn't parse the saved HTML of one block, usually after a plugin update changed how that block renders. Click "Attempt Block Recovery" on the affected block, or convert it to a Classic block/HTML block to preserve the content.
Does this affect the Full Site Editor (FSE) too?
Yes, if your theme is block-based (a "block theme"), the same JS and REST API dependencies apply to Appearance > Editor. All five causes above apply there as well — check the console first.
