← /how-to/

How to find and fix broken links across your whole site with AI

Your checker found the broken links. AI fixes them: it requests every URL in your files, repairs each with judgment, and you approve every diff first. Try it now free → or book a demo with Curtis

The crawl finished and the report is in: 412 broken links. The checker did exactly what it promised, walked every page, tested every URL, and exported a tidy spreadsheet with a source page and a dead destination on every row. Then it stopped, because that is where the whole category stops. Every row is now a task with your name on it: open the page in the editor, find the anchor, work out where the link was supposed to go, decide what to do, save. Checkers report. Nobody fixes.

The fixing is the real job, and it needs two things the spreadsheet does not have. It needs judgment per link, because a moved page, a dead company, and a deleted PDF each want a different repair. And it needs a way to make 412 careful edits without 412 editor sessions. Done right, your content sits in local files, your AI agent tests every URL itself and writes a fix for each one that is truly dead, and every change comes back as a word-level diff you read first. Judge the routes below on three questions: who finds, who fixes, and who reads the fix before a reader clicks it.

Your options

Report-only checkers

A desktop crawler or an online audit tool is genuinely good at the finding. It walks the rendered site, catches internal and outbound dead links alike, and exports clean source-and-destination pairs. The search engine's own coverage report lists your 404s but never sees the dead outbound links inside your content. The limits are the ones that put you here. The output is a list, not a fix, and the vendors say so themselves: export the CSV, share it with the team. Free tiers cap the crawl. The list arrives padded with false positives, because plenty of healthy sites answer crawlers with 403s and 429s, so someone triages before anyone edits. A few WordPress plugins add swap-this-URL and unlink buttons, which helps, but they are single-platform and mechanical. No button mends the sentence.

Redirect managers

After a migration, a redirect manager is the right tool and nothing else comes close: one wildcard rule repairs thousands of inbound 404s at once, including arrivals from backlinks you will never control. For this job it covers less than it seems. Redirects only work for URLs on your own domain, so a dead link to a vendor's docs or a moved government PDF is not yours to redirect. The broken href also stays in your content, which leaves your internal links resolving through hops. And the lazy version, pointing everything at the homepage, fails outright: search engines read those as soft 404s and ignore them. The report gets shorter. The content stays wrong.

Hand-fixing from the spreadsheet

Working the rows by hand is the one existing route that fixes links the way they should be fixed. A person can tell a moved page from a gone one, can hunt down where the content lives now, and can reword a sentence when the link simply has to go. The problem is arithmetic. At a careful 5 minutes per row, 412 rows is more than 34 hours of editor time. So the list gets triaged down to the rows that feel important, the rest waits, and links keep dying while you work. The judgment is exactly right. The throughput makes it a job nobody finishes.

Scratch plus your AI agent

Scratch pulls your content into local files: WordPress posts and pages, Webflow CMS items, Wix Blog drafts, Intercom help articles, and Shopify product descriptions and pages, each platform a folder on your laptop. Nothing installs on the sites, not even a plugin; reads and writes go through each platform's API. Your agent then does both halves of the job. It writes a script that requests every URL in every file, which none of these platforms' APIs will do for you, separates the truly dead from the bot-blocked, and repairs each real one with the hand route's judgment: re-point, replace, or remove and mend the sentence. Every fix returns as a word-level diff, nothing publishes until you approve it, and a published fix reverts per item. The trade is stated plainly: 412 diffs is 412 reads, because a wrong fix is worse than a 404. Scratch will not skim them for you.

