When the block editor shows Publishing failed or Updating failed. The response is not a valid JSON response, it could not confirm the result of its request to WordPress. The response may have been blocked, redirected, or returned in an unexpected format. Copy your unsaved text somewhere safe, then check the Posts list and public page before retrying; the change may already have saved.
Work this checklist in order. Stop when the editor saves cleanly. If one covered WordPress issue is clearly to blame and you want help, use the $99 one-time fix after you can authorize access.
Confirm what failed
- Note whether the failure happens on Publish, Update, Save draft, or autosave.
- Try saving a new draft containing only a paragraph of plain text, with no embeds or custom HTML. If it saves, the problem may be specific to the original content.
- Open the site homepage and
/wp-admin in a private window. A site that will not load at all needs the site down checklist first.
- If the screen says there has been a critical error, use the critical error checklist instead of this article.
Check permalinks and the REST API
- In Settings → Permalinks, click Save Changes without editing anything. That rewrites the permalink rules many hosts expect.
- Open
/wp-json/ on your site. It normally shows the REST API index as JSON. If your site uses plain permalinks, try /?rest_route=/ instead. A working index does not prove the editor's save request works.
- If
/wp-json/ fails, ask the host whether the web server is blocking that path, returning HTML error pages, or redirecting API calls away from WordPress.
If the API index is reachable but saving still fails, open Tools → Site Health and check for REST API warnings. Ask your host to inspect the failed editor request for routing, authentication, or firewall errors.
Rule out security, firewall, and caching layers
- Check the security plugin or host firewall logs for a blocked editor request. Test a suspected plugin on staging when possible. If a live test requires disabling protection, agree a short test window with your host and restore protection immediately afterward.
- Ask your host or cache provider to check that editor save requests and private REST responses are not served from page or CDN cache. If HTML is being returned where JSON is expected, fix the cache rule and clear the affected cache.
- If you use a host WAF or bot filter, ask whether it is challenging or blocking logged-in admin requests to
/wp-json/.
- Turn off browser extensions for the test, especially ad blockers and script blockers on your own admin domain.
Disabling security tools lowers protection while you test. Use a short window, keep a backup, and turn protection back on when you finish.
Check mixed content, SSL, and URL mismatches
- In Settings → General, check that WordPress Address and Site Address match your site's intended setup. They can have different paths when WordPress is installed in its own directory. Do not change either URL just to make them match; ask your host if you suspect a wrong domain or HTTPS setting.
- Load Admin over HTTPS end to end. A certificate warning or mixed-content block can stop the editor’s save request.
- After a migration, confirm the database URLs match the live domain. A leftover staging URL often breaks Admin AJAX and REST calls.
Isolate plugins and the theme safely
Use a staging copy when possible. Before changing the live site, take a backup and record which plugins are active. Disabling plugins can stop checkout, forms, bookings, and other features.
- If a security, cache, or “optimize” plugin is the last change, deactivate that plugin first and retry publish.
- If you need to test all regular plugins, temporarily rename
wp-content/plugins to plugins-off, then visit /wp-admin/plugins.php so WordPress marks the missing plugins inactive. Restore the folder name and reactivate the previously active plugins one at a time, checking publish after each. This does not disable must-use plugins or all caching components.
- To test the theme, first confirm a default WordPress theme is installed. Then temporarily switch to that default theme, or rename the active theme’s folder under
wp-content/themes and retest. If you are unsure how to restore it, ask your host for help.
If a plugin update started the failures, see also plugin update broke WordPress site.
When a $99 one-time fix fits
Request the $99 one-time WordPress fix if you want help with one clearly defined issue on one WordPress site. Describe the exact editor message, when it started, and the last change you made. We confirm the scope before work begins. Send credentials only through the private access link provided after your request is accepted.
Full rebuilds, new custom features, full migrations, and multiple unrelated issues are outside this offer.
Related checks
If the checks do not identify the cause, send your host the editor message, the time it started, and whether /wp-json/ returns JSON. Suspected compromise needs a security investigation as well as restoring publish.