Broken Link Checker

Every dead link on your site has a status code. Hoppla helps you find it before a visitor does.

Hoppla crawls your site, follows every internal link, and writes down the ones that don't answer: the HTTP status or error each returned and the page it's sitting on. You decide how deep it goes and how hard it knocks. It runs in the background and reports back when the run finishes. This one's advisory: a clean list of what's broken and where, not a 3am downtime page.

LINK / SAMPLE OUTPUT

crawl acme.io · 487 pages · 6 broken (3×404 2×timeout 1×500) · 4m12s

Fictional values. Not a live measurement.

01 / What it does

Every internal link tested, every failure named

Hoppla starts at your URL and crawls outward, following the links on your own site page by page and testing each one for reachability. A link that doesn't answer gets recorded with the exact HTTP status it returned (a 404, a 500) or the error (a timeout) and the page it was found on. You set how far the crawl goes and how hard it hits. The run happens in the background, and the report lands when it's done.

What’s included

  • Crawls the links on your own host, testing every one for reachability
  • Each broken link recorded with its HTTP status code and the page it was found on
  • Max pages tunable 10–5,000 (default 500), max depth 1–10 (default 10)
  • Request rate tunable 0.5–10 req/s (default 2) to match your origin's tolerance
  • Runs async in the background: the check returns immediately, results land on completion
  • 30-minute run deadline; a crawl that hits it stops and keeps its partial results
  • SSRF-guarded crawler; advisory only, never opens a downtime incident
02 / How it works

Under the hood.

01

Crawl outward from your URL

Hoppla starts at your site and walks the link graph, discovering pages as it goes and collecting every link on your own host along the way. You cap it with max pages (10–5,000, default 500) and max depth (1–10, default 10), so it covers what matters without crawling forever.

02

Test each link, record the status

Every link it finds gets requested for reachability. One that fails is logged with the HTTP status it returned and the page it sits on, so you get '404 on /pricing', not just a count. Links to other hosts, including other subdomains, are skipped, so the crawl stays on your site.

03

Run in the background, on your throttle

The check returns immediately and the crawl runs async. Request rate is yours, 0.5 to 10 req/s, default 2, so a fragile origin doesn't get hammered. A 30-minute deadline guards every run. A crawl that hits it stops and reports what it found on the pages it reached.

04

Results land when the crawl finishes

When the run completes, the broken links arrive as a list: each unreachable URL, its status code, and where it was found. This is advisory. A content-quality report you act on during the day, never a downtime incident that pages your on-call.

03 / Why it matters

The part that actually moves the needle.

015,000 pages

Covers the whole site, not the homepage

A spot-check of your top pages misses the dead link buried three clicks deep in a blog post from 2022. Hoppla crawls up to 5,000 pages and 10 levels down, so the link rot you'd never click your way to still surfaces.

02status code

Every break is named, not just counted

A number that says '6 broken links' is a chore. Hoppla records each one with its HTTP status and the page it's on. A 404 on a missing redirect target and a flaky 500 from a backend route are two different fixes, and you can tell which is which on sight.

030.5–10 req/s

It crawls on your terms, not its own

Page count, depth, and request rate are all dials you set. Throttle down to 0.5 req/s for a delicate origin, or open it up to 10 for a static site that can take it.

04 / For every team

Whoever you are, this lands differently.

Solo SaaS founder

Your docs are your support team. A dead link in the install guide quietly drops readers on a 404, right when they're trying to get started. You're never going to click through every doc page yourself. So point a crawl at the docs, set it loose in the background, and get back the exact pages where links rotted, each with the status code that broke them. Fix the three that matter, skip the noise.

Small agency

You just migrated a client's site and the URLs all changed. Half the internal links and every old anchor now land somewhere they shouldn't. Crawl the new site once, hand the client a clean report (here are the 14 links the migration broke, here's what each one returns) and fix them before launch instead of after a stakeholder finds the first 404. That's the deliverable that turns a risky migration into a tidy one.

Large agency

Across hundreds of content-heavy client sites, link rot is constant and it's nobody's job. Schedule the crawl per site and let it run in the background at a request rate that won't disturb production. The report comes back with each broken link and its status code, ready to drop into the monthly report the client already pays for. So an account manager can say 'we caught and fixed 23 dead links this month' instead of waiting for the client to report the first one.

Reseller / hosting provider

A scheduled link audit is a content-quality tier you can sell on top of hosting, fully under your own brand and domain. Each customer gets a recurring crawl with a branded report of what's broken and where, no Hoppla name anywhere in it. And because you set the request rate per crawl, even a customer on shared infrastructure gets audited at a rate their site can take.

Switching tools

Coming from Oh Dear? Bring your monitors with you.

Import your Oh Dear monitors into Hoppla. Then run both side by side for 24 hours or 7 days before you switch.

  • Guided import
  • Shadow run before you switch
  • Coverage varies by provider
Import from
  • Oh Dear
  • Uptime Robot
  • Better Stack
  • Pingdom
  • StatusCakeBeta
  • CronitorBeta
  • Healthchecks.ioBeta
  • Statuspage

The importer opens in your workspace once you have access.

Get early access
FOR HOSTERS & RESELLERS

Sell scheduled link audits as a content-quality add-on, reports under your brand.

See the reseller program
05 / FAQ

Straight answers.

How is this different from Dead Link Checker?

The crawl-and-report mechanics are similar. The difference is that in Hoppla the link check isn't a separate tool you log into on its own. It runs on the same monitor as your uptime, SSL, and DNS checks, with one bill and one alert config. And you control the crawl precisely: page count, depth, and request rate are all dials, so it scales up to a 5,000-page site or backs off for a fragile one, instead of running one fixed way.

Will the crawler hammer my site?

Only as hard as you let it. Request rate is yours to set from 0.5 to 10 req/s, and it defaults to a gentle 2. Together with the max-pages cap, you decide exactly how much load the crawl puts on your origin: drop it low for delicate infrastructure, open it up for a static site that can take it.

Does a broken link page my on-call at 3am?

No. The broken link check is advisory. It produces a content-quality report, not a downtime incident, so it won't fire your outage alerts or post to your status page. Link rot is something you schedule and handle during working hours, not an emergency that wakes you up.

Why does the check finish before the results show up?

Because the crawl runs async in the background. The check returns immediately so it isn't blocking anything, and the crawler keeps working through your pages. When it's done, the broken links land as a list with their status codes. Every run is guarded by a 30-minute deadline, and one that hits it stops and reports what it found on the pages it reached.

Your next step

Find the dead links before your visitors and Google do.

Checks, alerts and status pages in one workspace. Now in early access: join the list for an invite.