pingy.io

Pingy.io tells you in real time whether your website is actually up — checking response time, HTTP status, SSL, and a live full-page screenshot from multiple locations around the world. Run a free instant check on any site, or set up continuous multi-region monitoring with uptime history, keyword and SSL-expiry alerts, and instant notifications when something goes down. Full diagnostics on why it might be down too!

Pingy is a globally distributed website-monitoring platform built to answer one deceptively hard question with confidence: is this site really up? Most monitors check from a single place and trust whatever a single request returns. Pingy treats that as unreliable — networks blip, anti-bot systems lie, and one region's view isn't the whole truth — so it's engineered around independent vantage points, cross-checking, and honest measurement.

A control plane and a global edge

The architecture splits cleanly into two tiers. A central control plane runs the application, database, scheduling, and quorum logic, while a fleet of lightweight regional pollers does the actual probing from points around the world — currently the US East and West coasts, Paris, Frankfurt, São Paulo, Sydney, and Tokyo. The control plane is a Laravel 13 / PHP 8.4 application on PostgreSQL 16 and Redis 7, fronted by Caddy with automatic TLS; the pollers are small Dockerized agents that carry no state of their own.

Critically, the pollers use a pull model. They never accept inbound connections; instead each agent polls the control plane every few seconds, leases a batch of jobs, runs them from its own network egress, and posts results back. This keeps the edge simple and firewall-friendly (several pollers run on residential and colocated hardware behind NAT), and it scales horizontally — adding a region is just standing up another agent.

Reliability by design

Every job is distributed through a Redis-backed queue with lease-as-acknowledgement semantics. When a poller takes a job it's recorded in flight with a deadline; if it doesn't report back in time, the job is automatically reassigned to a different poller, and the one that stalled is temporarily benched. A backpressure guard ensures a backed-up region can never pile up duplicate work — a given target is never re-queued until its previous check returns.

For monitored sites, checks fan out to multiple regions simultaneously, and the verdict is decided by quorum rather than any single result. A site is only marked down when independent regions agree, which eliminates the false alarms that plague single-point monitors. Before that, each check passes through a verification layer that retries transient failures, runs a self-health "canary" so the system never blames a site for its own connectivity problems, and cross-checks DNS against multiple resolvers — including Pingy's own recursive resolvers running at the edge — so a flaky lookup is recognized as inconclusive instead of an outage.

Accurate, honest measurement

Response time is measured as time-to-first-byte — the server's true responsiveness — rather than full-page download, which conflates server speed with page weight. HTTP checks fetch only the document (never images, CSS, or JavaScript), run concurrently so one slow site can't stall a batch, and present a real browser fingerprint so large sites don't reflexively block them. When a site sits behind aggressive anti-bot protection and returns a 403 to automated requests, Pingy recognizes the pattern and reports it honestly as reachable-but-gated rather than falsely "broken."

Live screenshots and visual proof

A dedicated screenshotter microservice built on Node and Playwright renders full-page WebP captures plus extracted SEO metadata. These run on residential-IP pollers, which slip past the bot defenses that block datacenter traffic — so Pingy can show a real rendered page even for sites that refuse plain HTTP probes. Captures are throttled, fail over across renderers if one is blocked, stored on S3 with lifecycle expiry, and screened for unsafe content via image moderation.

Platform and integrations

Alerts flow through a unified notification layer supporting email, SMS, Slack, Discord, Teams, Telegram, Pushover, webhooks, and 100+ services via Apprise, with flap-damping so brief blips don't spam you. Billing is fully embedded — an on-site Stripe Payment Element with per-site, mix-and-match plans — and a cost-aware public API exposes status and live checks programmatically.

The result is a monitoring system that behaves less like a single pinging script and more like a coordinated, self-healing global network — one that distributes work intelligently, verifies before it alarms, measures what actually matters, and shows you the proof.