Your website is down. Here is what to do in the first 15 minutes.
· 6 min read
Minute 1: confirm it from outside
Before you touch anything, find out whether the site is down for everyone or only for you. Your own browser, network and DNS cache lie more often than you would think. Run the website down checker: it fetches the site from a neutral location and tells you the status code, whether the name resolves, whether the certificate is valid and how long the answer took.
- Up from outside, down for you: the problem is on your side. Reload without cache (Ctrl+Shift+R), try your phone without Wi-Fi, flush the DNS cache, switch off VPN and browser extensions. Done.
- Down from outside: go on. The result already narrows it down, because each failure mode has its own signature.
Minute 2: read the error, it names the cause
- "This site can't be reached", DNS_PROBE_FINISHED_NXDOMAIN: The domain does not resolve: expired domain, missing record, nameserver change. Guide: DNS_PROBE_FINISHED_NXDOMAIN.
- ERR_CONNECTION_REFUSED: The server is up, but no web server is listening. Guide: ERR_CONNECTION_REFUSED.
- Timeout, nothing loads: The server is off, or a firewall drops everything. See this page, step 4 below.
- "Your connection is not private": The certificate expired or is wrong. Guide: "Your connection is not private".
- 502 Bad Gateway: The web server runs, the application behind it does not. Guide: 502 Bad Gateway.
- 503 Service Unavailable: Overload, maintenance mode or a hosting limit. Guide: 503 Service Unavailable.
- 504 Gateway Timeout: The application answers, but too slowly. Guide: 504 Gateway Timeout.
- 500 Internal Server Error, white page: The application crashed: a plugin, an update, a PHP version. See this page, step 5 below.
Minute 3: what changed?
Outages have causes, and the cause is usually the last thing that changed. Ask yourself, in this order: Did a domain or a certificate expire today? Did I or an automatic process update something (WordPress core, a plugin, PHP, the operating system)? Did I change DNS, the firewall or a configuration file? Did an invoice go unpaid? Did traffic spike (a newsletter, a campaign, a mention somewhere)? If one of these rings a bell, start there.
Minute 5: the five checks, in order of likelihood
1. Domain and DNS
dig +short example.com A
whois example.com | grep -iE 'expir|status'
No answer or clientHold: the domain expired or the records are gone. Renew at the registrar or recreate the A record. Nothing on the server will help.
2. Certificate
The SSL Checker shows expiry, chain and names in seconds. Expired: renew (sudo certbot renew && sudo systemctl reload nginx) or reissue it in your host's panel.
3. Is the server up at all?
ping -c 3 example.com
ssh user@example.com
Ping and SSH dead: the machine is off, the network in front of it is down, or the host has a failure. Check the host's status page and your cloud console (is the VM running? did an invoice fail?). Reboot it from the console if it is frozen.
4. Is the web server running, and is the disk full?
systemctl status nginx apache2 php8.3-fpm mysql mariadb 2>/dev/null | grep -E 'service|Active'
df -h
free -m
sudo tail -n 30 /var/log/nginx/error.log
A stopped service: start it, then read journalctl -u SERVICE -n 50 to see why it stopped. A full disk is the most common reason a database or PHP stops; free space (sudo journalctl --vacuum-size=200M, remove old backups and logs) and start the service again. Always sudo nginx -t or sudo apachectl configtest before a reload.
5. The application: update, plugin, PHP
A 500 or a white page right after an update is the application failing on every request. Look at the PHP error log, or switch on WordPress debugging briefly:
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Then read wp-content/debug.log. The fatal error names the plugin or theme; rename its folder via SFTP or SSH (wp-content/plugins/name to name.off) and the site comes back. With the WP-CLI: wp plugin deactivate name. If the error mentions a PHP function that does not exist, the PHP version changed; switch it back in the host's panel or in the pool configuration.
Minute 10: tell people
While you work, your customers are refreshing the page and your inbox is filling. One short, calm message saves an hour of replies. Put it where they look: a status page, the social profile, an autoresponder.
Our website is not available at the moment. We know about it and are working on it. Orders and messages are not lost. We will post an update here as soon as it is back. Thank you for your patience.
A status page that updates itself from your monitors does this for you, in advance.
Minute 12: when it is your host's problem
On shared hosting, most of the steps above are not yours to take. If the outside check says down, your account shows no limit and nothing changed on your side, the host has to act. Send them something they can work with:
Hello, my website example.com has been down since about 14:30 UTC. An outside check reports: connection timed out (or: 502 Bad Gateway / certificate expired / does not resolve). I have not changed anything in my account. Could you check the server and let me know when it is back and what the cause was?
Include the time, the exact error and the fact that you checked from outside. A ticket with those three things gets handled in one round.
Minute 15: get it fixed, and know first next time
If you run your own server, or a webspace with SSH access, you do not have to do the steps above yourself. A quick fix handles the common causes at a fixed price: it restarts a stopped service after its configuration test passes, frees a full disk, renews an expired certificate. If that is not enough, a deep fix takes over around the clock, billed in 15-minute blocks, with the price shown before you order. And whichever way the outage ends: website monitoring checks your site every 5 minutes on the free plan and alerts you by email and app, so that next time you know before your customers do.
What now
Check it from outside
Is the site down for everyone or just for you, and what does the server answer? Free, no sign-up.
Website down checkerDown? We step in.
On your own server or in a webspace with SSH access: a quick fix at a fixed price for the common causes, a deep fix billed in 15-minute blocks for the rest, around the clock. Price before you order.
Get it fixedMore guides
- Server down: what to check first, and in which order
- 502 Bad Gateway: causes and how to fix it
- 503 Service Unavailable: overloaded or in maintenance?
- 504 Gateway Timeout: what it means and how to fix it
- DNS_PROBE_FINISHED_NXDOMAIN: causes and fixes
- ERR_CONNECTION_REFUSED: causes and how to fix it
- "Your connection is not private": the SSL certificate warning