Free checklist
Backlink Monitoring Checklist
The eight checks that should run on every backlink, every monitoring cycle. Print it, paste it into your standard operating procedure, or use it as the specification for your own monitoring script.
Each check is explained in full below, along with what to do when it fails and how often to run the whole set.
We will email a PDF and a Notion import version. No spam, unsubscribe in one click.

Definition
What backlink monitoring means
Backlink monitoring is the scheduled, repeated verification that links you have built are still present, still pointing at the right target, still passing authority, and still on a page search engines can index. The key word is repeated. A one off audit tells you the state of your link profile on the day you ran it, and every day after that the number decays quietly. Monitoring is what converts a link count from a claim into a measurement, and it is the only way to derive link lifetime, which is the input every ROI calculation depends on.
01
Audit versus monitoring
An audit is a snapshot. Monitoring is a cadence. Only the second one can tell you when something changed.
02
What it produces
A verified inventory, a detection timestamp for every loss, and a survival rate you can put in a report.
03
Why cadence matters
Recovery outreach works within weeks of removal and rarely after months. Detection speed is most of recovery success.
04
The minimum viable version
A spreadsheet with a last checked column and a recurring calendar block. Genuinely fine under roughly 50 links.
The eight checks
- 1HTTP status of the source page
- 2Link presence in the served HTML
- 3Anchor text against what you agreed
- 4Rel attribute
- 5Page level noindex directive
- 6Canonical URL of the source page
- 7Your own target URL still resolves
- 8Last checked timestamp, logged
Each one is explained in full below, with what to do when it fails. LinkSwapy runs all eight automatically on the cadence you set.
The checklist
Each check, and what it catches
Run them in this order. The early ones are cheap and catch the most, the later ones catch the problems that are hardest to see by eye.
HTTP status of the source page
A 200 means the page is served normally. A 404 or 410 means the placement went with the page. A 301 or 302 needs following, because a redirect into a relevant replacement that still carries your link is fine, while one landing on a homepage usually means your link was collateral damage in a migration.
Link presence in the served HTML
Is your target URL actually in the markup a crawler receives. Note the distinction from what you see in a browser: a link injected by JavaScript after load may never appear to a plain fetch, and may not be counted reliably.
Anchor text against what you agreed
Drift is common, especially with insertions, where an editor rewrites the surrounding sentence and your anchor becomes generic. Rarely fatal, easy to correct in the first month, awkward to raise in the sixth.
Rel attribute
dofollow, nofollow, sponsored, or ugc. A placement that quietly switched to nofollow is the most common form of value loss that looks like nothing happened, because the link is still visibly there.
Page level noindex directive
Check the meta robots tag and the X-Robots-Tag header. A noindexed page is excluded from the index, so your link passes nothing at all while appearing completely healthy to anyone eyeballing the page.
Canonical URL of the source page
If the page canonicals elsewhere, its signals consolidate at that other URL. Worth checking whether your link also exists on the canonical target, because sometimes it does and you are fine.
Your own target URL still resolves
The embarrassing one, and it fails more often than people admit. You restructured your site, the page a partner linked to now redirects twice or returns a 404, and you wasted a placement through your own housekeeping.
Last checked timestamp, logged
Not a check so much as the thing that turns checks into a record. Without it you cannot distinguish a link verified yesterday from one nobody has looked at since spring, and you cannot compute survival rate at all.
Cadence
How often is often enough
The right frequency is not one number, it is a function of what a placement is worth and how fast you would need to act. Treating every link identically is the most common mistake, and it produces either wasted effort on a long tail nobody cares about or dangerously slow detection on the links that matter.
Tier one is the handful of placements you would genuinely fight to keep: high authority, on trafficked pages, pointing at commercially important targets. These deserve daily checks and alerts that reach a named person rather than a shared inbox. If one of these disappears, you want to know today, because the recovery window is measured in weeks.
Tier two is the working majority of your inventory. Weekly is a sensible floor, every few days is better. This tier is where automation earns its keep, because the volume is too high for manual work and the individual links are not important enough to justify anyone's calendar.
Tier three is the long tail: old placements, low authority, links you would not chase if they vanished. Monthly is fine, and the reason to check them at all is aggregate reporting rather than recovery. You want the survival number to be accurate even for links you have no intention of defending.
One caveat on frequency worth stating plainly. Checking more often does not reduce link loss, it only reduces the time between loss and knowing. That distinction matters when you are deciding whether to pay for a tighter cadence: what you are buying is a shorter detection gap, and the value of that gap depends entirely on whether you actually act on the alerts.
A workable tiering
- Tier one: daily, alerts to a named owner
- Tier two: weekly or every few days, automated
- Tier three: monthly, for reporting accuracy
- New placements: verify once on publication, then normal cadence
- After any of your own site migrations: full sweep of targets
- Before any client report: confirm the numbers you are about to send