Option Finds dead links Fixes the content Dead outbound links Review before live
Report-only checkers Yes, plus false positives No Found, never fixed Nothing to review
Redirect managers No No, the href stays No No
Hand-fixing Needs the report Yes, at 5 minutes a row Yes You are the review
Scratch plus your agent Yes, it requests every URL Yes, in the source Yes Every fix, as a diff
  1. Scratch pulls your content into files. Connect the platforms where the links live. WordPress posts and pages, Webflow CMS items, Wix Blog drafts, Intercom articles, and Shopify descriptions and pages land as folders of plain files, side by side on your laptop. Nothing live has changed, and the agent never holds a credential to any of it.
  2. Your agent finds the dead links and writes the fixes. Point Claude, Codex, Cursor, or Copilot at the folders and give it the brief. Check every link in these folders. Where the page moved, point the link at its new home. Where the source is gone, swap in a live equivalent or the archived copy. Where nothing fits, remove the link and reword the sentence so it still reads. This is where the file route earns its keep: the agent greps every href out of every file, dedupes the list to distinct URLs, and writes a small Python script that requests them all concurrently, thousands of checks in minutes from your laptop where one-at-a-time would take hours. None of these platforms' APIs offers any of that. Webflow's data API, for one, defaults to 60 requests a minute, and checking a URL is not an endpoint it has. The agent then triages, because a 403 from a site that walls off bots is not a dead link, and fixes what is. It does 99% of the work, link by link.
  3. You review every diff and publish. Each repaired sentence sits next to the original with the changed words highlighted, so the question in front of you stays small: is this the right destination, and does the sentence still read. Validators run first, if you set them, for example a rule that no approved file still contains a URL from the dead list, so your reading goes to judgment calls instead of bookkeeping. Approve per item, and Scratch writes only the approved items back through each platform's API, with a log of what went out. The last 1%, deciding where your readers land, stays with you. Reversal is per item: reject a published fix and the original sentence, link and all, comes back.

Start with one folder. The help center is a good first pick, since every dead link there sits in front of a customer who is already stuck. When the first diffs read right, rerun the same brief on the blog and everything else.

What counts as a fix

Three repairs cover nearly every dead link, and choosing between them is the judgment half of the job.

Questions people ask

Do I still need a separate checker tool?

No. The agent can do the discovery itself, because the content is sitting in files: extract every URL, request each one, keep the failures. If you already have a checker report, even better. Hand the agent the CSV and it verifies every row before touching anything, which clears the false positives for free.

Bot blocking. Many healthy sites answer automated checkers with 403 or 429, and at least one large professional network answers every bot with a 999, while the same pages load instantly for a person. Checker reports leave that triage to you, row by row. An agent runs it in the same pass, leaves the ambiguous cases unfixed, and lists them for a human call.

Yes. That is the case nothing else covers. You cannot redirect someone else's domain, and a checker can only tell you the link is dead. Editing your own content is the one repair available, and it is exactly what the agent does in your files: re-point, replace with a live or archived source, or remove and reword.

Can I see every fix before it goes live?

Yes. Each fix shows the old URL, the new URL, and any reworded sentence with the changed words highlighted, and nothing publishes until you approve it. The agent only ever touches files on your laptop and never sees a credential; Scratch holds the connections to your sites.

What if the AI picks the wrong replacement?

Reject it. A wrong fix is worse than a 404, because a 404 is at least honest, so no fix ships unread. The diff shows the old URL and the new one side by side, and clicking through the doubtful ones is part of the review. A fix that still slipped through reverts per item after publish, original sentence and all.

Does this work across WordPress, Webflow, Wix, Shopify, and Intercom at once?

Yes. Each platform pulls into its own folder, and the same script walks all of them, so a dead URL that appears in your blog and your help center gets found once and fixed everywhere. Two honest limits: in Webflow, Scratch edits CMS items and page metadata, not text built into static Designer pages, and in Wix it edits the draft side of blog posts. A platform not listed here is not supported yet; tell Curtis what you need.

Can I undo a fix after it publishes?

Yes. Scratch keeps the original next to every published change, per item. Reject a published fix and the old link and sentence go back, no backup file required.

Do I need to know Python?

No. The agent writes the script; you write the brief in plain English and read the diffs. If you can review a tracked-changes document, you can run this loop.

Constantly. Studies put link decay anywhere from a few percent to more than 10% a year, and whatever the true number is on your site, the report you cleared in January grows back. That is the argument for a loop you can rerun instead of a cleanup you survive once. The second run is a brief you already wrote.

See it on your own site

The fastest way to believe the speed is to watch your own dead links get found. See it run on your links →, or download Scratch free, connect one platform, and let your agent check its first thousand URLs this afternoon. Scratch is free to try, and the AI is whichever agent you already pay for.

See it run on your own content.

Curtis runs these calls himself. Thirty minutes, no pitch, no slides. He connects your platforms live and shows you your content as an editable, reviewable diff. Bring anything sticky: a refresh, a migration, or a rebrand.

See it run on your content → or download it free