Find the error. Fix it.
Search by the exact message WordPress shows you. Each page lists the likely causes and the fixes in the order to try them.
The whole site is down or broken
Visitors see a blank page, a generic message or nothing at all.
403 Forbidden in WordPress
The server refused the request. On Apache, read the error log: the AH code names the cause, a deny rule in .htaccess or a file permission. Then fix that one.
500 Internal Server Error in WordPress
The web server failed before WordPress could answer. Read the server error log, then check .htaccess, file permissions, PHP settings and the PHP handler.
502 Bad Gateway in WordPress
A 502 means nginx got no usable answer from PHP. Read its error log line, then restart PHP-FPM or fix its socket, header buffer or timeout.
504 Gateway Time-out in WordPress
The server in front of PHP gave up waiting. Read its error log, raise fastcgi_read_timeout or ProxyTimeout for the slow page, or make the slow job shorter.
Briefly Unavailable for Scheduled Maintenance
Your site is stuck on this message after an update. Delete the .maintenance file in the WordPress root, or run wp maintenance-mode deactivate.
ERR_TOO_MANY_REDIRECTS in WordPress
Two layers keep sending the browser to each other. Trace the redirect chain with curl, then fix the site address, the HTTPS header from your proxy, or a plugin.
Error Establishing a Database Connection
WordPress cannot reach its database. Check the credentials in wp-config.php, the database host, the server, and table health, in that order.
There Has Been a Critical Error on This Website
A PHP fatal error stopped WordPress. Find the plugin or theme behind it with recovery mode or the error log, then turn it off over SFTP or WP-CLI.
WordPress Database Error: Table Doesn't Exist
WordPress asked for a table that is not in the database. Compare the prefix in wp-config.php with the real table names, then restore the table or fix the name.
WordPress White Screen of Death
A blank page with no message means PHP failed where WordPress could not report it. Check the status code, turn on the debug log, and read the last fatal line.
Your PHP Installation Appears to Be Missing the MySQL Extension
PHP on your server has no mysqli extension, so WordPress stops before it reaches the database. Turn mysqli on, restart PHP, and check the web copy of PHP.
A PHP error message on screen
WordPress prints the technical message, with a file name and line number.
Cannot Modify Header Information: Headers Already Sent
A file printed output before WordPress sent its headers. The message names the file and line. Remove the stray space, byte order mark or echo that started it.
Deprecated: Creation of Dynamic Property
A plugin or theme sets a property its class never declared, and PHP 8.2 flags it. The site works. Update the plugin and log errors, not show them.
Fatal Error: Allowed Memory Size Exhausted
PHP hit its memory limit. The number in the message is the limit in force. Read it, raise WP_MEMORY_LIMIT, and find what used the memory if it returns.
Fatal Error: Cannot Redeclare Function (Previously Declared In)
Two files define the same PHP function. The message names both. Usually two copies of one plugin are active: deactivate or remove the extra copy.
Fatal Error: Cannot Use Object of Type WP_Error as Array
A plugin read a failed WordPress call as if it worked. Switch it off, read the WP_Error message to find the cause, then add is_wp_error() before the array.
Fatal Error: Maximum Execution Time Exceeded
PHP stopped a script that ran too long. Find the slow plugin from the file path, check the time limit in Site Health, and raise it where PHP reads it.
Fatal Error: Uncaught Error: Call to Undefined Function
PHP met a function that does not exist. Read the name: removed in PHP 8, a missing PHP extension, or code run too early. Each has its own fix.
Fatal Error: Uncaught Error: Class Not Found
PHP could not find a class a plugin asked for. Read the name: missing vendor folder, wrong file case, admin class loaded too early, or a namespace slip.
Parse Error: Syntax Error, Unexpected ...
PHP could not read a file because its code is malformed. The message gives the file and line. Check the line before it, restore the file, and test with php -l.
Warning: Attempt to Read Property on Null
A theme or plugin read a property of a missing post, user or term. The path names who wrote it. Update or replace it, or check the value before reading it.
Warning: Failed to Open Stream: No Such File or Directory
PHP could not find or read a file it was told to load. The folder in the path says whose file it is: a plugin, a theme, a cache drop-in or WordPress core.
Warning: Undefined Array Key
A plugin or theme read an array item that is not there. The path names who wrote it. Update or replace it, and log errors instead of showing them.
Updates and installs
A plugin, theme or core install or update stops with an error.
Another Update Is Currently in Progress
A WordPress core update left its lock behind. It clears itself after 15 minutes, or you can delete the core_updater.lock option once no update is running.
Current PHP Version Does Not Meet Minimum Requirements for Plugin
The plugin needs a newer PHP or WordPress than your site runs. Update PHP at your host, update WordPress, or install an older plugin version that still fits.
Download failed. cURL error 6: Could not resolve host
The words after Download failed. name the step that stopped: DNS, a blocked host, a bad address or a 404. Test the lookup from the server, then fix that step.
Incompatible Archive: The Package Could Not Be Installed
WordPress could not open or read your plugin zip. Check it with unzip, take out a zip-in-zip or extra folder, and upload the zip that holds one plugin folder.
Installation Failed: Could Not Copy File (and Could Not Remove the Old Plugin)
WordPress could not write a file or delete the old plugin folder. Find the failing step, free disk space or fix the folder owner, then check the old plugin.
Installation Failed: Could Not Create Directory
WordPress cannot write to a folder in wp-content. Read the path in the message, check who owns that folder, and fix the owner before you touch the permissions.
Installation Failed: Destination Folder Already Exists
A folder with this name already holds files in wp-content/plugins. Use Replace current with uploaded, or move the old folder out of plugins and install again.
Plugin Could Not Be Activated Because It Triggered a Fatal Error
PHP crashed while WordPress test-loaded the plugin. The site is fine and the plugin stays off. Read the real error in debug.log or WP-CLI, then fix it.
The Theme Is Missing the style.css Stylesheet
WordPress found no style.css where it looks for one. Upload the zip that holds the theme itself, with style.css in the top folder, or fix the Broken Themes row.
Unable to Connect to the Filesystem. Please Confirm Your Credentials
WordPress cannot write files as itself, so it asks for FTP details. Fix the owner of wp-content and the WordPress files, not the FTP form or permissions.
Uploads and media
A file or image will not upload, or the Media Library rejects it.
"File Exceeds the Maximum Upload Size for This Site"
Raise upload_max_filesize and post_max_size together in your host panel or .htaccess. WordPress uses the smaller of the two as the limit.
413 Request Entity Too Large in WordPress
A 413 means your web server refused the upload before WordPress read it. Raise nginx client_max_body_size or Apache LimitRequestBody, then PHP's limits.
Missing a Temporary Folder
PHP has no folder it can write an upload to. Make /tmp or upload_tmp_dir writable in php.ini. WP_TEMP_DIR in wp-config.php does not fix it.
Sorry, You Are Not Allowed to Upload This File Type
WordPress accepts only listed file types and checks content too. Allow one type with an upload_mimes snippet, or re-save a file that is not what its name says.
The Link You Followed Has Expired
WordPress rejected a form because its security token was missing or stale. After a theme or plugin upload, the cause is usually post_max_size set too low.
The Server Cannot Process the Image (WordPress Image Upload Error)
Making the smaller sizes failed, usually for lack of PHP memory. Upload a smaller image, then read the debug log. Raise the limit only if it is under 256M.
The Uploaded File Could Not Be Moved to wp-content/uploads
The month folder in uploads exists, but PHP may not write in it. Find who owns it, give it to the PHP user, and set 755. No 777 needed.
The Uploaded File Exceeds the upload_max_filesize Directive in php.ini
The file is bigger than PHP's upload_max_filesize. Raise it in your host panel or .htaccess, or install the zip with WP-CLI or SFTP instead of the upload form.
Login and access
You cannot log in, reset a password or get into a screen.
Cookies Are Blocked or Not Supported by Your Browser (WordPress Login)
WordPress did not get its test cookie back. Allow cookies for the site, open the exact Site Address, or fix COOKIE_DOMAIN and the login cache.
Sorry, You Are Not Allowed to Access This Page
WordPress does not see a role that allows this screen. After a migration the cause is usually a table prefix mismatch. Check the role, then repair the keys.
The Password You Entered for the Username Is Incorrect
WordPress found your account but the password did not match. Reset it with Lost your password or wp user update, and rule out a lockout plugin first.
Your Password Reset Link Appears to Be Invalid
The reset key in the link is gone, changed or never reached WordPress. Request one new link, use only that email, and reset by WP-CLI if no mail arrives.
Something fails when you save, edit or visit
The site is up, but one action is refused, one page cannot be found, or the editor breaks.
Are You Sure You Want to Do This? Please Try Again
A security token check failed. WordPress 5.0 and later say "The link you followed has expired", so this wording comes from old WordPress or from a plugin.
cURL Error 28: Operation Timed Out in WordPress
WordPress waited for another server and gave up. Read the number in the message, log the URL that failed, test it from the server, then fix the slow side.
Mixed Content Warnings After Moving WordPress to HTTPS
Chrome blocks http:// scripts and styles on an https:// page. Find each address in the console, then fix it at the source with wp search-replace.
The Editor Has Encountered an Unexpected Error
A script crashed inside the block editor. Read the browser console to find the plugin file, deactivate it, then restore unsaved text with Restore the backup.
This Block Contains Unexpected or Invalid Content
The saved HTML no longer matches the block. Use Resolve to see the difference and Convert to HTML to keep everything. Attempt recovery can delete content.
Updating Failed. The Response Is Not a Valid JSON Response
The block editor got something other than JSON back from the REST API. Open /wp-json/ to see what, then fix permalinks, stray output, or a blocking rule.
WordPress Posts Return 404 Not Found (Pages Work)
Posts show a 404 while pages and the dashboard load. The saved rewrite rules are stale, or the server is not passing URLs to WordPress. Flush the rules first.
Your Site Could Not Complete a Loopback Request
Site Health says your site cannot call itself. Read the error under the title, then fix the port, DNS, password or firewall rule it points to.