Errors
WordPress 500 Errors: A Step-by-Step Diagnosis Guide
If your WordPress site is showing a 500 Internal Server Error, the fastest fix is to work from the outside in: confirm whether the problem is site-wide or only on one page, check for a recent change, then test the most common causes in a safe order. Always back up first if you can, because several of the checks below involve disabling code or editing server files.
The key thing to know is that HTTP 500 is not one specific WordPress error. It is a generic server-side failure, which means the real cause could be a plugin, theme, corrupted .htaccess file, PHP memory limit, file permissions issue, or a hosting/server configuration problem. That is why step-by-step diagnosis matters more than guesswork.
What a WordPress 500 error usually looks like
You may see one of these symptoms:
- A blank page or “Internal Server Error” message on the front end.
- The dashboard works, but one page, post, or admin screen throws a 500 error.
- The error appears after a plugin update, theme change, migration, or host-side change.
- The site loads sometimes, then fails under load or after a cache purge.
- Specific actions fail, such as saving a post, opening the Customizer, or visiting
/wp-admin.
Because HTTP 500 is broad, the right move is not to “try random fixes.” It is to narrow down which layer is failing: WordPress code, PHP, web server rules, or the host environment.
The safest diagnosis flow, in order
1. Confirm the scope of the failure
First, check whether the 500 error affects the whole site or just one URL. Try the homepage, another public page, /wp-admin, and a direct file if you have one, such as an image in the Media Library. If only one page fails, the problem may be tied to that template, block, shortcode, or a specific request path.
If the whole site is down, keep going. If only one action fails, that narrows the search a lot and can save time.
2. Check for a recent change
Ask: what changed right before the error started? Common triggers include a plugin update, theme update, WordPress core update, new plugin installation, PHP version change, a migration, a security rule from the host, or edits to .htaccess. If you can connect the timing to one change, that is often the fastest path to a fix.
If the error began right after an update, see WordPress Site Broke After an Update? Here's What Happened and How to Fix It for a structured rollback-and-recovery approach.
3. Restore or duplicate before changing anything risky
If you have a recent backup, make sure it is usable before you start editing files. If you do not have a restore point, create one now if the site is still partly accessible. A good backup is the safest way to recover from a wrong turn while diagnosing a 500 error.
If backups are part of the problem rather than the solution, that is a sign the issue may be bigger than a simple WordPress setting. Mend’s free diagnosis can triage the fault and quote a flat price before any work, no card required.
4. Test plugins first by disabling them safely
Plugins are one of the most common causes of HTTP 500 errors. If you can access wp-admin, deactivate all plugins, then test the site. If the error disappears, reactivate plugins one by one until the error returns.
If you cannot access wp-admin, rename the plugins folder through SFTP/File Manager, or use a host file manager if that is the only access you have. This disables plugins without deleting them. Test again after the rename. If the site comes back, restore the folder name and isolate the faulty plugin from there.
When you need a careful rollback without making things worse, this is often a good time to use our WordPress fix guides or get a senior engineer to handle it directly.
5. Switch to a default theme
If plugins are not the cause, test the theme. Temporarily switch to a default WordPress theme such as Twenty Twenty-Four if the dashboard works. If the dashboard does not work, rename the active theme folder via SFTP so WordPress falls back to a default theme if one is installed.
A broken child theme, bad functions.php edit, or theme-specific plugin integration can all trigger a 500 error. If the site comes back after changing themes, the theme layer is the likely culprit.
6. Regenerate .htaccess
A corrupted .htaccess file can produce a 500 error, especially on Apache or LiteSpeed servers. To test this safely, rename the existing file to something like .htaccess-old. Then visit the site again.
If the error disappears, go to Settings > Permalinks in WordPress and click Save Changes to regenerate a clean .htaccess. If you are on Nginx, this specific file is usually not the cause, because Nginx does not use .htaccess in the same way.
7. Check the PHP error log or host error log
This is where you often find the real cause. Look for the most recent fatal error, parse error, memory exhaustion message, or permission denied entry. Host panels often show an “error log,” “PHP error log,” or “server logs” section. If you have SSH access, your host may also keep logs under /var/log or a site-specific log path.
You do not need to understand every line. You are looking for the first clear failure near the time of the 500 error. If you want a practical guide to reading those messages, see How to Read the WordPress Debug Log and Find the Real Cause.
8. Check PHP memory limit and resource limits
WordPress can throw 500 errors when PHP runs out of memory or hits another resource limit. This is more likely on heavier sites, WooCommerce stores, large page builders, import/export jobs, or hosts with conservative limits.
If your host allows it, increase the PHP memory limit in wp-config.php or via the hosting control panel. A common safe test is raising the WordPress memory limit to a sensible host-approved value, then retesting. If the site suddenly works, you have a capacity issue, not necessarily a broken plugin.
Remember that some hosts enforce hard caps, so a local change may not help if the server limit is the real bottleneck.
9. Verify file permissions and ownership
Incorrect permissions or ownership can break PHP execution and return a 500 error. As a general rule, WordPress directories are usually set more permissively than files, and executable scripts must be readable by the web server. Exact values can vary by host and setup, especially on managed hosting or containerized environments.
Do not randomly chmod everything to 777. That is unsafe and usually not the fix. If permissions are suspect, ask the host what they expect for your account type or let a professional verify them.
10. Look for a PHP version mismatch
A site can start failing after a PHP upgrade if a plugin or theme is not compatible with the new version. You may see 500 errors immediately or only on certain pages that call incompatible code.
If the problem started right after a PHP change, test by switching to the previous supported version in your hosting panel if that is available. If the site recovers, update or replace the incompatible code before switching PHP again.
11. Rule out security tooling or host-level rules
Sometimes the application is fine, but a firewall rule, malware scanner, WAF, or host security layer is blocking a request and causing a 500 on specific actions. This can happen after a plugin change, an unusual pattern of requests, or a false positive from a security tool.
If a page, form, or admin action fails while everything else works, check any security plugins, CDN rules, or host protection logs. This is especially important if you also suspect compromise. In that case, follow WordPress Site Hacked? Here's How to Clean It Up — Safely before trying more changes.
12. Use a clean isolation test if the cause is still unclear
If you have ruled out plugins, theme, .htaccess, PHP limits, and obvious log errors, the remaining cause is often environmental: host configuration, corrupted core files, database oddities, or a combination of small issues. At this point, a clean isolation test is better than guessing.
That usually means comparing the live site to a known-good backup, testing a fresh WordPress install on the same account, or cloning the site to a staging environment and reproducing the error there. Reproducibility is what turns an unknown 500 into a fixable defect.
What not to do
- Do not keep refreshing and hoping it clears itself.
- Do not change multiple things at once; you will lose the trail.
- Do not delete plugins or themes before you know what they are doing.
- Do not edit server files without a backup or a copy of the original.
- Do not assume the latest plugin is always the cause, or always the victim.
How to prevent future 500 errors
Most repeated 500 errors come down to poor change control. The best prevention is boring but effective: keep reliable backups, test updates on staging when possible, update one thing at a time, and keep an eye on logs after changes. A stable maintenance routine beats emergency recovery every time.
It also helps to remove abandoned plugins, keep PHP and WordPress versions aligned with what your site actually uses, and document any custom code or server tweaks. If your site is business-critical, a managed maintenance plan can catch problems before they become outages. Mend’s Care Plan covers updates, backups, security, and uptime monitoring.
For a restore-focused approach to backups, read A Sensible WordPress Backup Strategy You Can Actually Use. For a broader maintenance workflow, How to Safely Update WordPress Plugins, Themes, and Core is also worth keeping handy.
When to call a professional
Call for help when the error comes back after you have checked plugins, theme, .htaccess, logs, PHP limits, and permissions; when the host cannot explain the failure; or when the site is paying customers or leads and every hour matters. If you are seeing repeated crashes, suspect malware, or do not have a safe backup to roll back to, this is no longer a simple DIY fix.
Mend’s senior engineers fix broken WordPress sites fast, usually the same day, using a backup-first workflow. You get a plain-English report of the root cause and exactly what changed, and every paid fix is backed by a fixed-or-your-money-back guarantee. If you want a hand without sharing passwords, use the free Mend Connect plugin and start with Emergency Rescue for urgent outages or Free Diagnosis if you want the problem triaged first.
In short: a WordPress 500 error is a signal, not a diagnosis. The safest way to solve it is to test the likely causes one by one, use logs to find the real failure, and stop when you hit a layer you cannot verify confidently.
Frequently asked questions
Is a WordPress 500 error always caused by a plugin?
No. Plugins are common, but 500 errors can also come from themes, .htaccess, PHP memory limits, file permissions, server rules, or hosting problems.
What is the first thing I should check?
Check whether the error affects the whole site or only one page, then look at what changed most recently. That gives you the fastest path to the likely cause.
Can I fix a 500 error without wp-admin access?
Yes. You can rename plugin or theme folders, test .htaccess, and check logs through SFTP or your host’s file manager. That is often enough to isolate the problem.
Why does the error come and go?
Intermittent 500 errors often point to resource limits, a flaky plugin, a host-side rule, or an issue that only appears under certain requests. Logs are especially important in that case.