Backlink score checker maths: DR, term by term
One formula, a handful of words people confuse, and a table of hypothetical inputs so you can sanity-check your own dashboard.
The formula
DR = round(100 log(ref_domains + 1) / log(2 10^7))
Public, short and easy to reproduce. It depends on one input only: how many distinct domains link to the target in our index.
- It is our own metric
- Similar in spirit to Ahrefs DR or Moz DA, not the same number
- Logarithmic: each extra zero in referring domains adds roughly the same points
Glossary
| Term | Meaning in this API |
|---|---|
| Backlink | One link from one page to a target. The index holds about 798.5 billion of them. |
| Referring domain | A distinct linking domain, counted once however many links it places. This is the DR input. |
| Domain-to-domain link | A link edge between two domains. The graph has 2,774,625,913 of these. |
| DR | The 0-100 score above, computed from referring domains. |
| Anchor | The clickable text of a link. Served by anchors and anchor_cloud. |
| Top page | A URL on the target ranked by links it attracts. Served by toppages. |
| Intersect | Domains that link to two to ten targets at once. Served by intersect. |
| Credit | Billing unit. 1 credit equals $0.0001. Actions cost 0 to 3 credits. |
| Index age | Time since the last rebuild. Roughly a month. |
Worked example, with invented inputs
Nothing here describes a real site. The inputs are made up to show how the log scale behaves, and each output was computed with the formula above.
A target with 100 referring domains scores 27. At 1,000 it scores 41, at 10,000 it scores 55, at 100,000 it scores 68, and at 1,000,000 it scores 82. Only 20,000,000 referring domains reaches 100.
Look at the steps. Going from 100 to 1,000 domains earns 14 points, and so does the jump from 1,000 to 10,000, yet the second one needs nine times as many new linking domains. That is why a small site moves fast and a large one barely moves.
Myth versus reality
| Myth | Reality |
|---|---|
| My Majestic or Moz figure should match this DR. | Each vendor crawls its own web and defines its own score. Expect the same direction, not the same digits. |
| Higher DR means higher rankings. | DR describes a link profile. Google has never said it uses it, and rankings depend on far more. |
| A drop of 2 points means I lost links. | On a log scale 2 points can be a sizeable change at the top and noise at the bottom. Check referring domains directly. |
| DR updates when a link goes live. | The index refreshes about monthly, so the score lags. |
| A bulk call is less accurate than a single one. | bulk_dr and compare read from the same index; only the packaging differs. |
Using the number in a product
Show DR next to the referring-domain count that produced it. Users learn the scale quickly when they can see both.
Do not average it across unrelated sites, since a mean of logs hides the thing you care about. Rank, bucket or compare against a peer set instead.
For programmatic scoring of many sites see the bulk script; for a table that looks credible on a public page see the dashboard proxy.
Reproducing the score in your own code
Try it yourself. Compute it from the referring-domain count and compare with what the API returns. Python: round(100 math.log(n + 1) / math.log(2e7)). JavaScript: Math.round(100 Math.log(n + 1) / Math.log(2e7)).
The natural log is fine because the base cancels in the ratio. If your result is off by one, check your rounding mode first.