The WordPress white screen of death is one of the most confusing errors a site owner can face. Instead of showing a clear error message, the site may load as a blank white page, a “There has been a critical error on this website” message, or a partially broken admin area.

In most cases, this happens because a fatal PHP error stops WordPress before it can finish loading. The cause is often a plugin conflict, theme issue, PHP memory limit problem, bad code change, failed update, missing file, incompatible PHP version, or malware-injected code.

The good news is that this problem is usually fixable once you find the error behind the blank screen.

This guide walks through the safest steps to fix the WordPress white screen of death without guessing.

What Is the WordPress White Screen of Death?

The white screen of death, often called WSOD, happens when WordPress fails silently and returns a blank page instead of loading the website.

You may see it on:

  • The entire website
  • Only the homepage
  • Only wp-admin
  • Only one page or post
  • Only after login
  • Only after updating a plugin, theme, or PHP version

On newer WordPress versions, you may see a critical error message instead of a completely blank page. WordPress introduced fatal error protection in WordPress 5.2 to help administrators recover from some plugin and theme fatal errors.

Common Causes of a WordPress White Screen

The most common causes include:

  • Plugin conflict or failed plugin update
  • Theme conflict or incompatible theme code
  • PHP memory exhaustion
  • Unsupported or incompatible PHP version
  • Syntax error in custom code
  • Corrupted WordPress core files
  • Broken .htaccess rules
  • Wrong file permissions or ownership
  • Database connection or query errors
  • Malware, backdoors, or injected code
  • Server-level errors after migration or restore

If the issue started right after a specific change, such as updating a plugin or switching PHP versions, start troubleshooting from that change first.

1. Check Your Email for WordPress Recovery Mode

Before editing files manually, check the administrator email address for a WordPress recovery mode email.

If WordPress detects a fatal plugin or theme error, it may send an email with a special recovery link. That link lets you access the dashboard in recovery mode and deactivate the plugin or theme causing the problem.

Search your inbox for subjects like:

  • “Your Site is Experiencing a Technical Issue”
  • “Recovery Mode”
  • “There has been a critical error on this website”

If you receive the recovery link, use it first. It is usually safer than manually renaming plugin or theme folders.

2. Enable WordPress Debug Logging

If there is no recovery email, the next step is to reveal the actual error.

WordPress includes a built-in debugging system. The official WordPress documentation explains that WP_DEBUG enables debug mode and is usually set in the wp-config.php file.

On a live website, do not display errors publicly if you can avoid it. Instead, log the error to a private debug file.

Open wp-config.php and add or update these lines before the line that says /* That's all, stop editing! Happy publishing. */:


define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Then reload the page that shows the white screen.

Check the debug log here:


/wp-content/debug.log

Look for lines that contain:

  • PHP Fatal error
  • Allowed memory size exhausted
  • Uncaught Error
  • Call to undefined function
  • Class not found
  • Parse error

The file path in the error usually tells you whether the problem comes from a plugin, theme, WordPress core file, or custom code.

After troubleshooting, turn debugging off again:


define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );
define( 'WP_DEBUG_DISPLAY', false );

3. Increase the WordPress Memory Limit

If the debug log shows an error like Allowed memory size exhausted, WordPress is running out of PHP memory.

WordPress documents the WP_MEMORY_LIMIT constant for increasing the maximum memory WordPress can use.

Add this line to wp-config.php before the “stop editing” line:


define( 'WP_MEMORY_LIMIT', '256M' );

For admin tasks, updates, imports, and WooCommerce operations, you can also set:


define( 'WP_MAX_MEMORY_LIMIT', '512M' );

If this does not work, your hosting provider may enforce a lower PHP memory limit at the server level. In that case, increase the memory limit from your hosting control panel, PHP settings, php.ini, .user.ini, or ask your host to raise it.

Important: increasing memory may fix the symptom, but it does not always fix the cause. A badly coded plugin, heavy page builder, malware, or runaway query can still consume too much memory.

4. Disable Plugins Safely

Plugins are one of the most common causes of the WordPress white screen of death, especially after updates.

If you can access the dashboard:

  1. Go to Plugins.
  2. Deactivate the most recently updated or installed plugin first.
  3. Reload the site.
  4. If needed, deactivate all plugins and reactivate them one by one.

If you cannot access the dashboard, use FTP, SFTP, SSH, or your hosting file manager:

  1. Go to wp-content/.
  2. Rename the plugins folder to plugins-disabled.
  3. Reload the website.

If the site loads after renaming the folder, a plugin is likely causing the issue.

To identify the plugin:

  1. Rename plugins-disabled back to plugins.
  2. Open the plugins folder.
  3. Rename plugin folders one by one.
  4. Reload the site after each change.

The plugin that brings back the white screen is likely the culprit.

5. Switch to a Default Theme

If disabling plugins does not fix the issue, the active theme may be causing the fatal error.

This often happens after:

  • A theme update
  • A PHP version change
  • Editing functions.php
  • Adding custom code
  • Installing an incompatible child theme

If you can access the dashboard, switch to a default WordPress theme such as Twenty Twenty-Five or the latest default theme installed on your site.

If you cannot access the dashboard, use FTP/SFTP or file manager:

  1. Go to wp-content/themes/.
  2. Rename the active theme folder.
  3. WordPress will try to fall back to another installed default theme.

If no default theme is installed, upload a fresh default WordPress theme to the themes folder and test again.

