Three checks in one monitor

Broken links, mixed content, caught daily.

Links rot. UptimeStatus crawls your site daily and opens an incident when it finds 404s, mixed content, or dead sitemap entries.

Nobody clicks every link after a deploy.

You rename a route, retire a blog post, or move the docs, and somewhere a link keeps pointing at the old address. Your visitors find it before you do, and search engines quietly hold it against you.

UptimeStatus crawls your site every day, breadth-first from your monitor's URL, and records the status code of every same-origin page it reaches. Anything that returns 400 or above, times out, or refuses the connection is logged as a broken link, together with the page it was found on.

Latest crawl · yourcompany.com 3 issues
/pricing/old
HTTP 404
found on /pricing
/blog/launch-post
HTTP 404
sitemap.xml
http://cdn.legacy.example/banner.png
mixed content
found on /
184 pages crawled 2 broken links 1 mixed content

Mixed content breaks the padlock.

One http:// image or script on an https:// page and browsers step in: the resource gets blocked or downgraded, and the address bar stops vouching for you. It usually sneaks in through an old CDN URL or a hardcoded asset path nobody has touched in years.

While crawling, UptimeStatus inspects every image, script, and stylesheet reference on every secure page. Each insecure resource is recorded with the page that loads it, so you can fix the reference instead of hunting for it.

Mixed content on https:// pages 2 found
http://cdn.legacy.example/banner.png
img src
found on /
http://widgets.example/chat.js
script src
found on /contact
All other resources
served over https
ok

Three features. One monitor. One price.

Some monitoring services sell broken-link checking, mixed-content scanning, and sitemap monitoring as three separate features. Here they are one daily crawl on one monitor: every crawl checks your links, your resources, and your sitemap together, and reports them in one place. No separate line items.

MIT licensed · github.com/stacksjs/status

What the crawl covers.

Your sitemap makes promises. The crawl keeps them honest.

A page can be broken even when nothing links to it anymore. If it is still listed in sitemap.xml, search engines keep requesting it, keep getting a 404, and keep drawing their own conclusions about your site.

After following your links, UptimeStatus fetches sitemap.xml and directly checks every listed URL the crawl did not already reach. Dead sitemap entries and orphaned pages get flagged in the same crawl report as everything else, and count toward the same incident.

sitemap.xml cross-check Checked
/blog/launch-post
HTTP 404
in sitemap, not linked
/docs/install
HTTP 200
ok
/changelog
HTTP 200
ok
FAQ

Broken link monitoring, answered.

How often does the crawl run?

Daily. A full-site crawl is a heavier operation than a 30-second uptime probe, so it runs on its own schedule and its own queue. Self-hosting the open-source version means you control the scheduler yourself.

What counts as a broken link?

Any same-origin page that returns HTTP 400 or above, times out, or refuses the connection. The crawler records the status code it saw and the page the link came from, so fixing it is a one-step job.

What is mixed content and why should I care?

An http:// image, script, or stylesheet loaded on an https:// page. Browsers block or downgrade these resources and mark the page as not fully secure, which is exactly the impression you do not want to leave.

How does the sitemap check work?

After the crawl finishes, every URL listed in your sitemap.xml that the crawl did not already reach gets checked directly. A sitemap URL that 404s is flagged as broken, because search engines crawl the sitemap whether or not your pages still link there.

How large a site can it crawl?

Up to 200 pages per crawl, breadth-first from the monitor URL, staying on the same origin. Sitemap URLs are checked on top of that, so more of your site is covered than the page cap alone suggests.

Will I actually get notified?

Yes. A crawl that finds issues opens an incident, and incidents route through your notification channels: email, SMS, Slack, Discord, Microsoft Teams, PagerDuty, Opsgenie, Pushover, ntfy, and webhooks.

Start monitoring in under 2 minutes.

No credit card required for the self-hosted, open-source version.