Skip to content
Notes

Article · SEO

KD 0, DR 94: the Ahrefs metrics I stopped trusting

An Ahrefs export is a great source of keywords and a poor source of decisions. Here are six ways it misled my research, the trust table I now give my AI agent, and what I check instead.

Max Kiriienko
Tech Lead SEO & Marketing · 9 min read

Читати українською

The query had a Keyword Difficulty of 0. Every SEO knows what that suggests: an open door. Then I pulled the live search results. The median Domain Rating of the sites in its top ten was 94. A neighbouring query had KD 8 and a median DR of 92.

That was one of several moments during a niche research of about 1.4 million keywords when a column said one thing and the live results said another. Each time, the difference changed the conclusion. And each time, the first one fooled was the AI agent I had given the data to. A model treats every column in a CSV as equally true.

“KD is not a metric at all. Forget about it.” — what I told my agent on August 4, when it shortlisted a client’s keywords by KD.

Why this matters more with AI

Today everyone pipes exports into ChatGPT or Claude. The model doesn’t know that KD counts only links, that an empty cell is not a zero, or that search results data has a date. It will build a neat, confident plan on top of all of it.

The principle I ended up with: reliability is not completeness. A sparse column can be a real signal. In one set of 600,000 keywords only 18% had a CPC, but where it exists, it shows roughly what advertisers pay. A neat figure can be fiction. Traffic value gives you a dollar amount, but it is an estimate of an estimate of an estimate.

My agent once told me a visit in one niche was worth 19 times more than in another. Concrete and convincing. It stood entirely on traffic value. I asked it to think about how that number is calculated: estimated traffic times CPC, where the traffic is itself volume times an estimated click rate. The 19× was gone. The direction stayed: advertisers paid a dollar or more per click in one niche and cents in the other.

What keyword difficulty actually measures

KD is Ahrefs’ estimate of how hard it is to get into the top ten. It is built from one input: how many sites link to the pages that rank there, put on a logarithmic scale from 0 to 100. Ahrefs says it plainly — KD doesn’t take on-page factors into account, and you should study the top ten by hand.

So KD fails both ways. It can be zero while giants hold the top, because big brands rank on the strength of their whole domain, not on links to one page. Or it can be high while the top is weak and out of date.

What is a good keyword difficulty score?

There isn’t one. The only use I keep: a high KD tells a site with no links to look closer, because the top pages have many linking sites. A low KD tells you nothing. Look at the lowest DR in the top ten and at the live results instead.

Six ways the export misled us

1. KD 0 next to giants

The services world shows it best: a water-heater repair query with 150,000 monthly searches, KD 0, a CPC of $15 and a growing trend. Every column looked green. The live results were local plumbers, a big retailer’s repair service, a manufacturer and Yelp. KD was zero because local contractors don’t have backlinks, not because the niche is free. For an emergency HVAC repair query, all ten results were local contractors. A legal lead-generation query looked the same: KD 0, CPC $60.

2. An empty cell became a zero

In one export the median DR of ranking sites was 46. In the live results it was 85. Missing DR values had been written as zeros and pulled the median down. Nobody lied — the table simply didn’t say “unknown”.

3. A “weak blog” with DR 95

A blog on a free blogging platform looked like an easy competitor. It sat on a subdomain and inherited the platform’s authority: DR 95. In the same research a competitor’s “DR 0” turned out to be an empty field. Live, it was 45.

That doesn’t make DR useless. A real zero is one of the few numbers I trust. No links, and the site still ranks — that’s a fact. The caveat is small: Google may already see links that Ahrefs hasn’t found yet. The middle of the scale is different, because DR can be pumped. A DR 60 site can be weak, just stuffed with links. A DR 15 or 20 site can be strong. But zero is zero.

What I look for is a weak site in the top three or five. One of my exports was keywords with a DR 0 domain in the top five. The catch: Ahrefs knows the DR of the top only where it captured the results. No snapshot, no lowest DR, and the keyword quietly drops out of the filter.

4. Traffic potential of 28,000 for a 700-search query

Traffic potential measures the traffic of the current #1 page across all its keywords. It describes someone else’s page, not your opportunity. Read it relative to volume: much higher means the top page sits on a wide cluster, much lower means people get the answer without clicking, or the intent is narrow.

5. “No AI Overview” often means “no snapshot”

Search results data exists only for part of the keywords. In one keyword set it was 13% — 20,280 keywords out of 150,231. An empty value there means “not covered”, not “no feature”. When we measured AI Overviews live in one market, the share was 67%. The Ahrefs export for that market said 9%.

Keywords with an AI Overview, one market

The Ahrefs export said 9%. A live check found 67%.

Live: 32 of 48 keywords. The export counts a missing snapshot as “no AI Overview”. Source: my niche research, August 2026

My first worry was age. I told the agent the snapshots could be from 2015 and asked if it had checked the live results. When we checked, they were fresh: in the client’s export, 98% of dated rows were from June to August. Age wasn’t the problem. The empty rows were. The agent had divided by all rows, snapshot or not, and told me the client’s problem queries got AI Overviews five times more often than average. Counted only where a snapshot existed, it was 1.77 times.

