In Action · Something looks broken
Links are going nowhere
“Links are going nowhere.” Or: “Some of our links are dead.”
A dead link costs three things at once — the visitor who hit it, the trust they had a second earlier, and any search value the destination page was supposed to receive. This follows every link and image on a page, or the whole site, to its real, final destination and reports exactly which ones don't resolve, because whether a link works is a fact this can check completely, not a judgment call that needs a person's eyes.
Watch it run

Are any links or images broken?
Watch OpenCode follow every declared homepage link and image, separate a bot challenge from a defect, and retain complete coverage.
Check every link and image on rauplasticsurgery.com. Tell me what is broken, challenged, or redirected. Read only.
What to ask for
See it work
A real run of Link & image checker:
FAIL — 1 page(s) on toolkit-tests.pages.dev · 1 unique broken target(s)
✗ link: 404: https://toolkit-tests.pages.dev/links/does-not-exist-404.html (1×)
4 links · 0 images · checked 4+0
[error] 1 broken link(s) — 404: https://toolkit-tests.pages.dev/links/does-n…
playbook: local fallback
report: ./out/link-and-image-checker-link-and-image-checker.html
text: ./out/link-and-image-checker-link-and-image-checker.txtThe captured report, exactly as a run hands it to a client —open the full report ↗
Seen in the wild
A published article is carrying an unfilled template link.
Card 82529112718 · Added to Site · 3 May
A hair-restoration comparison article
This is the far end of the content pipeline: written, edited, approved, built, checked and live since the start of May. The article itself is in good order — 1,318 words, and the freshness check passes. What shipped around it is the part nobody re-opens.
What the link check pulled back
| Links on the page | 319 |
|---|---|
| Broken | 1 |
| Its address ends in | /%url% |
| What it returns | 400 |
| Empty or hash-only links | 12 |
| New-tab links unguarded | 22 |
| Verdict | FAIL |
“%url%” is a template placeholder that was never filled in. It has been a live, clickable, broken link on a published article for three months.
What is on the page right now
- A link whose address is a tokenBroken
- 12 links that go nowhere at allBroken
- 22 outbound links left unguardedSecurity
- 319 links on a single blog postSearch
A dead link costs three things at once: the visitor who hit it, the trust they had a second before, and whatever SEO value the destination page was meant to receive. It is also one of the easiest things to check exhaustively, because “does this resolve” is a fact, not a judgement call.
- Run the link check for the affected page, or the site’s full URL list if the report suggests it is not a one-off.
- Sort the confirmed-broken links and images by source page and by the final response the report describes — a 404 and a redirect chain that dead-ends are different repairs.
- [manual] Fix each one: correct the source URL, replace the missing asset, or deliberately remove the link. When the intended destination is ambiguous, confirm it with the page owner rather than guessing at the closest match.
- Rerun the same scope and attach the remaining findings — a link the check couldn’t reach (a bot wall, a timeout) is reported as unresolved, never quietly counted as repaired.
An external link refusing the check is not our defect
A third party blocking a scripted request is their firewall doing its job, not something the migration or the page introduced. The report says so explicitly, so it doesn’t read as a false alarm on someone else’s site.
What this does not cover
Whether a working link points at the *right* page. It follows every link and image to its real final status from the delivered HTML, with no browser, so a link that only breaks after JavaScript runs is outside it, and a link that resolves to the wrong content still reports clean.