A backlink audit ends with a spreadsheet and a question: now what? Most tools answer with a red number labelled “toxic” and a button that builds a disavow file. In my experience, that button is the wrong place to start for nearly everyone.
This post is part of my AI-powered backlink strategy guide, and it picks up where the backlink audit leaves off. For each kind of finding: what to do, who does it and how much effort it deserves. The examples come from mlforseo.com’s own profile, which I pulled on 7 November 2026 with Claude and the DataForSEO MCP server and scored with a Python notebook, plus a redirect clean-up I did on my personal site the same day.
On this page
What “toxic backlinks” means, and what Google says
“Toxic backlinks” is a tool term. Semrush’s Backlink Audit, for example, checks links against 45+ toxic markers and rates a profile’s toxicity as high when more than 10% of its links are toxic. These scores are useful for sorting a long list, but they are a vendor’s opinion. Google’s view is in three places:
- Spam links are mostly ignored. Since the December 2022 link spam update, SpamBrain, Google’s AI-based spam system, detects sites buying links and sites used to pass them on, and works to neutralise the impact of unnatural links.
- Disavow is for a narrow case. Google’s disavow help page says most sites will not need it: use it only for a considerable number of spammy, artificial or low-quality links that have caused, or are likely to cause, a manual action. Google calls it an advanced feature that can harm your performance if used incorrectly.
- Manual actions are visible. If a reviewer has acted on links pointing to your site, Search Console’s Manual actions report shows “Unnatural links to your site”. If that report is empty, there’s no manual action to clean up.
John Mueller has been blunter. In February 2024 he said you’re not going to get your rankings back by following a tool’s report or disavowing those links, and in May 2024 he said toxic links are a concept made up by SEO tools so that you pay them regularly.
So my rule is simple. Links you didn’t build and didn’t pay for: ignore them. Links that you, or someone acting for you, built to manipulate rankings: get them removed, and disavow what you can’t remove.
The worked example: more than 1,100 spam links I’m ignoring
On 7 November 2026 DataForSEO reported 2,611 backlinks to mlforseo.com from 288 main referring domains. More than 1,100 of those backlinks were nofollow adverts for link sellers on Telegram, and another 26 were followed links advertising “PBN backlinks” with mlforseo.com in the anchor. My notebook put 213 of the 288 domains (74%) in likely spam, and 161 of those belonged to three link-selling networks advertised on Telegram.
A toxicity tool would light up red. I’m doing nothing, for four reasons:
- Nobody at MLforSEO bought or built them. They are adverts for someone else’s service. My guess is that real domain names in the anchors make the seller’s pages look like a menu of placements.
- Google’s systems are built for exactly this. SpamBrain exists to neutralise such links, and more than 1,100 of them already carry nofollow.
- There’s no manual action to prevent. We haven’t taken part in a link scheme, so these links don’t fit the case disavow exists for.
- It never ends. New spam domains were still appearing on the day of the run. A disavow file would become a monthly chore with no measurable payoff, and one careless domain: line can throw away a good link.
Some of the spam even looks strong: 39 spam domains had a DataForSEO rank of 100 or more, so rank-based scores get fooled too.
The decision table
Here’s how I act on each bucket an audit produces. Effort assumes a small or medium site.
| Finding | Action | Who | Effort |
|---|---|---|---|
| Link-seller spam, PBN adverts, stats and URL-share pages you didn’t build | Ignore. Note the pattern in your audit log | Nobody | None |
| Links you or an agency bought or built against the spam policies | Ask for removal, then disavow narrowly what stays | Whoever built them, with the SEO lead | Medium |
| A manual action for unnatural links | Remove what you can, disavow the rest, request a review describing your fixes | SEO lead | High |
| Valuable editorial links | Keep. Thank the author, keep the page current, note what earned the link | Content team | Low |
| Piracy, course resale and scraped copies | Investigate. Contact the host or file a copyright removal request; don’t disavow | Owner or legal | Medium |
| Broken backlinks | Re-check the live status, then 301 to the closest live page | SEO and developer | Low |
| Lost links | Find out why; ask again only for strong editorial links | SEO | Low to medium |
| Unlinked brand mentions | Ask politely for a link where it helps the reader | Marketing or PR | Low per mention |
| Link-gap prospects | Filter for relevance, research, pitch one at a time | Marketing or PR | High |
Disavow narrowly, if at all
The format is one URL or domain per line, with domain: in front of a domain and # for comment lines. Disavow a whole domain when the site is a scheme you took part in, and single URLs when only one placement was paid for. Keep dated copies: uploading a new list replaces the old one, and Google says processing can take a few weeks.
# 2023 agency campaign: paid guest posts. Removal requested 3 Nov, no reply.
domain:example.net
https://blog.example.org/2023/05/sponsored-roundup/Piracy and scraped copies: investigate, don’t disavow
The bucket that surprised me most was Investigate. Claude put 16 domains there, several of them pages offering my courses as downloads, course resale listings and a group-buy copy of a Moz article. They had clean spam scores (0 to 15) and DataForSEO ranks up to 381, so a rule that trusted metrics alone would have filed six of them as Valuable. They reached review only because I’d added patterns such as “download”, “sale page” and “group buy” to the review list.
A disavow file does nothing useful here: the problem is someone distributing paid material, and the link is a side effect. Document each page (URL, date, screenshot), contact the host, and file a copyright removal request with Google so the pages drop out of search. For scraped copies of articles, a polite note to the owner is often enough, and an off-topic site linking to you seven times may have been hacked, so tell the owner if you know them.
Investigate doesn’t mean guilty: one of the 16 was Majestic’s author page about me. Claude only saw metadata, so a person has to open every page, and I never download anything from a piracy site.
Link reclamation done properly
Google drops links that point at a 404 (the link goes nowhere, as Mueller put it), and a 301 passes them on: Gary Illyes said in 2016 that 30x redirects no longer lose PageRank, and Google’s redirects documentation treats a 301 as a signal that the target should be canonical. That makes reclamation some of the cheapest link work there is, if you keep three habits.
1. Re-check the live status first
DataForSEO flagged 33 broken backlinks to mlforseo.com, all pointing at two resource URLs, 30 of them from one article translated into 30 languages. Both URLs returned 200 when I checked on 7 November. DataForSEO had crawled them between 29 October and 6 November, around the time we moved resources in our redesign, and the 404s it recorded were gone (I couldn’t confirm the exact cause). The real reclamation list was empty.
Link indexes lag, so request every “broken” target yourself before you build a redirect or email anyone:
import requests
for url in flagged_urls:
r = requests.get(url, allow_redirects=True, timeout=20)
print(r.status_code, url, "->", r.url)2. Redirect to the closest live page
When a URL really is dead, 301 it to the page that best replaces it, one to one, never to the home page by default. Google’s site-move guidance says to keep redirects for as long as possible, generally at least a year, and Mueller doubts redirects for old 404s make much difference after about two years unless the links are strong. Reclaim quickly, strongest links first. My SEO site migration checklist covers redirect QA, and the glossary explains redirect mapping.
3. Don’t trust fuzzy matches blindly
Fuzzy matching is the fastest way to propose redirect targets, and my 404 and redirect mapping notebook does exactly that. Treat its output as a suggestion. In the backlink run, the matcher proposed a target for our clustering guide with a score of 88 out of 100: the classification guide, a different method that happens to share most of the words in the URL. A string score measures shared words, so someone still has to check the two pages cover the same thing.
A real reclamation story: my personal site
The same day I ran the exercise on my personal site, which has been through two redesigns and moved a lot of content to MLforSEO. A Screaming Frog crawl found only 3 broken internal links. Two other sources found more:
- The Wayback Machine’s URL list included an old slug of my IndexNow guide, which now lives on MLforSEO. WordPress’s built-in redirect for changed slugs was sending visitors to the post’s old ID, which no longer existed after the move, and a redirect that ends in a 404 is still a 404. It also turned up an old entity analysis guide, old course pages, a switched-off /portfolios/ redirect whose URL still got hits, and an old templates category.
- GA4’s “Page not found” views showed eight URLs from my other site, Data Studio for Marketers, being requested on my personal domain.
The fix was fourteen 301 redirects, each a single hop to a page that returns 200, logged in a redirect map so the next redesign doesn’t undo them. A crawler only follows links on your own site, while visitors and backlinks arrive from outside. Check backlinks, analytics and archived URLs too.
How to find 404s in GA4
GA4 has no 404 report, but most themes give the error page a recognisable title:
- Open Reports, then Engagement, then Pages and screens.
- Switch the main dimension to Page title and screen class and search for your 404 title (often “Page not found” on WordPress; visit a made-up URL to check yours).
- Add the secondary dimension Page path and screen class. Each row is a URL that served your error page; use at least three months of data.
- For sources, build a free-form exploration with Page path and Page referrer as rows, filtered to the same title. External referrers point to broken backlinks; your own pages are broken internal links.
For the archive check, the Wayback Machine’s CDX API lists every captured URL for a domain. Status-check the list and redirect anything that 404s and once had links or traffic:
https://web.archive.org/cdx/search/cdx?url=example.com/*&fl=original&collapse=urlkeyLost links: why they disappear and when to ask
A lost link is one an index saw before and can’t find now. Usually the linking page was deleted or moved, the site expired, the article was updated and your link edited out, or the index simply hasn’t recrawled yet. Sometimes it was a paid or spam link, and losing it is no loss.
Ask when a strong editorial link vanished from a page that still exists: the publisher migrated the article and the link fell out, or your link was swapped for an outdated source. Send a short note with your current URL and why it still helps their readers; if they chose a better source, let it go. I didn’t run a lost-links query on 7 November; in DataForSEO you’d set backlinks_status_type to “lost”.
Unlinked brand mentions, and why they matter for AI search
For Google, a mention without a link is text: Mueller said in 2018 that a mention doesn’t pass any PageRank, and asked in 2020 whether unlinked citations help rankings, he said usually not. Asking for a link on an existing mention is still one of the friendliest requests in SEO, because the author already chose to write about you.
For AI search the picture is different, with caveats. In Ahrefs’ study of 75,000 brands, branded web mentions correlated with AI Overview visibility at 0.664, against 0.218 for backlinks, and a December 2025 follow-up found 0.709 for AI Mode and even stronger correlations for YouTube mentions. These are correlations in one vendor’s data, and they don’t show that mentions cause AI citations. They do suggest that how the web talks about your brand, linked or not, shows up in AI answers.
So I track mentions alongside links, and keep naming consistent, because a mention only helps if it’s clearly about your brand entity. How a brand becomes a recognisable entity across the web is what AI Search & LLMs: Entity SEO and Knowledge Graph Strategies for Brands teaches, and how LLMs co-cite explains why it matters who you’re mentioned alongside.
Using an LLM for outreach, carefully
AI helps most with the reading. I paste the mention, the lines around it and my best matching page into Claude, ask for a draft, then rewrite it in my own words, check every claim and send it from a real inbox, one at a time:
Here is an article that mentions MLforSEO without linking to us:
[paste the paragraph and the URL]
Our most relevant page is [URL].
Draft a three-sentence email to the author. Thank them for one specific
point they made, say why the link would help their readers, and make it
easy to say no. Plain words, no flattery, no SEO jargon.Never mass-send AI emails. Editors spot them in a line, and a template sent to 500 sites is still a template.
Prospecting from a link gap, with a relevance filter
A link gap lists sites that link to your peers and not to you. On 7 November I ran DataForSEO’s domain intersection for two peers who write about Python and data for SEO, excluding mlforseo.com and dropping domains with a spam score of 30 or more. It returned 10 domains, mostly junk: an app download page, a thesis-writing service, a domain valuation site, a craft supplies site full of broken links. Three were real prospects: an SEO blog, an education platform and a developer community.
Two lessons. Use three to five genuine peers, so the overlap reflects your niche. And put a relevance pass between export and outreach: score prospects’ page titles against your topic with embeddings, or have an LLM read titles and descriptions and say, with a reason, whether an editor there would care (an LLM-as-a-judge setup). The Python notebook scores your own links this way, and the same approach works on prospects. Then a person reads every survivor.
What earns links in 2026
Prospecting only works if you have something worth linking to. The links I value most in mlforseo.com’s profile nearly all point at something readers can use:
- Templates: Wix linked a Google Sheets template in an article on semantic keyword research.
- Scripts: Search Engine Journal linked an ML script for grouping keywords.
- Guides: thirty language versions of one article link to our ML clustering guide, and Search Engine Roundtable linked a post on mapping keywords to topics.
- Expertise: Moz’s roundup of 2026 predictions from 20 experts linked my Introduction to Machine Learning for SEO course.
So my list for 2026: free tools, original data studies with the method shown, free notebooks and templates, and clear guides to hard topics. That’s why the MLforSEO resources library exists. Keep those URLs stable: every “broken” backlink in my audit pointed at a resource we’d moved.
A monthly and quarterly checklist
Every month (an hour at most):
- Review new and lost referring domains; open the new ones that look editorial.
- Check broken backlinks, with a live status check before any redirect.
- Look at the month’s “Page not found” views in GA4.
- Send the few unlinked-mention requests worth sending.
- Glance at the Manual actions report.
Every quarter (half a day):
- Run a full audit with the notebook or the MCP prompts and compare buckets with last quarter.
- Work through Investigate: piracy, resale and scraped copies.
- Status-check archived URLs from the Wayback Machine, and always after a redesign or migration.
- Run a link gap against three to five peers, with a relevance pass.
- Note what earned links, and plan the next resource worth linking to.
- If you have a disavow file, re-read it: every line should still be a link you or your agency built.
FAQ
What are toxic backlinks?
A label SEO tools give to links they score as spammy or manipulative. Google doesn’t use the term: its systems ignore most spam links, and disavow is for links that have caused, or could cause, a manual action.
Should I disavow toxic backlinks?
Usually not. Disavow links that you or someone working for you built or bought against Google’s spam policies, after trying to get them removed, especially if you have a manual action. Ignore spam you didn’t build.
How do I find broken backlinks to my site?
Export them from a backlink tool, check each target’s live status yourself, and add GA4’s “Page not found” views and a Wayback Machine URL list to catch what tools and crawls miss. Then 301 each dead URL to its closest live page.
Do unlinked brand mentions help SEO?
Google says mentions don’t pass PageRank. For AI search, Ahrefs found brand mentions correlate far more strongly with AI visibility than backlinks do (a correlation, so treat it as a direction). Asking for a link on a friendly mention is still worth it.
How often should I check my backlink profile?
Monthly for an active site, quarterly for a quiet one, and always after a redesign or migration, when old URLs are most likely to break.
MLforSEO Academy
Take your skills further — pick your path
Semantic ML-enabled Keyword Research
by Lazarina Stoy
Query understanding, search intent and semantic clustering for how people and AI really search.
View course →AI Search Optimisation & Agentic SEO
by Beatrice Gamba
How agentic systems retrieve, evaluate and select — and how to become the source they cite.
View course →AI Search, LLMs, Entity SEO & Knowledge Graph Strategies
by Beatrice Gamba
Build the entity authority and knowledge-graph presence that makes AI recognise and trust your brand.
View course →Introduction to Machine Learning for SEO
by Lazarina Stoy
Ship practical ML workflows — classification, clustering, entity extraction — no CS degree required.
View course →


