Anchor text audit illustration with magnifying glass over links and risk gauge meter

Two years ago I watched a campaign stall out in the most confusing way possible. A mid-size SaaS client had hired me for six months of guest posting aimed at three comparison pages, the “best CRM for small business” type pages that carry the whole pipeline. We built forty placements. Domain Rating climbed. And the three target pages did not move. Not one position. A competitor with fewer referring domains sat above us the entire time, and I ran out of polite explanations.

So I stopped building links and did the audit I should have done on day one. I exported every anchor pointing at those three pages and bucketed them by hand. Of our forty placements, twenty-six used “best CRM for small business” or a near variant: “top CRM for small business,” “best small business CRM.” Exact match anchors were sitting at roughly forty percent of each page’s profile. The rest of the profile was old branded and naked URL links from years back. The links themselves were fine, decent sites, real traffic, relevant topics. The anchors were the problem. We had built a neon sign pointing at the pages that said “we built these links for this keyword,” and Google simply refused to reward it.

We paused all commercial anchor building for a quarter and ran a dilution push instead: twenty-five branded and naked URL placements, plus two digital PR pieces that earned natural generic anchors from real coverage. No new “money” anchors for three months. Two of the three pages started climbing in week six. That campaign taught me the lesson I now apply to every client before I build a single link: anchor text is a risk profile, and you manage it at the page level, not the domain level.

How to read anchor distribution properly

Open the Anchors report in Ahrefs, or the equivalent in SEMrush, and the first thing you see is the domain-level view. This is where most people stop, and it is the wrong place to stop. A domain-level report almost always looks healthy because branded and naked URL anchors dominate at the site level. Your homepage soaks up brand mentions, your blog posts attract natural generic anchors, and all of that ballast hides what is happening on the pages you are actively building links to.

Here is what I look at first instead. Filter the Anchors report by target URL and read it one page at a time, starting with the pages you are building links to right now. Then check the referring domains column per anchor, not the raw anchor count. One domain with fifty sitewide footer links using your keyword is a single editorial vote, not fifty.

The third check is a cross-reference most people skip: Google Search Console, Links section, “Top linking text.” The sample is smaller than what Ahrefs sees, but it shows what Google actually registered. When Ahrefs and GSC tell the same story about a page, I trust the reading.

The Page-First Anchor Audit: my step-by-step method

After that SaaS campaign, I formalized the hand-bucketing I did into a repeatable method. I call it the Page-First Anchor Audit. It takes about two hours for a typical client site and it has never once failed to surface at least one page I was uncomfortable with.

Step 1: List the pages that matter

Do not audit the whole site. List your current link-building targets plus any page ranking in positions 4 to 20 for a commercial keyword. That is usually ten to twenty pages, the ones where anchor decisions are being made right now.

Step 2: Pull anchors per page

For each page, export the anchor data filtered to that URL: anchor text and referring domains per anchor. If a page has a very large profile, I export and work in a spreadsheet. For smaller profiles, I work directly in the tool.

Step 3: Bucket every anchor

Every anchor goes into one of five buckets. This is the heart of the method, so be strict with yourself:

  • Branded: your brand or site name, with or without modifiers (“Niaz Ahmad,” “Niaz Ahmad SEO”).
  • Naked URL: the raw address, in any form (domain.com, www.domain.com/page, https variants).
  • Exact match: the target keyword verbatim, the phrase you are trying to rank for.
  • Partial match: the keyword with natural modifiers (“best X for small teams,” “an honest X guide,” “X pricing explained”).
  • Generic: “click here,” “this article,” “read more,” “this study,” plus image links with empty or alt-text anchors.

The bucket that causes the most arguments is partial match, so here is my rule: if the anchor contains the full target keyword plus extra words, it is partial match, not exact. Being generous here is how people fool themselves. A page with zero “exact” anchors and thirty anchors reading “best CRM for small business in 2026” is not clean. It is an exact-match problem wearing a disguise.

Step 4: Score the page with risk bands

Count referring domains per bucket, turn them into percentages of the page’s total, and score the page into one of three bands:

  • Green: exact match under 10 percent, and branded plus naked URL above 40 percent. Build freely, with normal discipline.
  • Amber: exact match between 10 and 15 percent, or the same commercial phrase repeated across five or more referring domains. Proceed, but every new anchor must be branded, naked URL, or generic until the page drops back to green.
  • Red: exact match above 15 percent, or one money anchor repeated across ten or more domains, or foreign-language anchors appearing on an English page. Stop building commercial anchors to this page immediately and start a dilution plan.

Pages score red far more often than clients expect. Guest posting is the main engine of anchor concentration in this industry, and it stays invisible until you look at the page level.

The patterns that actually worry me

After running this audit dozens of times, I have a short list of patterns that make me stop a campaign and call the client.

Exact-match heavy money pages. This is the classic. A service page or affiliate comparison with forty percent exact match anchors, usually built over one or two guest post campaigns. Rankings stall exactly the way my SaaS client’s did: links keep coming, nothing moves. The page is not penalized in most cases. It is simply not being rewarded, because the anchor profile looks engineered.