If switching themes fixes the issue, update the theme, check PHP compatibility, review custom code, and contact the theme developer if needed.

6. Check PHP Version Compatibility

A white screen can appear after changing PHP versions.

Some older plugins or themes may not work with newer PHP versions. Some newer plugins may not work properly on outdated PHP versions.

Check your hosting panel for the active PHP version. If the error started after a PHP upgrade, temporarily switch back to the previous version and test again.

Also check the debug log. PHP compatibility errors often include messages such as:

  • Deprecated
  • Fatal error
  • Uncaught TypeError
  • Call to undefined function
  • Creation of dynamic property is deprecated

The long-term fix is not to stay on an old PHP version forever. Update or replace the incompatible plugin or theme.

7. Check Custom Code and functions.php

If the white screen appeared after adding code to functions.php, a custom plugin, or a snippets plugin, check that code first.

Even one missing bracket, semicolon, or wrong function name can break the site.

Common code-related errors include:

  • Parse error
  • Syntax error
  • Unexpected token
  • Call to undefined function
  • Cannot redeclare function

If you used a code snippets plugin and cannot access the dashboard, disable the snippets plugin folder from wp-content/plugins/.

If you edited functions.php, restore the previous working version from backup or remove the recently added code.

8. Restore WordPress Core Files

If the debug log points to WordPress core files, or if core files were modified during malware cleanup, restore a clean copy of WordPress core.

You can do this by uploading a fresh copy of WordPress and replacing:

  • wp-admin/
  • wp-includes/
  • Core files in the WordPress root

Do not overwrite:

  • wp-config.php
  • wp-content/

Be careful if you are not familiar with manual WordPress file replacement. Take a backup first.

9. Check the .htaccess File

A broken .htaccess file can cause a white screen, redirect loop, 403 error, 500 error, or broken permalinks.

To test it:

  1. Connect with FTP/SFTP or hosting file manager.
  2. Find .htaccess in the WordPress root directory.
  3. Rename it to .htaccess-backup.
  4. Reload the site.

If the site works, regenerate the default WordPress rules by going to:


Settings → Permalinks → Save Changes

If you cannot access the dashboard, create a fresh default WordPress .htaccess file manually.

10. Check File Permissions and Ownership

Incorrect file permissions or ownership can prevent WordPress from loading required files.

As a general baseline:

  • Directories should usually be 755
  • Files should usually be 644
  • wp-config.php may be more restrictive, such as 600 or 640, depending on hosting setup

From the WordPress root directory, common reset commands are:


find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

If the site was recently migrated or restored, file ownership may also be wrong. In that case, ask your hosting provider to reset ownership for the account.

11. Check for Malware or Backdoors

Not every white screen is caused by a normal plugin conflict. Malware can also break a WordPress site.

This can happen when attackers inject broken PHP code, modify core files, add malicious auto-loader files, change .htaccess, create fake plugins, or leave backdoors behind.

Signs that malware may be involved include:

  • The issue returns after cleanup
  • Unknown admin users exist
  • Suspicious PHP files appear in uploads
  • Core files are modified
  • Spam pages or redirects appear in search results
  • Security plugins or scanners report malware
  • The site breaks again after files are restored

SiteFort Security Plugin can help scan for malware, backdoors, modified core files, suspicious PHP, injected scripts, vulnerable plugins and themes, and exposed sensitive files. After recovery, it can also help with hardening, firewall rules, login security, vulnerability alerts, audit logs, and Cloudflare Sync to reduce the chance of the issue returning.

If the site keeps breaking or reinfecting after cleanup, use a professional WordPress malware removal service.

12. Clear Cache After Fixing the Issue

After applying a fix, clear every cache layer:

  • Browser cache
  • WordPress cache plugin
  • Object cache
  • Server cache
  • LiteSpeed cache
  • Cloudflare or CDN cache

A cached blank page or cached error can make it look like the problem still exists even after the actual issue has been fixed.

13. Check Server Error Logs

If WordPress debug logs do not show enough detail, check server logs.

Useful logs include:

  • PHP error log
  • Apache error log
  • Nginx error log
  • LiteSpeed error log
  • Hosting account error logs

Look for errors at the exact time you load the blank page. Server logs often show errors that WordPress cannot log because the failure happens too early.

14. When to Restore a Backup

If the white screen started after a known update or code change, and you cannot quickly identify the cause, restoring a clean backup may be the fastest option.

Before restoring, make sure:

  • The backup is from before the issue started
  • The backup is not infected
  • You save a copy of the current site for investigation
  • You update vulnerable plugins/themes after restore
  • You reset credentials if a compromise is suspected

Restoring a backup without fixing the root cause may bring the site back temporarily, but the issue can return.

Final Thoughts

The WordPress white screen of death looks serious, but it usually has a clear cause behind it.

Start by checking for a recovery mode email. Then enable debug logging, review the error, increase memory only if the log shows memory exhaustion, disable plugins, switch themes, check PHP compatibility, review custom code, and inspect server logs.

If the issue is related to malware, suspicious file changes, or repeated reinfection, do not stop at restoring the visible site. Scan for backdoors, update vulnerable software, reset credentials, and add hardening and monitoring.

For ongoing protection, SiteFort can help with malware scanning, vulnerability alerts, hardening, firewall rules, login protection, audit logs, and Cloudflare Sync from one WordPress security dashboard.