It All Started With An Idea
Open-source tool · SEO backlink audit

backlinks-disavow: build Google disavow files from evidence

backlinks-disavow is a Node.js command line pipeline that builds a Google disavow file from live checks on each domain instead of toxicity scores alone. A person decides the unclear cases, and the output is a dated file and report.

backlinks-disavow on desktop
backlinks-disavow on a phone
Tool
backlinks-disavow
Built
Jul 2026
Code
Public on GitHub, CLI only
Stack
Node.js 18+, no npm dependencies
Input and output
SEMrush toxicity CSV in, Search Console disavow file out

The idea

Toxicity scores are wrong in both directions. In real use, this pipeline found a spam blog scored 28 out of 100, or clean, while Linktree scored 58, or toxic.

Google also offers no API to upload a disavow file, so every file is built and checked by hand. A bad file can cut links that help the site.

The work

How we built it, step by step

  1. Validated the inputsThe first stage checks the domain list and the SEMrush toxicity export before anything else runs.
  2. Cross-checked both directionsIt compares our list against the SEMrush scores both ways, so low-scored spam and high-scored real sites both get flagged.
  3. Probed each domain liveIt requests each domain and records the HTTP status, the page title and whether the domain is parked.
  4. Kept a person in chargeUnclear domains go to human review. Ambiguous domains are kept, the protected list is a hard stop, brand lookalikes are flagged rather than cut, and unresolved domains stay out.
  5. Finalized the fileThe last stage merges the previous Search Console file, strips protected domains and writes a dated disavow file, a report and an archive.
  6. Used it on a real engagementOn a client project it verified 97 contested domains in about 2 minutes and found two cloned copies of the client's site.

What it does

  • 5-stage pipeline from validation to final file
  • Two-way cross-check against SEMrush scores
  • Live HTTP and parked-domain probing
  • Protected domain list
  • Brand lookalike flags
  • Client-ready markdown report
  • Runs on macOS, Linux and Windows

How people find it

  • Public source on GitHub
  • Node 18+ built-in fetch, no npm install
  • Output in Google Search Console disavow format
Questions

Questions people ask about this work

How do I create a disavow file for Google Search Console?

List the domains you want Google to ignore, one per line with the domain: prefix, and upload the file in Search Console's disavow tool. backlinks-disavow builds that file from live checks and merges it with your previous file so nothing is lost.

Should I trust Semrush toxicity scores when disavowing links?

Use them as a starting point, not a decision. In our use, a spam blog scored 28 out of 100 while Linktree scored 58. Check each domain live before you cut it.

Is there an API to upload a disavow file to Google?

No. Google offers no disavow upload API, so the file is uploaded by hand in Search Console. That is why our pipeline produces a dated, final file plus a report for review.

Services in this project