How to Monitor Website Uptime for Free (Step by Step)
Most site owners find out their website is down from a customer, a colleague or a sudden drop in orders. Free uptime monitoring fixes that in about fifteen minutes, but only if it is set up to catch the failures that actually happen, not just "the server stopped answering". This walkthrough covers what to monitor, how to configure each setting, how to prove your alerts work, and when a free plan stops being enough.
Before you start: decide what to monitor
An uptime monitor requests a URL on a schedule and checks the answer. The URL you choose decides what failures you can see, so spend two minutes on it.
- Your homepage is the obvious choice and a good default. It proves DNS, TLS, the web server and usually the application are working.
- A key page that uses the database is often better: a product page, a pricing page, a blog post. Homepages are frequently cached by a CDN or a page-cache plugin and keep loading while the database behind them is down.
- A health endpoint such as
/healthis best if you run an app or API, because it can test the database, cache and queue in one request. See how to monitor an API endpoint for how to build one.
Do not monitor a page behind a login unless it uses HTTP Basic Auth (which the monitor can send), and avoid URLs that redirect to a different domain or that change every request in ways that would break a keyword check.
Before adding the URL, confirm what it returns from the command line:
curl -sS -o /dev/null -w "status=%{http_code} total=%{time_total}s\n" https://example.com/
You want status=200 and a time well under a few seconds. A 301 or 302 means the URL redirects; use the final address instead, or keep redirects enabled in the monitor.
Step 1: Create a free account
Sign up for Uptime Monitor's Starter plan. It is free and includes:
- 1 website
- checks as often as every 5 minutes
- 30 days of check history
- repeat alerts during an outage no more often than every 60 minutes
- 1 automated action
- alerts by email, Telegram, Slack, Discord or webhook, and a public status page
No payment details are needed for the free plan.
Step 2: Confirm your email address
Monitoring does not start until your email address is confirmed. Open the confirmation message and click the link. If it is not in your inbox after a few minutes, check spam and promotions folders, and add the sender to your contacts so that future alerts do not land there either. An alert in a spam folder is the same as no alert.
Step 3: Add your website
In the dashboard, add the URL you chose, including the scheme: https://example.com/, not example.com. Then open the site's settings and set the check interval to 5 minutes, the fastest on the free plan.
If the URL legitimately returns something other than 200 (for example a 401 because the page is password-protected, or a 301 you want to keep), add that code to the accepted status codes so it counts as "up". If the page uses HTTP Basic Auth, enter the username and password instead, and the monitor will log in like a browser would.
Step 4: Add a required keyword
This is the setting that turns a basic "is the server answering?" check into "is the page actually working?". Many real failures return 200 OK with the wrong content: a blank page from a PHP fatal error, a "database connection error" message, a hosting provider's parking page, a maintenance screen left on by mistake.
Set a required keyword: a short piece of text that appears on the page only when it renders correctly. Good choices:
- text from the footer, such as your company name plus "All rights reserved", because the footer is rendered last and a page that crashes halfway will not include it;
- a product name or price label on a product page;
"status":"ok"for a JSON health endpoint.
Avoid text that also appears in error pages (your site name in the <title> may appear on both) and text that changes, such as dates or prices on sale. If the keyword is missing, the check fails with the cause keyword_missing. There is more on choosing keywords in keyword monitoring for pages that return 200 OK.
Step 5: Set the fail threshold
The fail threshold is the number of consecutive failed checks before an alert is sent. It protects you from one-off network blips. On a 5-minute interval:
| Fail threshold | Worst-case time to alert | Good for |
|---|---|---|
| 1 | ~5 minutes | Very stable sites where any failure matters |
| 2 | ~10 minutes | Most sites; recommended default |
| 3 | ~15 minutes | Shared hosting or sites with known occasional blips |
Start with 2. The trade-off is explained in detail in choosing the right monitoring interval.
Step 6: Turn on SSL monitoring
Enable SSL monitoring. Each check then records your certificate's issuer and expiry date, and you get a warning a set number of days before the certificate expires (7 by default) and again on its last day. Certificate errors such as an expired certificate or a broken chain fail the check with ssl_error either way. If you use Let's Encrypt, whose certificates last 90 days and renew automatically, a warning means automatic renewal has failed and you still have time to fix it. Consider raising the warning to 14 days if you might not act on it immediately.
Step 7: Connect your alert channels
Email alerts go to your account address by default. Add at least one channel you will notice faster, especially at night or on weekends.
Telegram
- Open Notification settings and enable Telegram.
- Generate a link code. It is valid for one hour.
- In Telegram, open the bot
@up2ame_botand send/link YOUR_CODE. - Back in Notification settings, the linked chat ID appears once the link succeeds.
Slack, Discord or anything else
Paste a Slack incoming webhook URL or a Discord webhook URL into Notification settings. For other tools, the generic webhook sends a JSON POST with the site, the message and details such as the status code and cause.
Step 8: Test that alerts really arrive
An untested alert channel is a guess. Do two tests.
- Test button. Slack, Discord and webhook channels have a Test button in Notification settings, and Telegram sends a test message as soon as you link it. Use them and confirm the message arrives where you expect.
- A real end-to-end alert. Temporarily change the required keyword to text that does not exist on the page, such as
uptime-test-xyz. After the number of checks set by your fail threshold (10 minutes with a threshold of 2), you should receive a down alert on every channel, including Telegram. Then restore the correct keyword and wait for the "back up" recovery notification.
This also shows you exactly what an alert looks like, so you will recognize one at 3 a.m.
Step 9: Publish a status page
Create a public status page and add your site to it. It shows current status, 30-day uptime and recent failed checks, and it is hosted on our side, so it stays reachable when your server is down. Link it from your site footer and contact page so customers can check it before emailing you. The guide to public status pages includes templates for incident updates.
What you get after a few days
The dashboard fills with data: uptime percentage, a response-time chart, a log of recent checks, and insights such as the likely bottleneck (DNS, connect, TLS, time to first byte) when the site is slow. If screenshots are on for the site, one is captured when the status changes, so you can see what visitors saw. Failed checks are labeled with a cause such as timeout, server_5xx or dns_error, which tells you where to start looking.
When you will outgrow the free plan
The Starter plan is genuinely useful for one site. Be honest with yourself about these limits:
- More than one thing to watch. A shop with a separate API, or an agency with several client sites, needs more than one monitor. Plus covers 10 sites, Professional 20.
- Faster detection. With 5-minute checks and a threshold of 2, an outage can run about 10 minutes before you hear about it. If each minute of downtime costs real money, the 2-minute (Plus) or 1-minute (Professional) intervals matter.
- Short outages. A 3-minute outage can fall between two 5-minute checks and never be recorded.
- Longer history. 30 days is enough to spot problems, but not to compare quarters.
- More reminders. If you want to be reminded more often than hourly during a long outage, paid plans allow 30-minute (Plus) or 5-minute (Professional) reminders.
Checks run from a single location, on every plan, so keep the fail threshold at 2 or more to avoid alerts caused by a network problem between the monitor and your host.
FAQ
Is free uptime monitoring good enough?
For a single personal site, blog or small-business site, usually yes. A 5-minute check with a keyword and SSL monitoring catches most real outages within about 10 minutes, which is far better than finding out from a customer.
Will monitoring slow down my site?
No. One request every 5 minutes is 288 requests a day, which is negligible for any web server. Just avoid pointing the monitor at an unusually expensive page, such as an uncached search.
Why does my monitor say "down" when the site works for me?
Check the cause code and screenshot. Common reasons are a keyword that changed on the page, a firewall or bot protection blocking the monitor, or a regional network problem. Your browser may also be showing a cached copy.
Checklist
- URL chosen: homepage, a database-backed page or a health endpoint, tested with
curl. - Email confirmed.
- Interval 5 minutes, fail threshold 2.
- Required keyword that only appears on a correctly rendered page.
- SSL monitoring on.
- At least one fast channel (Telegram, Slack or Discord) besides email.
- Test notification sent and a real down/up cycle verified.
- Status page published and linked from the footer.
All of the above works on the free Starter plan, with no card required. Create an account, confirm your email, and your first check runs a few minutes later; if you later need more sites or faster checks, the pricing page compares the plans.