Even our live measurement lied first. The API accepted one task per request, we sent ten, and the nine empty answers were recorded as “no AI Overview”: 157 false negatives out of 177 checks. The fix took minutes. Noticing took a contradiction: for one country, live showed 8% and the export 57%.

6. A volume that jumped overnight

“google search central hreflang guidelines” shows 1,200 searches a month. Open the 24-month curve and it is one month of 12,322 searches in November 2025, then about 50 a month. Volume is a 12-month average, so one spike becomes a steady-looking number for a whole year.

“google search central hreflang guidelines”: searches per month

Near zero for a year, one month of 12,322 searches in November 2025, then about 50 a month. The Volume column shows 1,200.

Volume averages the last twelve months, so one spike reads as a steady demand for a whole year. Source: Ahrefs export, US, October 2026

Other curves are too steady. The two-year curve for “googlebot” is the same twelve numbers twice, give or take one search. And in my Ukrainian export, about two thirds of the keywords with 20+ searches a month are five to ten times bigger after July 2025 than before it. For half of them, July 2025 is the single biggest jump in two years. That looks like a change in how the data is collected, not in what people search for — I can’t prove it, so I don’t build on it.

“googlebot”: two years of the curve, laid over each other

The monthly numbers from October 2025 to September 2026 repeat October 2024 to September 2025, give or take one search.

The second line hides behind the first: the numbers differ by one search at most. Source: Ahrefs export, US, October 2026

The trust table I give my AI

After these cases I wrote the rules down as a playbook my agent loads whenever it touches SEO data. The core is three levels.

1 · Facts

Who is in the live results today. A search feature seen on the snapshot date. Your own Search Console, analytics and click data. Build decisions on these.

2 · Signals

The shape of the 24-month trend. The order of magnitude of volume and CPC. DR near 0 for a site that ranks. The lowest DR in the top ten, where a snapshot exists. Use them to shortlist, with a caveat.

3 · Noise

KD. Traffic value. Organic traffic as an absolute. Traffic potential as an absolute. DR in the 15–70 range. Don't decide on these.

KD has one rough use left: sorting thousands of rows before you look at any of them.

A few columns deserve a note of their own:

ColumnHow I read it
VolumeA 12-month average. A million vs ten thousand — yes. 45K vs 52K — no. Seasonality and one-month spikes are hidden, so look at the monthly curve next to it.
SV trendThe most reliable computed metric: the curve is compared with itself.
CPCA historical snapshot, true on the day it was captured. $1+ against $0.03 tells you whether there's money in the topic. The exact figure doesn't. I use it as a filter: one of my exports was keywords with a CPC from $15, sorted by three-month growth.
GrowthNoisy on small numbers: 10 → 30 is "+200%".
Organic trafficCompare sites with each other, not as absolutes. One site showed 22,000 visits a month. All of it came from one junk query: its own domain name plus "contact".
Last updateMandatory in every export. Every field that depends on the results is true only for that date.

Why the trend beats the volume: volume is one average over twelve months. When my agent offered me a topic with a volume of 60, I asked what the point was — unless it had a trend. In one niche the cleaned export showed 2.76 million monthly searches. When we kept keywords with 100+ searches and a curve that wasn’t fading, only 27% of that demand was left.

What I check instead

  1. Export big. Ahrefs is an excellent source of keywords — up to 150,000 rows per export on the Enterprise plan, fewer on lower plans. Split your seeds so each group fits under the limit.
  2. Always include the snapshot date of the search results.
  3. New country? First export 50–100 keywords you know well and see how many cells are empty. That’s the real coverage.
  4. Shortlist by intent and trend, not by KD.
  5. Pull the live results for the shortlist. My instruction to the agent was simple: type in the queries and look — are there articles in the results at all? Who’s in the top ten tells you more than any metric — you recognise the big brands by name. Spot checks, not millions. Save everything you pull, domains and positions too, so you never pay twice.
  6. Label every conclusion: confirmed by data, interpretation, or needs checking.

How far is an export from the live page? In September we compared 62 Ahrefs positions for high-volume keywords with the live top 20. The site was there in 63% of cases and missing in 37%. Even the live page is not the last word. Google sometimes ranks a weak page because it has nothing better, or because links outweigh the content.

A client example: 45 keywords, 6 articles

On the content plan for happymonday.ua, a Ukrainian career platform, the agent’s first shortlist cut about 215,000 queries down to 63 topics. One of its filters was KD ≤ 30 — a number the agent later admitted it had picked out of thin air. The next list dropped KD, and we checked its 45 best candidates against the live results. 20 of them (44%) were pure noise. 13 were queries for job listings, where an article can’t rank. Only 6 clearly fit an article.

45 shortlisted keywords after a look at the live results

20 pure noise, 6 mixed results to check by hand, 13 job-listing queries, 6 fit an article.

Source: happymonday.ua content plan, August 2026

For ten of the queries, the site already ranked on page one with its own job-listing page. An article would have competed with the client’s own page. The intent was decided by the type of page Google already shows — not by any column in the export.

About the author

Max Kiriienko

Tech Lead SEO & Marketing from Ukraine. I design growth strategies and build the pipelines, tools and teams that execute them.

Read next