The 500 internal server error is one of WordPress’s least helpful messages, because it tells you almost nothing. All it really says is: “something went wrong on the server, and I can’t be more specific.” The good news is that the list of things that actually cause it is short, and you can work through them in order. This guide does exactly that — from the two-minute fixes to the ones that point squarely at your host.
You might see it phrased a few different ways — “500 Internal Server Error,” “HTTP Error 500,” or “The server encountered an internal error” — but they all mean the same thing, and the fixes are the same.
First, turn on the error log
The 500 error is generic on purpose, so make WordPress tell you the real story. Open wp-config.php (WordPress’s main settings file) over SFTP (a secure way to connect to your site’s files) or your host’s file manager, find define('WP_DEBUG', false);, and replace it with:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Reload the page, then read wp-content/debug.log. If a plugin or theme is behind it, the last lines usually name the file. Your host’s error log (in the control panel) is worth a look too — a 500 often leaves a more detailed note there. Set WP_DEBUG back to false when you’re done.
Cause 1: A corrupted .htaccess file
On most WordPress servers, a hidden file called .htaccess controls how URLs are handled. A bad plugin or a botched edit can corrupt it and throw a 500. The fix is easy: over SFTP, rename .htaccess in your main WordPress folder to .htaccess-old, then reload your site. If it works, the file was the problem. Regenerate a fresh one by logging into WordPress and going to Settings, Permalinks, then clicking “Save Changes” — no changes needed, the click alone rewrites a clean file.
Cause 2: PHP memory exhausted
If your site ran out of memory mid-request, the server can answer with a 500. Give it more room by adding this to wp-config.php:
define('WP_MEMORY_LIMIT', '256M');
If that clears the error, the underlying issue is a memory ceiling set too low — common on crowded budget plans. Our guide on how to increase the PHP memory limit covers the other places it can be raised and what to do when your host won’t budge.
Cause 3: A plugin or theme conflict
A single misbehaving plugin — or a theme edit gone wrong — is a frequent cause, especially right after an update. Deactivate all plugins (if you’re locked out of the dashboard, rename wp-content/plugins to plugins-off over SFTP). If the site returns, reactivate them one at a time to find the culprit. If plugins aren’t it, switch to a default theme like Twenty Twenty-Four to rule the theme out.
When a plugin causes the crash, you’ll often see the friendlier “there has been a critical error on this website” page instead of a raw 500 — same family of problem, and Recovery Mode can name the culprit for you.
Cause 4: The wrong PHP version
If the server was recently moved to a newer (or older) PHP (the programming language WordPress runs on) version, plugins or themes not built for it can break and throw a 500. The error log usually makes this obvious with a version-related fatal error. Switching PHP versions is a host-side setting; if a change caused this, rolling it back is the quick fix while you sort out the incompatible plugin.
Cause 5: It’s the server itself
Sometimes there’s nothing wrong in your files at all — the server is overloaded, out of resources, or misconfigured, and it’s answering every request with a 500. If you’ve cleared the log, the .htaccess, the memory, and the plugins and it still won’t lift, the problem is upstream. A closely related timeout version of this is the 502 bad gateway error, which points even more directly at the server.
When the fix is the host, not the file
Look back at that list: corrupted files after a bad update, memory set too low, a PHP version changed without warning, an overloaded server. Most 500 errors are hosting problems wearing a technical costume. On bargain shared hosting, resources are stretched thin and updates run unsupervised, so these crashes are just part of the deal.
That’s the difference with managed WordPress hosting. Plans include generous memory and resources so the ceiling isn’t a constant fight, and every time we update your site we verify it still looks and works right — so a bad update gets caught and rolled back before it ever 500s your live site. When something does break, there’s a real US-based team on the other end — and pricing that stays predictable as your site grows, never a meter. The care scales; the bill doesn’t turn into a meter.
If nothing works: restore a clean copy
If you’ve worked through every cause and the 500 won’t lift, or an edit made things worse, restore. A recent clean backup returns your whole site to its last working state in minutes. Our guide on how to restore WordPress from a backup walks through it, and every plan we run keeps off-site backups 3 times a day that are monitored and locked for 90 days against changes or deletion, even by ransomware, so a clean copy is always waiting.
A quick recap
- Turn on the error log and read
debug.log. - Rename
.htaccess, then regenerate it from Permalinks. - Raise the PHP memory limit.
- Deactivate plugins and switch to a default theme.
- Check the PHP version; roll back a recent change.
- Still broken? It’s the server — or restore from backup.
If the 500 error is a recurring visitor — or you’d rather not edit live config files with your business offline — hand it off. This is routine work for our US-based team, and moving to hosting where your site isn’t fighting for scraps usually makes it stop for good.