Repeated commercial anchors from guest posts. Real editors write headlines and anchor text in their own voice. When I see twelve placements across twelve sites all linking with “best link building services” or close variants, no editor wrote those. A link builder did, probably working from an anchor list in a campaign brief. Uniform commercial anchors are a fingerprint.

Foreign-language anchors on a monolingual page. An English page earning anchors in another language is a red flag for aged-domain rebuilds or cheap link packages where placements went to whatever sites would take them. One or two are noise. A cluster of them means part of the profile was bought without editorial standards, and those links deserve individual review.

The partial-match disguise. Teams that know exact match is risky often “fix” it by adding a word or two to every anchor. The distribution then reads as zero percent exact match and sixty percent partial, all of it containing the same keyword. Google is not confused by this. Treat heavy partial-match concentration the same as exact match when the keyword core is identical.

The ratios I treat as safe, and an honest caveat

Here is the part everyone wants as a simple number. On a money page, I treat 10 to 15 percent exact match as a ceiling, and I only go near the top of that band when the page has a strong branded base and a genuine history of editorial links. New pages, affiliate pages, and pages on young sites get a stricter ceiling, closer to 5 to 10 percent. Branded and naked URL anchors are the ballast of the profile: I want them forming the clear majority on every page that matters.

Now the caveat, and I mean it: there is no magic number, only risk bands. A page on a household-name brand can run twenty percent exact match and be fine, because the brand’s overall authority makes the pattern plausible. A six-month-old affiliate site with the same ratio is a different story. Context is the ratio. Anyone selling you a universal safe percentage is selling you comfort, not safety.

One more honest take while I am at it: anchors matter less than they did in 2012, and the links themselves matter more. Google’s handling of over-optimized anchors is usually quiet devaluation, not a dramatic penalty. The page just stops responding to new links, which is exactly what my SaaS client experienced. That makes anchor risk harder to notice, which is precisely why you audit before the campaign instead of after it stalls.

How I fix a risky profile

When a page scores red or dark amber, I fix it with dilution first, surgery second, and disavow almost never. That order matters.

Dilution is the main tool. The goal is to change the percentages by growing the denominator, not by deleting the numerator. I build branded and naked URL links through digital PR, resource-page outreach, and podcast appearances, any placement where the natural anchor is the brand name. Digital PR is especially good for this because journalists write their own anchor text, and journalists overwhelmingly use brand names and generic phrases. Twenty to thirty clean placements will move most pages from red back to amber, and another round gets them to green. It is slow and unglamorous, and it is the only fix that works at scale. If you want help running this kind of campaign properly, look at my link building services and see whether the approach fits what you need.

Changing existing anchors is a sometimes tool. Most old anchors are not worth touching. Contacting webmasters to rewrite anchor text is slow, has a low success rate, and draws attention to links you would rather leave quiet. I only pursue it for sitewide links I can influence (author bios, partner pages, sponsorship footers) and a small number of high-risk exact-match anchors on pages that are already red. Even then, I change them to branded, never to a different keyword.

Disavow is the last resort, and I rarely recommend it. In years of client work I have recommended a disavow a handful of times, always for the same situation: a clear paid-link footprint, usually foreign-language anchors and obvious network patterns, on a site underperforming despite dilution. Here is why I am reluctant: disavowing removes the link’s equity along with its risk. Google today mostly devalues spammy anchors rather than penalizing for them, so a disavowed link often costs you more in lost authority than it was costing you in anchor risk. Dilution keeps the equity and fixes the ratio. Disavow only when the links themselves are the problem, not just their anchors.

The pre-campaign checklist

Everything above is the audit. This is the part that prevents the next audit from finding anything. Before I build a single link for a client now, I run this checklist, and I do not start outreach until every box is checked:

  • Anchor map per target page. A simple sheet: each target page, its current bucket percentages, and the exact-match ceiling I have set for it. No map, no campaign.
  • Caps per page, written down. Each page gets a maximum exact-match percentage and a maximum count of commercial anchors for this campaign, plus a dilution quota of branded and naked URL placements scheduled in the same window. Dilution is not a rescue plan. It is part of the build.
  • An approved anchor list, with variety enforced. The anchor for every commercial placement comes from the approved list, and the same anchor cannot repeat across placements. One commercial anchor per placement, rotated across buckets.
  • One person approves anchor choices. On my campaigns that person is me. Anchor selection is not delegated to whoever is doing outreach, because outreach naturally drifts toward the keyword. Every anchor gets a second pair of eyes before it goes into a pitch.
  • A mid-campaign re-check date. Halfway through the campaign, I re-pull the anchor distribution for every target page. If a page drifted into amber, the second half adjusts. This takes thirty minutes and has saved more campaigns than any other habit I have.

Final thought

Most link building failures I investigate are not link failures. The links are real, the sites are decent, the content is fine. The failure is in the anchor choices, made one small decision at a time across dozens of placements, until the page carries a profile no natural editorial process would ever produce.

Run the audit on your top ten target pages this week. It takes an afternoon, and you will know exactly where you stand before your next campaign starts. And if you would rather have someone experienced do it with you, get in touch. I run this audit for every client before building a single link.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *