Release RankProof 1.0.1: cleaner anchor text and an English-only report Changelog ↗
Open source · MIT · v1.0.1

Backlinks you can prove

Paste the links you paid for or earned. RankProof opens each page and tells you whether your link is still there, gone, or could not be checked, with the proof.

git clone https://github.com/CometWeb-io/rankproof.git && npm ci
Four pages that should link to your site go through RankProof, which reports each link as confirmed, not found or could not be checked. en.wikipedia.org → news.ycombinator.com en.wikipedia.org → example.com httpbin.org → example.com httpbin.org → example.com RankProof opens the page the link Confirmed Anchor “Official website” rel nofollow HTTP 200 Is my link still there?

Four real checks run on 7 Nov 2026 with RankProof 1.0.0: does this page link to that site? Raw response.

3
Clear answers

Still there, gone, or could not be checked. Never a guess between them.

0
Blocked pages counted as lost

A bot check, 403 or timeout is reported as “could not check”, not as a lost link.

50
Links per request

Check a whole list in one call, from the app, the command line or your own code.

0
SEO subscriptions needed

It reads the pages directly. No paid SEO API, account or key.

A real scan, not a mockup

Watch it check nasa.gov

Domain in, verified backlinks out. Every link on the list was confirmed in the source page's HTML during the scan.

localhost · RankProof 1.0.0

Recorded on 7 Nov 2026 from a local RankProof 1.0.0, US market. The scanning phase is sped up 15×; the scan itself took just under a minute.

Visibility indexnasa.gov · US
42of 100

Six scored parts you can open one by one. The weakest here is SERP visibility.

<5050+70+90+
Verified backlinksrel
8confirmed in HTML
2 dofollow 6 other rel
Where they come fromcount
Verified links8
In content7
Referring domains3
Strong domains1

Numbers from the recorded run above. A live domain changes, so a new scan will differ.

RankProof results for nasa.gov: 8 verified backlinks from 3 referring domains, visibility index and score breakdown
One screen, the whole profileVerified backlinks, referring domains, dofollow share and a visibility index whose parts you can open and read.
Verified backlinks from Wikipedia with link target, anchor text, nofollow and HTTP 200
Each link shows where it came fromSource page, exact target path, anchor text, rel, placement and the HTTP status of the fetch.
Three verdicts

A blocked page is not a lost link

A yes/no checker has to call every failed fetch "lost". RankProof keeps couldn't check apart from not there, and records how far each negative reaches.

01 · INPUT

Your pair

A source page and the exact target URL it should link to.

source_url → target_url
02 · FETCH

Fetch safely

SSRF-guarded request, robots respected, redirects re-checked hop by hop.

http_status · final_url
03 · READ

Read the HTML

Every anchor extracted with its raw href, text, rel and placement.

html-anchor-v4
04 · MATCH

Match exactly

Scheme, host, path and query must match. Fragments are ignored.

exact-http-url-v2
05 · VERDICT

One of three

confirmed not_found error
What happened
A yes/no check says
RankProof says
The link is in the page's HTML
present
confirmedwith anchor text, rel and the exact href it matched
The page loads, the link isn't in it
lost
not_foundabsence_scope: fetched_html
The source page returns 404 or 410
lost
not_foundabsence_scope: http_resource
403, CAPTCHA or bot challenge
lost
errorre-check later; not evidence of loss
Timeout, DNS or network failure
lost
errorthe reason is kept with the observation
robots.txt refuses the fetch
lost
errorthe page is not fetched against the site's rules
The link is added only by JavaScript
lost
not_foundrendered-page presence is reported as unknown
Inspectable evidence

Every answer shows its work

Each observation says what was fetched, when, which parser read it and what matched. Pick a field to see it in a real response.


            

Real response from a local RankProof 1.0.0 run on 7 Nov 2026, trimmed to one anchor.

One engine

Use it from a browser, a shell or your own code

The same verification engine sits behind a local web app, a CLI and a versioned HTTP API.

The RankProof web app before a scan

Web app

Scan a domain, review verified links and site structure, export an HTML report.

$ rankproof help
scan <domain>     links, SERP, risk audit
serp <domain>     positions for keywords
gap  <domain>     linking to rivals, not you
doctor            engines and parsers OK?

-f, --format      text | json | csv | html

CLI

Scripted scans with text, JSON, CSV or HTML output, ready for cron jobs and CI.

GET  /health
capabilities: ["backlinks.verify.v1"]

POST /v1/backlinks/verify
1–50 source/target pairs
ordered observations
optional Bearer token

HTTP API

Check capabilities, send pairs, keep the observations in your own system.

Get started

From clone to first verdict

Node.js 22 or newer. RankProof is not on npm yet, so it runs from a clone, on your machine, against your list.

STEP 1

Install

Clone the repository and install its dependencies.

$ git clone https://github.com/CometWeb-io/rankproof.git $ cd rankproof && npm ci
STEP 2

Start the API

It binds to loopback. Set a token before you expose it anywhere.

$ npm run api -- \ --host 127.0.0.1 --port 8787
STEP 3

Verify your links

Up to 50 pairs per request, answered in the order you sent them.

$ curl -sX POST \ 127.0.0.1:8787/v1/backlinks/verify \ -H 'content-type: application/json' \ -d @links.json
Built to be checked

Trust it because you can read it

MIT-licensed code, tests on every push and a security policy that tells you exactly what counts as a bug.

136+ 4 browser

Tests on every push

Unit tests, browser smoke tests and an install-from-tarball check run in CI before anything lands on main.

SSRFguarded

Safe to point at the web

Private ranges and cloud metadata are refused, DNS is validated before connecting and every redirect hop is re-checked.

127.0.0.1

Local by default

The API binds to loopback. An optional Bearer token protects it when you run it behind another service.

0audit findings

Dependencies audited

CI fails on any known advisory in the full dependency tree, including the web app's.

Goldenfixtures

Parsers pinned to real HTML

Search-engine parsers are tested against frozen pages, so a markup change breaks a test, not your numbers.

Notelemetry

Nothing phones home

No analytics SDK in the code. Requests go to the pages and open sources a scan needs.

28 Aug 2026Source published on GitHub
17 Sep 2026Moved to CometWeb-io
25 Oct 2026Exact-pair verification on main
1.0.0First release, 7 Nov 2026
1.0.1Cleaner anchor text, 8 Nov 2026
CI status Live CI status from GitHub Security policy ↗ Full changelog ↗
What it won't claim

Honest about its limits

A verification tool is only as useful as your understanding of what a result does not cover.

01

No JavaScript rendering

Links injected by scripts after load are not seen. not_found covers fetched HTML only.

02

Not a Google signal

It tells you a link exists and how it is marked up, not how Google values it.

03

Not a web-scale index

Verification checks the pairs you supply. Discovery of unknown links is partial and labelled as such.

04

Heuristics aren't measurements

Authority, traffic and difficulty scores in the wider toolkit are documented heuristics, not third-party data.

Stop guessing which links are still there

Read the code, run it on your own list and check its answers against your own eyes.

More open source from CometWeb