Manual process
Running the checklist by hand
If you are under about 50 placements, this is genuinely the right approach and there is no need to pay for anything. Past that, the checks run on a schedule. Here is how to do it without it eating a day.
- 1
Sort by last checked, oldest first
This single habit corrects the main bias in manual monitoring. Left to instinct you check recent links, which are the least likely to have died. Working oldest first sends you where the problems actually are.
- 2
Open the source page and search for your target
Use find on page for your domain rather than scanning visually. Faster and it catches links buried in places you would not look, like an author bio or a footnote.
- 3
View source for the parts you cannot see
The rel attribute, the meta robots tag, and the canonical are not visible on the rendered page, and what each attribute actually does is worth knowing before you react to one. This is the step people skip, and it is where the silent failures hide.
- 4
Record the outcome including passes
Update the last checked date on every row you touch, not just the failures. A row with no timestamp is a row you cannot trust, and the whole value of the record is knowing which links have genuinely been verified.
- 5
Batch the failures into one outreach session
Do not stop to write emails as you go. Finish the sweep, group the failures by cause, then write the outreach in one sitting. Context switching between checking and writing is what makes this take three hours instead of one.
- 6
Diagnose before you contact anyone
Match the cause to the ask, using the lost backlink recovery email template. A moved page needs a different email from a deliberate removal, and a nofollow switch usually needs no email at all. Sending the wrong one wastes the single approach you get.

