Server Error

    HTTP 500 Internal Server Error

    The server encountered an unexpected condition that prevented it from fulfilling the request — the generic catch-all for any unhandled server-side failure.

    Check a URL for HTTP 500

    Paste any URL to see whether it currently returns 500. Runs a live HTTP probe and follows redirects.

    TL;DR

    A 500 means your server broke and doesn't know why. The fix is always the same shape: open the error log (server, application, and CDN), find the stack trace from the moment of failure, and work backwards. The most common real causes are bad recent deploys, database overloads, expired credentials, and out-of-memory crashes — in that order.

    What does HTTP 500 mean?

    HTTP 500 Internal Server Error is the universal "something broke on our end" response. It is deliberately vague because the server hit a condition the application code didn't know how to handle: an unhandled exception, a database connection that timed out, a misconfigured config file, an out-of-memory crash, a syntax error in a recent deploy. Unlike 4xx errors (which point the finger at the client), 500 is the server admitting fault. It is the single most common server-side error on the web and almost always means "check the application logs immediately."

    Common Causes

    • •Uncaught exception in application code (PHP, Python, Node.js, Ruby, Java)
    • •Database connection failure or query timeout
    • •Misconfigured server file (.htaccess, nginx.conf, web.config) — common after a deploy
    • •Out-of-memory: process killed by the OOM killer or PHP memory_limit exceeded
    • •Broken or incompatible plugin/module after an update (WordPress, Drupal, Magento)
    • •File permission issues (web server cannot read/write required files)
    • •Expired API credentials or database password rotation breaking a backend call
    • •Disk full — server can't write logs, sessions, or temp files

    How to Fix It

    1. 1.Open the application error log first — the stack trace from the moment of failure tells you almost everything
    2. 2.Check the web server error log second (nginx /var/log/nginx/error.log, Apache /var/log/apache2/error.log) for config and permission issues
    3. 3.Roll back the most recent deploy if the timing matches — bad code is the #1 cause
    4. 4.Verify database connectivity with a direct connection: mysql -u user -p host, psql -h host -U user
    5. 5.Check disk space (df -h) and memory (free -m / OOM killer in dmesg)
    6. 6.For PHP/WordPress: bump memory_limit to 256M, disable plugins one by one to isolate the bad one
    7. 7.For Node.js: check the process manager (PM2, systemd) for crash loops and review the unhandledRejection log
    8. 8.If the 500 only fires under load, add caching (Redis, Varnish) or scale the bottleneck (DB connection pool, worker processes)

    SEO Impact

    Critical SEO impact when persistent. Googlebot retries 500 responses (a brief spike of 500s during a deploy is forgiven), but pages that consistently return 500 for hours or days are deindexed. Worse, a sitewide 500 outage during a Googlebot crawl can cause Google to throttle crawl rate for weeks afterward as a protective measure. Users bouncing immediately from a 500 page also send a strong negative engagement signal. Set up uptime monitoring with sub-5-minute detection so a 500 outage doesn't silently last overnight.

    Monitor HTTP 500 with LemWatch

    LemWatch alerts within seconds when a monitored page starts returning 500. We track error frequency over time and surface patterns (always at 3am? during deploys? under load spikes?) so you can fix root causes instead of just restarting the server.

    History & Context

    HTTP 500 has existed since the original HTTP/1.0 spec (RFC 1945, 1996) and is the most-cited server error in web infrastructure. It is the response that gave the term "Five Hundred Error" cultural weight — when AWS, Google, or Cloudflare have a major outage, the public-facing symptom is almost always a wave of 500s.

    Real-World Examples

    Cloudflare July 2019 outage

    A bad regex in a WAF rule caused 100% CPU on every Cloudflare server worldwide — every site behind Cloudflare returned 502/500 for ~30 minutes. The post-mortem became a textbook example of "the deploy is always the cause."

    WordPress white screen of death

    A PHP fatal error in a theme or plugin produces a blank white page in browsers but a 500 in the response. The fix: enable WP_DEBUG in wp-config.php to see the actual error, then disable the offending plugin.

    AWS RDS connection storms

    When an RDS instance restarts or fails over, applications that don't handle connection retries see a wave of 500s for 30-120 seconds. Connection pooling (RDS Proxy, pgbouncer) prevents most of these.

    Triage commands: where to look in the first 60 seconds

    bash

    # 1. Nginx / Apache error log — config and permission issues
    tail -100 /var/log/nginx/error.log
    tail -100 /var/log/apache2/error.log
    
    # 2. Application log — the actual exception and stack trace
    tail -100 /var/log/php-fpm/error.log
    tail -100 /var/www/myapp/storage/logs/laravel.log
    pm2 logs --lines 100        # Node.js via PM2
    journalctl -u myapp -n 100  # systemd-managed service
    
    # 3. System health — OOM kills and disk space
    dmesg | grep -i "killed process"
    df -h
    free -m
    
    # 4. Database connectivity from the app server
    mysql -h db.host -u app -p -e "SELECT 1;"
    psql -h db.host -U app -c "SELECT 1;"

    Frequently Asked Questions about HTTP 500

    What does HTTP 500 mean?

    HTTP 500 Internal Server Error means the server encountered an unexpected condition it couldn't handle. It's the generic catch-all for any server-side failure — application bug, database error, config issue, out-of-memory, anything where the server crashed trying to respond.

    How do I fix an HTTP 500 error?

    Open the server's error log immediately. The application log (Laravel, Rails, Node.js, Django, PHP-FPM) will have a stack trace from the exact moment of failure. That trace tells you what to fix — usually a recent deploy, a database issue, or a misconfigured file. Roll back the deploy if the timing matches.

    Why does my WordPress site show a 500 error?

    Almost always a plugin or theme update that introduced a fatal PHP error. Add define('WP_DEBUG', true); to wp-config.php to see the actual error, then disable plugins one by one (rename the plugins folder via SFTP if you can't reach wp-admin) to find the culprit.

    Is HTTP 500 the same as 502?

    No. 500 means "the server itself broke" — the application crashed. 502 Bad Gateway means "a proxy in front of the server got an invalid response from the server" — the application may be down, unreachable, or returning garbage. The fix is different: 500 → check app logs; 502 → check whether the upstream app is even running.

    Does a 500 error hurt SEO?

    A brief 500 during a deploy does not. A persistent 500 (hours or days) causes Google to deindex affected pages and reduce crawl rate sitewide. Set up uptime monitoring with sub-5-minute detection to catch outages before they damage rankings.

    Why am I getting a 500 error for one page only?

    A single-page 500 usually means the application is fine but that specific page hits a code path that throws — a bad database query, a null value the code didn't expect, a missing template. The page's entry in the application log will tell you which line of code blew up.

    Can a 500 error be caused by the client?

    Indirectly, yes — a malformed request that the server didn't validate properly can crash the handler and produce a 500. But the correct response for invalid client input is 400 Bad Request. A 500 here is still the server's fault: it should have validated and rejected the input cleanly.

    How do I see the actual error behind a generic 500 page?

    Production servers deliberately hide error details from the response to avoid leaking stack traces. To see the real error, look in the application log file on the server. For local debugging, enable framework-specific debug modes (WP_DEBUG, APP_DEBUG, DEBUG=True) — never enable these in production.

    500 Internal Server Error on your platform

    Same status code, different fix depending on where you host. Jump to a platform-specific deep dive:

    Free Website Tools

    Check your site for common issues that cause HTTP errors: