TL;DR
If your WordPress website suddenly becomes a blank white screen, don’t panic.
The problem is usually one of these:
- A plugin conflict
- A theme conflict
- A PHP Fatal Error (
E_ERROR) - A syntax mistake in code
- Memory exhaustion
- A failed update
- A JavaScript crash in Gutenberg
- A server cache refusing to forget the mistake
- A corrupted WordPress core file
The fastest way to find the cause is:
- Enable
WP_DEBUG. - Check
/wp-content/debug.log. - Check your server
error_log. - Disable plugins.
- Switch themes.
- Clear OPcache and server cache.
- Use Recovery Mode if WordPress offers it.
- Use WP-CLI if your dashboard is dead.
After more than 12 years running WPX and helping WordPress websites survive everything from bad plugin updates to developer experiments that should probably be investigated by international authorities, I’ve learned that the White Screen of Death is rarely mysterious like so many other annoying server and http and https error messages.
It’s usually WordPress doing what WordPress does best.
Turning a perfectly functional website into a digital crime scene.
WHAT IS THE WORDPRESS WHITE SCREEN OF DEATH?
The White Screen of Death, often called WSOD, happens when WordPress fails so completely that it can’t even display an error message.
You visit your site.
You expect a website.
You get a blank white page.
No text.
No warning.
No explanation.
Nothing.
It’s the digital equivalent of walking into your house and discovering all the furniture has vanished but the electricity bill is still arriving.
Since WordPress powers a huge percentage of the internet, millions of website owners eventually experience WSOD.
Many of them discover it at 3:17am.
Because software enjoys drama.
WHY THE WHITE SCREEN OF DEATH MATTERS
A broken website isn’t just annoying.
It costs money.
Visitors leave.
Customers disappear.
Google eventually notices.
Revenue stops.
Leads vanish.
Trust evaporates.
At WPX, we’ve been hosting WordPress sites since 2013.
I’ve personally watched thousands of websites implode because of a single plugin update.
One tiny checkbox.
One innocent click.
One developer somewhere saying:
“We tested it locally.”
Famous last words.
THE WHITE SCREEN OF DEATH IS EVOLVING
Years ago, WordPress usually displayed a completely blank screen.
Modern WordPress often shows something slightly more informative.
You may now see:
“There has been a critical error on this website.”
Or:
“This site is experiencing technical difficulties.”
These messages were introduced through WordPress’s Fatal Error Protection system beginning in WordPress 5.2.
The goal was simple.
If WordPress is going to crash, maybe it should at least tell you that it crashed.
A revolutionary concept.
WHAT IS FATAL ERROR PROTECTION?
Fatal Error Protection is WordPress core functionality designed to intercept certain PHP Fatal Errors before they completely destroy the site.
Instead of showing a blank page, WordPress tries to show a friendlier error.
Think of it as putting a small bandage on a shark attack.
Helpful.
But limited.
WHAT IS RECOVERY MODE?
Recovery Mode is one of the best features WordPress has added in years.
When WordPress detects a fatal error, it may send an email to the site administrator.
That email contains a secure Recovery Mode link.
It looks something like:
wp-login.php?action=enter_recovery_mode
When clicked, WordPress allows you to log in while temporarily disabling the component causing the crash.
This lets you:
- Access wp-admin
- Disable broken plugins
- Fix themes
- Recover the website
Without Recovery Mode, many website owners would be forced directly into FTP, SFTP, SSH, prayer, or mild panic.
THE REAL CAUSE: PHP FATAL ERRORS
The vast majority of White Screen of Death cases originate from PHP Fatal Errors.
A PHP Fatal Error is represented as:
E_ERROR
When PHP encounters an error severe enough that execution cannot continue, everything stops immediately.
No further code runs.
No output is generated.
The site simply dies.
Imagine a rescue dog deciding it absolutely refuses to move another step.
Now imagine that dog weighs 65kg.
That’s roughly how PHP behaves during a fatal error.
THE MOST COMMON PHP FATAL ERROR CAUSES
| Cause | What Happens |
|---|---|
| Plugin conflict | Two plugins fight each other |
| Theme conflict | Theme code crashes |
| Missing file | PHP cannot load required code |
| Function redeclaration | Same function loaded twice |
| Memory exhaustion | PHP runs out of RAM |
| Parse error | Invalid code syntax |
| Corrupted update | Broken files loaded |
| Version mismatch | Plugin incompatible with PHP |
Every one of these can create a White Screen of Death.
PARSE ERRORS: THE $500,000 SEMICOLON
One of the ‘funniest’ causes of WSOD is the Parse Error.
A Parse Error happens when PHP cannot understand your code.
For example:
echo "Hello World"
Notice anything missing?
The semicolon.
That tiny character can bring down an entire business website.
A billion-dollar server.
Thousands of visitors.
An ecommerce store.
Destroyed by punctuation.
Human civilization really is astonishing.
OTHER COMMON SYNTAX ERRORS
Common offenders include:
- Missing semicolons (
;) - Missing curly braces (
}) - Missing quotation marks
- Incorrect array syntax
- Broken
functions.phpedits - Failed custom code snippets
Most site owners discover this immediately after saying:
“I’ll just make one quick change.”
The phrase responsible for more internet outages than lightning.
THE DANGEROUS FUNCTIONS.PHP FILE
If there were a Most Wanted list for WordPress files, functions.php would rank near the top.
Many White Screen of Death incidents start there.
Someone copies code from a forum.
Or ChatGPT.
Or Stack Overflow.
Or a YouTube video created by a man recording inside his car while wearing sunglasses.
Then the site dies.
Always check recent edits to:
wp-content/themes/your-theme/functions.php
before assuming anything more complicated is happening.
MEMORY EXHAUSTION: WHEN WORDPRESS EATS EVERYTHING
Another common cause is memory exhaustion.
WordPress loads:
- Themes
- Plugins
- Images
- Database queries
- JavaScript
- CSS
- Widgets
- Tracking scripts
- Marketing tools
- Analytics tools
- More plugins
Then somebody installs another plugin.
Because apparently 43 wasn’t enough.
Eventually PHP reaches its memory limit.
Then everything stops.
WHAT IS WP_MEMORY_LIMIT?
WordPress uses a configuration constant called:
WP_MEMORY_LIMIT
Often you’ll find it inside wp-config.php.
Example:
define('WP_MEMORY_LIMIT', '256M');
This tells WordPress how much memory it can consume.
Many hosts still default to lower values.
For busy websites, increasing memory may solve WSOD instantly.
Some server environments also use:
ini_set('memory_limit','256M');
This changes the PHP memory limit directly.
Understanding the difference matters because WordPress memory settings and PHP memory settings are not always the same thing.
And confusion is one of WordPress’s favorite hobbies.
HOW TO USE WP_DEBUG TO FIND THE REAL PROBLEM
Most website owners start troubleshooting the White Screen of Death by guessing.
They disable random plugins.
They clear random caches.
They sacrifice random chickens to random internet gods.
A better approach is to collect evidence.
WordPress includes a built-in debugging system called:
WP_DEBUG
This tells WordPress to stop hiding errors.
To enable it, open:
wp-config.php
Then find:
define('WP_DEBUG', false);
Change it to:
define('WP_DEBUG', true);
Suddenly WordPress becomes much more talkative.
Sometimes painfully so.
WP_DEBUG_LOG VS WP_DEBUG_DISPLAY
These two settings are often confused.
They do completely different jobs.
| Setting | Purpose |
|---|---|
| WP_DEBUG_LOG | Saves errors to a file |
| WP_DEBUG_DISPLAY | Shows errors on screen |
Recommended configuration:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Why?
Because displaying PHP errors publicly is like hanging your house keys outside with a note saying “Please be respectful.”
The safer option is writing errors to a log file.
WHERE IS THE DEBUG LOG?
When enabled, WordPress creates:
/wp-content/debug.log
This file often reveals the exact cause of the crash.
Examples include:
- Missing functions
- Plugin conflicts
- Theme failures
- Database problems
- Memory exhaustion
- PHP fatal errors
Instead of guessing, you’re now reading the crime scene report.
A useful improvement.
DON’T FORGET THE SERVER ERROR LOG
Many guides stop at WordPress debugging.
That is a mistake.
WordPress logs are helpful.
Server logs are often better.
Look for:
error_log
Depending on the hosting setup, this may exist in:
- cPanel
- Hosting dashboard
- Nginx logs
- Apache logs
- SSH access
Server logs often capture failures before WordPress even gets a chance to complain.
Think of WordPress logs as a witness.
Think of server logs as CCTV footage.
APACHE AND NGINX DON’T CARE ABOUT YOUR FEELINGS
Your web server doesn’t care that you spent six hours customizing your homepage.
If something breaks, Apache or Nginx simply records the failure and moves on.
Typical log entries include:
- PHP Fatal Error
- Segmentation fault
- Permission denied
- Missing include file
- Timeout exceeded
If the screen is white and WordPress logs show nothing, server logs are usually the next place to investigate.
GUTENBERG: THE MODERN BLANK SCREEN FACTORY
A surprising number of White Screen of Death cases now happen only inside the WordPress dashboard.
The front-end works.
The admin area doesn’t.
You click:
“Add New Post”
And suddenly the screen goes blank.
Congratulations.
You’ve entered the Gutenberg era.
WHY GUTENBERG CREATES WHITE SCREENS
The Gutenberg Block Editor relies heavily on:
- React
- JavaScript
- REST API requests
- Dynamic script loading
If any of those fail, the editor can become unusable.
The website may still function perfectly.
Only the dashboard crashes.
Which is somehow even more annoying.
CHECK THE BROWSER CONSOLE
Most users never open Developer Tools.
That’s unfortunate.
Because modern JavaScript errors frequently appear there.
Open:
- Chrome Developer Tools
- Edge Developer Tools
- Firefox Developer Tools
Then inspect:
Console
Look for messages like:
- Uncaught Error
- Uncaught TypeError
- Failed Fetch
- React Exception
- Script Loading Failure
If you see red text everywhere, congratulations.
You found the culprit.
THE CONCATENATE_SCRIPTS FIX
One of the least discussed WSOD fixes involves:
CONCATENATE_SCRIPTS
If WordPress admin scripts are loading incorrectly, add this to wp-config.php:
define('CONCATENATE_SCRIPTS', false);
This forces WordPress to load individual JavaScript files separately.
Why does this help?
Because sometimes script bundling fails.
And when script bundling fails, Gutenberg behaves like a shopping cart with one wheel missing.
Technically operational.
Practically useless.
OPCACHE: THE GHOST OF BAD CODE
Here’s a particularly evil scenario.
You fix the problem.
You upload the corrected file.
The site is still broken.
Why?
OPcache.
WHAT IS OPCACHE?
OPcache is a PHP acceleration system.
Instead of compiling PHP every time, PHP stores compiled versions in memory.
This improves performance.
Most of the time.
Sometimes OPcache continues serving broken code after you’ve already fixed it.
Which creates the illusion that nothing changed.
FLUSH OPCACHE AFTER MAJOR FIXES
If you recently repaired:
- Plugins
- Themes
- Core files
- Custom code
Always consider flushing OPcache.
Many stubborn White Screen of Death cases disappear immediately afterward.
VARNISH, EDGE CACHE, AND THE CURSED BLANK PAGE
Modern hosts use multiple caching layers.
Including:
- Varnish
- Edge Cache
- Reverse Proxy Cache
- CDN Cache
These systems improve speed.
But they occasionally preserve mistakes.
A blank page can be cached just as easily as a working page.
Which means:
You fix the site.
Visitors still see the White Screen of Death.
Because the cache proudly continues distributing yesterday’s disaster.
CLEAR ALL HOST-LEVEL CACHES
After fixing a WSOD:
- Purge CDN cache (called XDN at WPX)
- Purge Edge Cache
- Purge Varnish
- Clear object cache
- Flush OPcache
Otherwise you may spend hours troubleshooting a problem that no longer exists.
A surprisingly common hobby among WordPress users.
USING SFTP TO RECOVER A DEAD SITE
If wp-admin is inaccessible, SFTP becomes your friend.
SFTP stands for Secure File Transfer Protocol.
Unlike traditional FTP, SFTP encrypts everything.
Use it to:
- Rename plugins
- Replace theme files
- Upload clean backups
- Restore WordPress core files
If your dashboard is dead, SFTP often becomes the fastest recovery route.
SSH: THE NUCLEAR OPTION
SSH stands for Secure Shell.
It gives direct command-line access to the server.
Many advanced WordPress recoveries happen through SSH.
Because browsers are optional.
The server itself is not.
WP-CLI: THE FASTEST WAY TO FIX A WHITE SCREEN
WP-CLI is WordPress Command Line Interface.
Think of it as WordPress without all the clicking.
A few commands can solve problems instantly.
Deactivate all plugins:
wp plugin deactivate --all
Verify WordPress core files:
wp core verify-checksums
Update plugins:
wp plugin update --all
Check WordPress version:
wp core version
Many experienced administrators can diagnose a White Screen of Death faster through WP-CLI than through wp-admin.
Especially when wp-admin resembles a blank sheet of printer paper.
VERIFYING WORDPRESS CORE INTEGRITY
Sometimes the problem isn’t a plugin.
Sometimes WordPress itself becomes corrupted.
Common causes:
- Interrupted updates
- Failed uploads
- Malware
- Disk failures
- File permission problems
WordPress provides checksum verification.
Checksums are digital fingerprints.
If a file doesn’t match the official WordPress fingerprint, corruption is likely.
Run:
wp core verify-checksums
This compares every core file against official WordPress releases.
A remarkably useful feature that many site owners never discover.
Because reading documentation isn’t nearly as exciting as installing another plugin.
THEME INTEGRITY CHECKS
Themes can become corrupted too.
Especially after:
- Failed updates
- FTP interruptions
- Custom code edits
- Child theme mistakes
If a White Screen of Death began immediately after a theme change, always test with a default WordPress theme.
Examples:
- Twenty Twenty-Five
- Twenty Twenty-Six
If the site suddenly works, you’ve identified the culprit.
PHP VERSION MISMATCHES
One of the most common modern causes of WSOD involves PHP versions.
A plugin built for PHP 7.x may fail under PHP 8.x.
An outdated theme may trigger fatal errors.
A deprecated function may stop working.
The result?
A White Screen of Death.
Always verify compatibility after changing PHP versions.
THE COMPLETE WSOD TROUBLESHOOTING FLOW
| Step | Action |
|---|---|
| 1 | Check Recovery Mode email |
| 2 | Enable WP_DEBUG |
| 3 | Check debug.log |
| 4 | Check server error_log |
| 5 | Disable plugins |
| 6 | Switch themes |
| 7 | Increase memory |
| 8 | Check browser console |
| 9 | Disable CONCATENATE_SCRIPTS |
| 10 | Flush OPcache |
| 11 | Clear Varnish and edge cache |
| 12 | Verify WordPress checksums |
| 13 | Use WP-CLI if needed |
| 14 | Contact hosting support |
After twelve-plus years running WPX, I’ve learned that White Screen of Death incidents usually look terrifying for the first fifteen minutes.
Then the logs reveal something embarrassingly simple.
A plugin conflict.
A missing semicolon.
A failed update.
A theme function gone rogue.
Much like rescuing homeless dogs since 2016, the situation often appears catastrophic at first glance.
Then you slow down.
Gather evidence.
Stay calm.
And work methodically.
The difference is that frightened rescue dogs rarely take down ecommerce stores during Black Friday.
WordPress occasionally does.
Which is why understanding the White Screen of Death matters.
Not because it is mysterious.
But because it usually isn’t.
WORDPRESS WHITE SCREEN OF DEATH FAQ
Over the years at WPX, I’ve seen thousands of White Screen of Death cases.
The symptoms change.
The causes change.
The panic remains remarkably consistent.
Here are the most common situations.
WHY IS MY WORDPRESS ADMIN DASHBOARD WHITE BUT THE WEBSITE STILL WORKS?
This usually points to:
- Gutenberg problems
- JavaScript errors
- Admin plugin conflicts
- Browser caching issues
- Script loading failures
- REST API problems
Check:
- Browser Console
- Developer Tools
WP_DEBUG_LOGCONCATENATE_SCRIPTS
If visitors can still access your site but wp-admin is blank, the problem is often confined to the dashboard environment.
In other words, WordPress found a new and creative way to break only half of itself.
WHY IS THE FRONT-END WHITE BUT WP-ADMIN STILL WORKS?
This usually indicates:
- Theme errors
- Template errors
- Plugin conflicts
- Custom code failures
Recently edited:
functions.phpheader.phpfooter.php- Theme templates
Those files are common suspects.
Especially after someone says:
“I only changed one thing.”
WHY DID MY SITE BREAK AFTER A PLUGIN UPDATE?
Because plugins are software.
Software contains bugs.
Bugs occasionally escape.
Then they reproduce.
Then they cause support tickets.
Plugin updates frequently introduce:
- PHP incompatibilities
- Missing functions
- Fatal errors
- Database conflicts
- Theme conflicts
If the WSOD appeared immediately after an update, disable that plugin first.
The timing usually tells the story.
WHY DID MY SITE BREAK AFTER A THEME UPDATE?
Themes are not immune.
A theme update can introduce:
- Syntax errors
- Template errors
- Missing files
- PHP version conflicts
- JavaScript failures
Switch temporarily to a default WordPress theme.
If the problem disappears, you’ve found the culprit.
Detective work occasionally beats random guessing.
WHY DID MY SITE BREAK AFTER A PHP UPGRADE?
PHP upgrades often expose old code.
Code that worked perfectly in PHP 7.4 may explode under PHP 8.2 or PHP 8.3.
Common causes include:
- Deprecated functions
- Removed functions
- Strict type handling
- Legacy plugins
- Outdated themes
Always verify compatibility before major PHP upgrades.
The internet would be a calmer place if more people did this.
WHY DID MY SITE BREAK AFTER A WEBSITE MIGRATION?
Migration-related WSOD cases are extremely common.
Typical causes include:
| Cause | Why It Happens |
|---|---|
| Missing files | Transfer incomplete |
| Corrupted uploads | Interrupted migration |
| Wrong PHP version | New server differs |
| Broken database connection | Credentials incorrect |
| Cache conflicts | Old cache still active |
| File permissions | Incorrect ownership |
At WPX we’ve migrated hundreds of thousands of WordPress websites.
Migration failures are usually fixable.
The key is finding the first thing that broke.
Not the tenth symptom that appeared afterward.
WHY DID MY WOOCOMMERCE STORE GO WHITE?
WooCommerce sites are particularly vulnerable because they use:
- More plugins
- More database queries
- More memory
- More PHP execution
- More JavaScript
Translation:
More opportunities for disaster.
Common WooCommerce WSOD causes:
- Payment gateway conflicts
- Checkout extensions
- Inventory plugins
- Outdated WooCommerce versions
- Memory exhaustion
WooCommerce can be fantastic.
It can also resemble a race car assembled by 37 different mechanics who have never met each other.
CAN A HACKED WEBSITE CAUSE A WHITE SCREEN OF DEATH?
Absolutely.
Malware often:
- Corrupts files
- Injects code
- Breaks PHP execution
- Modifies core files
- Alters permissions
Signs include:
- Unexpected redirects
- Unknown admin users
- Strange files
- Obfuscated code
- Suspicious cron jobs
If malware is suspected, perform a full security scan immediately.
CAN FILE PERMISSIONS CAUSE WSOD?
Yes.
Incorrect file permissions can prevent PHP from loading files properly.
Typical recommendations:
| Item | Permission |
|---|---|
| Files | 644 |
| Directories | 755 |
Improper ownership settings can produce similar symptoms.
If WordPress cannot access files it needs, things deteriorate rapidly.
As software often does.
CAN DATABASE PROBLEMS CAUSE A WHITE SCREEN?
Sometimes.
Although database issues more commonly trigger:
“Error Establishing Database Connection”
Severe database corruption can occasionally contribute to WSOD behavior.
Check:
- Database credentials
- Database integrity
- Server logs
- MySQL status
WHITE SCREEN OF DEATH PREVENTION CHECKLIST
The easiest WSOD to fix is the one that never happens.
Recommended practices:
KEEP EVERYTHING UPDATED
Update:
- WordPress Core
- Themes
- Plugins
- PHP
Outdated software is responsible for countless preventable failures.
USE FEWER PLUGINS
Every plugin introduces:
- More code
- More complexity
- More compatibility risk
Many websites use 40+ plugins.
The all-time record among WPX customers is 200+ plugins.
Not ideal.
At that point you’re essentially building a tower from random Lego pieces manufactured by strangers.
Good luck.
USE STAGING BEFORE UPDATES
Always test updates on a staging environment first.
Never treat your live website as a laboratory.
Customers rarely enjoy participating in surprise experiments.
BACK UP DAILY
Backups transform disasters into inconveniences.
Without backups:
Panic.
With backups:
Restore.
The difference is enormous.
MONITOR ERROR LOGS
Most failures provide warning signs before catastrophe.
Review:
debug.logerror_log- PHP warnings
- PHP notices
Early detection prevents larger problems later.
CHOOSE QUALITY HOSTING
Hosting quality matters.
A lot.
Good hosting provides:
- Modern PHP versions
- Server monitoring
- OPcache management
- Expert support
- Fast troubleshooting
- Secure infrastructure
Bad hosting provides:
- Excuses
- Delays
- Generic replies
- Frustration
And occasionally a helpful suggestion to clear your browser cache for the seventeenth time.
WHEN SHOULD YOU CONTACT YOUR HOST?
Contact your hosting provider if:
- Logs show server errors
- Recovery attempts fail
- PHP crashes continue
- Resource limits are unclear
- File corruption is suspected
- Infrastructure issues appear involved
A competent support team can often identify the cause within minutes.
A less competent support team may ask whether you’ve tried restarting your computer.
Both experiences exist on today’s internet.
LESSONS FROM 12+ YEARS OF WPXHOSTING
Since founding WPX in 2013, I’ve seen nearly every type of WordPress disaster imaginable.
Plugin conflicts.
Theme conflicts.
Botched migrations.
PHP upgrades.
Failed updates.
Corrupted files.
Broken caches.
Developers editing production websites on Friday evenings.
That last one deserves its own warning label.
The interesting thing is that White Screen of Death incidents rarely involve a single giant catastrophe.
Most start with one small mistake.
One update.
One line of code.
One overlooked compatibility issue.
Then a chain reaction begins.
Much like operating a rescue dog shelter.
Since 2016, I’ve spent thousands of hours working with homeless dogs through EveryDogMatters.org.
A frightened dog and a broken website have something in common.
If you panic, things usually get worse.
If you stay calm and gather evidence, the solution eventually appears.
The logs tell a story.
The symptoms tell a story.
The timing tells a story.
Listen carefully enough and WordPress usually confesses.
FINAL THOUGHTS
The WordPress White Screen of Death looks terrifying because it provides almost no information.
But underneath the blank page is almost always a specific technical cause.
A plugin.
A theme.
A PHP Fatal Error.
A syntax mistake.
A memory problem.
A cache issue.
A corrupted file.
The goal is not guessing.
The goal is evidence.
Start with:
- Recovery Mode
WP_DEBUGWP_DEBUG_LOGerror_log- Browser Console
- WP-CLI
Work methodically.
Check the logs.
Eliminate variables.
And remember:
A blank white page is usually not the disease.
It’s merely WordPress’s wonderfully dramatic way of informing you that something else is broken.
Because displaying a useful error message immediately would apparently make life far too easy.