Building it yourself
If you would rather write the script
The eight checks are simple enough that scripting them is a legitimate option, and we would rather you did that than kept guessing about your inventory. A few notes from having built this.
Fetching and parsing is the easy part. An HTTP client and an HTML parser will get you link presence, anchor text, rel attribute, meta robots, and canonical in maybe fifty lines. The traps are elsewhere.
A broken monitor looks exactly like a clean bill of health. Alert on the check not running, not only on what it finds.
Follow redirects deliberately rather than letting your client do it silently. You need to know both that a redirect happened and where it landed, because a 301 into a relevant page that still contains your link is a pass, while a 301 to a homepage is a loss. A client that transparently follows redirects will report a 200 and hide the thing you needed to see.
Set a real user agent and respect robots directives. Also expect to be blocked sometimes: bot protection will refuse some fetches regardless of how politely you behave, and your script needs a third state beyond pass and fail. Recording could not check is honest. Recording it as a failure will have you emailing editors about links that are perfectly fine.
Store results as a time series rather than overwriting a status column. This is the decision that determines whether you can answer the interesting questions later: when did this link die, what is our survival rate at twelve months, which publishers have the worst retention. Overwriting gives you a current state and destroys the history that makes monitoring worth doing.
Then diff and alert on changes only. Nobody reads a report that lists every passing link every week. The output that gets acted on is a short list of what changed since last run, which means storing the previous state and comparing rather than re-reporting the world.
Where a homegrown script tends to break down is not capability, it is maintenance. It runs fine for four months, then a dependency changes or the cron job silently stops, and because a broken monitor looks exactly like a clean bill of health, nobody notices for weeks. Build in a heartbeat that tells you the check ran, not just that it found nothing.
Terminology
Fields and terms
Plain definitions for everything the checklist references.
- HTTP status
- The response code from the source page. 200 healthy, 404 and 410 gone, 301 and 302 need following to see where they land.
- Link presence
- Whether the target URL appears in the served HTML. The core check, complicated by JavaScript injected links.
- Rel attribute
- dofollow, nofollow, sponsored, or ugc. Determines whether ranking authority passes, and it changes without notice.
- Meta robots
- The page level directive controlling indexing. A noindex value means the page and your link carry no ranking signal.
- Canonical URL
- The version of a page a site declares primary. If it points elsewhere, that is where the page's signals consolidate.
- Redirect chain
- Multiple hops between the requested URL and the final destination. Follow it fully before deciding a link survived.
- Soft 404
- A page returning a 200 status while displaying a not found message. Passes a naive status check and fails everything meaningful.
- Survival rate
- Share of a cohort of links still live after a given period. The output a monitoring record exists to produce.
Questions
Frequently asked questions
How often should I run these checks?
Weekly as a floor for anything you care about, daily for placements you would actively fight to keep. Tier your inventory rather than treating it uniformly: a handful of high value links deserve tight cadence, and a long tail can run monthly. Manual weekly runs across a hundred or more links is not sustainable, which is the honest argument for automating it.
Can I script this myself?
Yes, and it is a reasonable weekend project. The eight checks are well defined and a Node script with an HTML parser covers most of them. The hard part is not the fetch. It is scheduling, storing results over time, diffing against the previous run, surfacing only what changed, and not producing a 500 line CSV that nobody reads on Monday morning.
Which check catches the most problems?
Link presence catches the most outright losses, and rel attribute catches the most silent value loss. If you only had time for two, those are the two. The canonical check catches the fewest problems but the ones it catches are the most invisible, since the page looks perfect when you visit it.
Should I check links I built years ago?
Especially those. The instinct is to check recent placements because they are top of mind, and it is backwards. Links mostly die well after publication, during redesigns, content audits, and editor changes. Sorting your inventory by last checked date, oldest first, corrects for that bias automatically.
What is a reasonable failure rate to expect?
We are not going to invent a number for that, because it depends heavily on the kind of sites you build on and how old your inventory is. What is consistent is that teams running a full check for the first time on a mature link set find more problems than they expected, and most of those problems are rel attribute changes and noindexed pages rather than outright removals.
Does a redirect mean the link is lost?
Not necessarily, and this is worth handling carefully in any script. Follow the chain. If the final destination is a relevant page that still contains your link, the placement survives with a little friction. If it lands on a homepage, a category page, or an unrelated URL, treat it as a loss and diagnose it as a migration casualty.
How do I turn this into a team process?
Assign an owner, put a recurring block on their calendar, and work the list oldest checked first. Record the outcome of every check including passes, because a check with no record is indistinguishable from a check you skipped. Then set a rule for what triggers outreach, so a detected loss becomes an action rather than a note.
Related
Tools and further reading
Use the status checker for a single link, and the recovery template for what to send when a check fails.
Backlink status checker
Run these checks against one placement, free.
Read moreRecovery email template
What to send when a link comes out of an article.
Read moreBacklink monitoring
The automated version, with cadence by plan.
Read moreLost link recovery
Detection, recovery queue, and outreach with contacts attached.
Read moreLink exchange tracker
Free spreadsheet with the columns worth having.
Read moreFor in-house teams
Why protecting existing placements usually beats new acquisition.
Read moreRun all eight checks automatically
LinkSwapy runs the full checklist on every placement, keeps the history so survival rate is measurable, and alerts on changes rather than re-reporting everything.