UptimeRobot

uptimerobot.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Uptime checks from outside your infrastructure: it pings your sites on an interval and tells you when one stops answering, with a status page included.

Promptfree, for everyone, and the only version there is
Build me uptime monitoring that replaces UptimeRobot — and put it somewhere that is not my own infrastructure, which is the only rule that matters.

Read this first: a monitor that runs on the machine it watches tells you nothing, because when the machine dies so does the monitor. Rent the cheapest virtual machine you can find, at a different provider, in a different network, and run this there. That single decision is most of the product.

STACK
- Node 20+ with Fastify
- SQLite through better-sqlite3, WAL mode
- A scheduler in its own process
- Caddy in front, and the whole thing small enough for the smallest instance available
- Optional extra probes: the same agent, on two more cheap machines elsewhere

THE DATA MODEL
- monitors: id, name, kind, target, method, headers_json, body, expected_status, expected_body, keyword_absent, interval_seconds, timeout_ms, regions_json, confirmations_required, degraded_ms, is_active, muted_until, tags_json
- checks: id, monitor_id, region, status, response_ms, dns_ms, connect_ms, tls_ms, ttfb_ms, status_code, error_kind, error_message, tls_expires_at, checked_at — append-only
- incidents: id, monitor_id, opened_at, closed_at, cause_check_id, regions_json, confirmed_at
- alerts: id, incident_id, channel, target, sent_at, acknowledged_at, error
- maintenance: id, monitor_id, starts_at, ends_at, note
- status_pages, components, subscribers — the same shape as any status page, served statically
- Checks kept in full for a window and then reduced to hourly summaries computed from the rows before they are pruned

CHECK KINDS
- HTTP with a method, headers, a body and assertions on status, a string present, a string absent, or a JSON path. The absent-string check is what catches an error page returning 200, which is the outage nobody notices
- TCP for a port, ICMP where the host allows it, DNS resolution against an expected answer
- TLS certificate expiry as its own check, warning weeks in advance. An expired certificate is an outage you scheduled for yourself
- Timing split into DNS, connect, TLS and time to first byte, because 'it is slow' is not actionable and 'TLS takes two seconds' is

NOT CRYING WOLF
- Confirm before opening an incident: N consecutive failures, and where there is more than one probe, agreement from more than one
- Re-check immediately from a different place before declaring anything. Looking again is the cheapest false-alarm prevention there is
- A degraded threshold separate from the timeout, so slow is a state rather than silence
- Flapping suppressed: repeated failure and recovery produces one incident, not twenty
- Alert on recovery too, always, in the same channel
- Muting always has an end time. An indefinitely muted monitor is a monitor that has been quietly deleted

ALERTS
- Email, webhook, chat, and a shell command for anything else
- Escalation to a second target after N minutes unacknowledged, with acknowledgement from a link in the alert that needs no login
- Quiet hours per monitor, with a severity that ignores them
- One alert per incident, not one per failed check
- The alert path must not depend on the thing being watched. If it emails through your own mail server, and your own mail server is what is down, you will hear nothing — use a different provider for alerts and say so in the README

THE STATUS PAGE
- Components mapped to monitors, 90 days of history, uptime with its window and definition written beside it
- Incidents with a written update history, and maintenance announced in advance
- Rendered as static files on every change, so it serves even if the application is not running
- Subscribers by email, webhook and RSS, per component, with one-click unsubscribe

BEING SMALL
- The whole point is that this runs on the cheapest machine available. One process, one SQLite file, no browser, no queue system
- A hundred monitors on a one-minute interval is a hundred requests a minute, which is nothing. Do not build for a scale you do not have
- The scheduler reads due monitors, fires them with a concurrency cap, and records the results. That is the loop

WATCHING THE WATCHER
- A dead-man's switch: the scheduler pings a free external service on every tick, and that service alerts if the pings stop. Otherwise a crashed monitor looks exactly like a healthy site
- Disk and memory checked, and the database pruned on a schedule

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, SMTP_URL, SESSION_SECRET, DEADMAN_URL, PROBE_TOKEN_SALT
- Migrations on boot, each once
- Nightly backup off the machine — a small one, since the value is the incident history rather than the checks
- Health endpoint reporting the scheduler's last tick and every probe's last contact

WHAT MATTERS MOST
Where it runs and the dead-man's switch. Deploy it somewhere unrelated to what it watches, make the alert path independent too, and set up the external check on the checker before you rely on any of it.

Give me the repository, the scheduler, the probe agent, the static status page, migrations, .env.example, and a README whose first section is where to deploy it.

What you lose

  • Checks running somewhere entirely separate from your own hosting, which is the only place a monitor is worth anything
  • Several check locations, so a regional network problem is distinguishable from an outage
  • Alerting by phone and chat with escalation on the paid tiers

If you would rather not build

  • OpenStatus, monitoring plus a status page
  • A cron job with curl, which genuinely works

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$7/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Uptime Kuma

$0

Self-hosted uptime monitoring with a status page and many alert channels.

louislam/uptime-kumafree · open source

Gatus

$0

Health checks defined in YAML, one small binary, with conditions and alerts.

TwiN/gatusfree · open source

Why this verdict

our own opinion · changed only by a person

87/100

Verdict yes at 87. An HTTP request on a timer. The heartbeat and the hosting rule are the two things that make a home-made monitor trustworthy.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 3/day
views012330 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about UptimeRobot

answered from the record above

Is UptimeRobot free?

No — the plan we track is $7 a month. Solo at around $7/month billed monthly; a free tier covers 50 monitors at five-minute intervals.

Can you replace UptimeRobot by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 87 out of 100, build time one session. Read what you lose before you decide.

How much does UptimeRobot cost?

$7 a month on Solo — $84 a year. Recorded 10 Aug 2026.

What do you lose by replacing UptimeRobot?

Checks running somewhere entirely separate from your own hosting, which is the only place a monitor is worth anything; Several check locations, so a regional network problem is distinguishable from an outage; Alerting by phone and chat with escalation on the paid tiers. If any of those carry weight for you, keep paying.

Is there an open-source alternative to UptimeRobot?

Yes: Uptime Kuma, Gatus. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 25 in Monitoring & uptime

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc