✦ Blog

WordPress Site Down? A Step-by-Step Recovery Checklist

White screen, "critical error", database connection error or 5xx? A calm, ordered checklist to get a WordPress site back online fast, and keep it up.

Upmonora team4 min read

Overview - WordPress Site Down? A Step-by-Step Recovery Checklist

A WordPress site going down is stressful, but the causes are predictable. Nearly every outage comes from the same short list. Work through this checklist in order - it goes from the most likely and easiest to check, to the rarer causes.

Step 0: Confirm it's really down

Check from outside your own network with the free website checker. If it loads there, the problem is your connection, DNS cache or browser. (How to tell if a site is down for everyone.) Note the exact status code and error message - you'll need them below.

Match the symptom

What you seeMost likely causeJump to
"There has been a critical error on this website" or a blank white pagePHP fatal error in a plugin or themeStep 2
"Error establishing a database connection"Database down or wrong credentialsStep 3
"Briefly unavailable for scheduled maintenance"An update didn't finishStep 1
Browser security warningExpired SSL certificateStep 4
500, 502, 503, 504, 508Server, PHP or resource limitsStep 5
Site loads but shows spam or redirects elsewhereCompromised siteStep 6

Step 1: Stuck in maintenance mode

WordPress creates a .maintenance file in the site root during updates and deletes it when they finish. If an update times out, the file stays. Delete it over SFTP or with your host's file manager, reload, then re-run the update that failed from Dashboard → Updates.

Step 2: Plugin or theme errors (the most common cause)

  1. Check your inbox. Since WordPress 5.2, a fatal error triggers an email to the admin address naming the plugin or theme, with a recovery mode link that lets you log in and deactivate it.
  2. Turn on logging if there's no email. In wp-config.php, above "That's all, stop editing":
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    Reload the site, then open wp-content/debug.log. The fatal error names the file, which names the plugin.
  3. Disable the culprit. Rename its folder in wp-content/plugins/. If you can't tell which one, rename the whole plugins folder to plugins-off to disable them all.
  4. Theme problem? Rename the active theme's folder in wp-content/themes/. WordPress falls back to a default theme if one is installed.
  5. With WP-CLI it's quicker:
    wp plugin list --status=active
    wp plugin deactivate plugin-slug
    wp plugin deactivate --all        # nuclear option

Turn WP_DEBUG off again when you're done.

Step 3: "Error establishing a database connection"

  • Compare DB_NAME, DB_USER, DB_PASSWORD and DB_HOST in wp-config.php with your hosting panel. Hosts sometimes rotate passwords or change hosts during migrations.
  • Check whether MySQL/MariaDB is running (on a VPS: systemctl status mysql). A full disk or an out-of-memory kill is a common reason it stops.
  • If WordPress reports corrupted tables, add define( 'WP_ALLOW_REPAIR', true );, visit /wp-admin/maint/repair.php, and remove the line afterwards.

Step 4: SSL certificate or domain expired

A browser warning like NET::ERR_CERT_DATE_INVALID means the certificate expired. Renew it in your hosting panel (most use Let's Encrypt), or check why auto-renewal failed - a DNS change or a CDN in front of the site is the usual reason. If the domain itself expired, the registrar shows a parking page: renew it immediately, as there's a limited grace period. How to check an SSL expiry date.

Step 5: Server errors and resource limits

  • 500: often a broken .htaccess. Rename it, then go to Settings → Permalinks and click Save to regenerate it. Also check the PHP error log.
  • Memory exhausted: "Allowed memory size exhausted" in the log. Raise WP_MEMORY_LIMIT to 256M, then find what's using it.
  • 502/504: PHP-FPM is down or too slow. See our guides to 502 and 504.
  • 503/508 on shared hosting: you've hit CPU or process limits. Aggressive bots and wp-cron on busy sites are the usual cause. Replace wp-cron with a real cron job (define( 'DISABLE_WP_CRON', true );, then run wp cron event run --due-now every 5 minutes) and add page caching.

Step 6: Hacked or redirecting

Spam pages, redirects to other domains or unknown admin users mean the site is compromised. Take it offline, restore a clean backup from before the infection, update WordPress, all plugins and themes, and change every password and the salts in wp-config.php. Remove plugins you don't use - abandoned plugins are the most common way in.

Keep it from happening again

  • Update on a staging copy first, or at least take a backup right before updating.
  • Keep plugins lean. Every plugin is code you run and have to trust.
  • Monitor more than the homepage. A cached homepage can load while wp-login.php, wp-admin or WooCommerce checkout is broken. Monitor each separately.
  • Watch the certificate and the domain, the two outages that are completely preventable.

Our tutorial Monitor a WordPress site in 5 minutes sets up uptime, SSL and response-time monitoring for all of these. Upmonora also detects your WordPress version, theme and plugins and tells you when they change - handy when you're trying to work out which update broke the site.

Frequently asked questions

Why is my WordPress site suddenly down?

The most common causes are a plugin or theme update that caused a fatal PHP error, a database connection problem, an expired SSL certificate or domain, the hosting account hitting resource limits, or an update that left the site in maintenance mode.

How do I fix "There has been a critical error on this website"?

Check the email WordPress sends to the admin address - it usually names the plugin or theme at fault and includes a recovery-mode link. If there is no email, enable WP_DEBUG_LOG, reload the page, and read wp-content/debug.log.

How do I disable all WordPress plugins without admin access?

Using SFTP or your host's file manager, rename wp-content/plugins to plugins-off. WordPress deactivates them all. Rename it back, then re-activate plugins one by one to find the culprit.

How do I know when my WordPress site goes down?

Use an external uptime monitor that checks your homepage (and ideally wp-login.php and your checkout) every minute and alerts you by email, Slack or Teams. Upmonora's free plan covers 5 monitors.