/ โ† Internal Linking Fixes / Internal Nofollow
In this guide
  1. What nofollow does to a link today
  2. Where accidental nofollow comes from
  3. Finding the source on your site
  4. The fix, step by step
  5. The few places nofollow belongs on your own site
  6. Platform notes
  7. Edge cases worth knowing
  8. Questions and answers

What nofollow does to a link today

A link marked rel="nofollow" asks search engines not to treat it as a vote for the destination. Google announced in 2019 that it would treat nofollow as a hint rather than a strict rule, and from March 2020 that hint applied to crawling and indexing as well as ranking. At the same time Google introduced rel="sponsored" for paid links and rel="ugc" for user-generated content.

For internal links, three things follow:

So an internal nofollow usually costs you something and gains nothing. That is why the hub places it near the top of the priority list: it is often a single setting that affects every page at once.

Where accidental nofollow comes from

There are two quite different ways your internal links can end up nofollowed. One marks individual links; the other marks every link on a page at once. You need to check both.

SourceScopeHow it shows up
Robots meta tag with nofollowEvery link on the page<meta name="robots" content="noindex, nofollow"> in the head, often left from staging
X-Robots-Tag HTTP headerEvery link on the pageNot visible in the HTML at all; only in the response headers
SEO or "external links" pluginLinks it treats as externalNofollow on links to www when the site is on the bare domain, on subdomains, or on http:// versions of your own address
Page builder link settingIndividual buttons and linksA "nofollow" tick box switched on in a reused button or global section
Theme templateTag, author, archive, filter or pagination linksHard-coded rel="nofollow" on the same kind of link across the site
Link-cloaking or affiliate pluginShort links on your own domainInternal addresses such as /go/ or /recommends/ marked nofollow; usually intended
Editor habitIndividual links in contentWriters ticking "nofollow" on every link out of caution

The external-links plugin trap

Many SEO plugins offer an option to add nofollow to external links automatically, with a list of domains to exclude. That is reasonable in itself, but the plugin decides what "external" means by comparing addresses. If your site runs on https://www.example.co.uk and some content links to https://example.co.uk or http://www.example.co.uk, the plugin may treat those as external and nofollow them. The same happens with shop, help or booking subdomains. The fix is either to correct the links to your exact canonical address or to add your own variants to the exclusion list, ideally both.

The staging leftover

Staging sites are commonly hidden with a robots instruction of noindex, nofollow. If that setting travels with the database or configuration to the live site, every page tells search engines not to index it and not to follow any of its links. In WordPress, the "Discourage search engines from indexing this site" option under Settings, Reading outputs a robots tag that includes both noindex and nofollow. This is the most damaging version of the problem and the quickest to fix.

Finding the source on your site

List nofollowed internal links on a page

Open any affected page, open developer tools and paste this into the Console. It shows each internal link carrying nofollow and the nearest container, which tells you whether it is in the menu, a widget or the content:

[...document.querySelectorAll('a[rel]')]
  .filter(a => /\bnofollow\b/i.test(a.rel) && a.hostname.replace(/^www\./, '') === location.hostname.replace(/^www\./, ''))
  .forEach(a => console.log(a.rel.padEnd(28), a.pathname, a.closest('header, nav, footer, aside, main')?.tagName));

Treating www and the bare domain as the same site in this snippet is deliberate: it catches links a plugin wrongly treats as external.

Check for page-wide instructions

View the page source (not the Elements panel, which shows the page after scripts have run) and search for name="robots". Then check the response headers:

curl -sI https://www.example.co.uk/services/ | grep -i x-robots-tag

If either contains nofollow or none, which means noindex plus nofollow, every link on that page is affected, whatever the individual links say.

โš ๏ธ The robots meta tag can also be added by JavaScript after the page loads. Check the rendered page in the Elements panel as well as the source, and check a cached copy through your CDN, because an edge rule can add an X-Robots-Tag header that your server does not.

Use the analysis to see the scale

The Internal Link Analysis maps every internal link across your crawled pages. When you review its link data, look for nofollowed links grouped by where they point and where they appear. A nofollow on every link to tag pages points to the theme. A nofollow on links to one subdomain points to a plugin's external-links setting. A handful scattered through articles points to editors.

The fix, step by step

Step 1

Confirm the nofollow is real and on internal links

Open two or three pages the Internal Link Analysis flags and run the console snippet to list internal links carrying nofollow. Make sure the links really point to your own site, counting www, the bare domain and your subdomains as yours. Note which parts of the page they sit in. If only the odd link in an article is affected, this is an editing job; if every menu or widget link is affected, look for a setting or template.

Step 2

Check for a page-wide nofollow instruction

View the source of a key page and search for a robots meta tag, then fetch the headers with curl -sI and look for X-Robots-Tag. If either says nofollow or none, every link on the page is affected regardless of its own attributes. On WordPress, check that the setting to discourage search engines is off. On other platforms, check environment variables, SEO settings per page and any CDN or server rules that add headers.

Step 3

Work out which component adds the attribute

Group the nofollowed links by where they appear. Links in the header, menu or footer point to the theme or a global page builder section. Links to your own subdomains or www variant point to an SEO plugin's external-links option. Links to tag, author or filter pages point to theme templates. Temporarily switching off a suspect plugin on a staging copy and reloading the page is a quick way to confirm which one is responsible.

Step 4

Switch it off at the source

Change the setting or template rather than editing pages one by one. Add all your own domain variants and subdomains to the plugin's exclusion list, and correct content links that use the wrong variant. Untick nofollow on reusable buttons and global sections. Remove hard-coded rel="nofollow" from theme templates, using a child theme so updates do not undo it. For stray links in content, edit the most important pages first and brief editors to stop adding it.

Step 5

Keep nofollow only where it has a purpose

Leave nofollow, ugc or sponsored where they are genuinely correct: links in comments and forum posts, paid placements, and affiliate redirect paths such as /go/. For login, basket and account links, nofollow is harmless but rarely needed; a noindex on those pages does more. For faceted filter links, remember nofollow is only a hint, so control crawling with robots.txt or by not generating crawlable links for useless combinations.

Step 6

Recrawl and watch for it returning

Clear caches, then run the Internal Link Analysis again and confirm that followed internal links to your key pages have increased. Check a sample of pages for robots tags and headers once more. Because nofollow often returns with a plugin update, a new page builder template or a staging copy pushed to live, add a quick check of one page's source and headers to your release routine, and recheck after any plugin or theme update.

The few places nofollow belongs on your own site

LinkRecommendedWhy
Links posted by users in comments, reviews or forumsrel="ugc" or rel="ugc nofollow"You are not vouching for them. Most platforms add this automatically.
Paid or sponsored placementsrel="sponsored"Required by Google's guidelines for paid links.
Affiliate redirect paths on your domain, such as /go/brandrel="sponsored" or nofollowThe internal address is only a hop to a paid external link.
Login, account and basket linksUsually no attribute neededUse noindex on the pages themselves if you do not want them in search.
Faceted filter combinationsControl with robots.txt or by not linking themNofollow is only a hint and does not stop crawling on its own.
Everything else between your own pagesNo nofollowLet the links pass their full value.

If you are managing crawling on a shop with many filter combinations, the faceted navigation guide covers better ways to control it than nofollow.

Platform notes

WordPress

Shopify

Frameworks and static sites

๐Ÿ’ก noopener and noreferrer are not the same as nofollow. They are about security and referrer data when opening new tabs and have no effect on how search engines treat the link. You do not need to remove them.

Edge cases worth knowing

Questions and answers

1. Should internal links ever be nofollow?

Very rarely. Links between your own pages should normally be followed so they pass their full value and help search engines find and understand your content. The exceptions are links you are not vouching for, such as user comments, paid placements or affiliate redirect paths on your own domain. Links to login, basket or account pages do not need nofollow; if you want those pages kept out of search, put noindex on the pages instead.

2. Does adding nofollow to some links send more value to the others?

No. This technique, known as PageRank sculpting, stopped working many years ago. A page's value is divided across all its links, including nofollowed ones, and the share assigned to a nofollowed link is simply not passed on to anyone. Adding nofollow to your contact or privacy page links therefore does not strengthen your other links. It only weakens the nofollowed links themselves, so removing the nofollow from your internal links costs you nothing at all.

3. Why is my SEO plugin adding nofollow to my own links?

Most likely because it thinks they are external. Plugins that nofollow external links decide what is external by comparing addresses, so links to your www version from a bare-domain site, to an http version, or to your own subdomains can be treated as external. Correct the links to your exact canonical address, and add every variant of your domain and each of your subdomains to the plugin's exclusion list so they are always treated as internal.

4. How do I check whether a whole page is set to nofollow?

View the page source and search for a meta tag named robots; if its content includes nofollow or none, every link on the page is affected. Then check the response headers with a tool such as curl, looking for an X-Robots-Tag header containing the same values, because that instruction never appears in the HTML. Check the rendered page in developer tools too, in case a script adds the tag after loading.

5. Is nofollow a good way to stop Google crawling certain pages?

Not on its own. Since 2020 Google treats nofollow as a hint for crawling and indexing, and a page can still be discovered through other links, your sitemap or links from other websites. To keep a page out of search results, use a noindex robots tag on the page itself. To stop crawling of large numbers of low-value addresses, such as filter combinations, use robots.txt rules or avoid generating crawlable links to them.

6. Are noopener and noreferrer the same as nofollow?

No. They are unrelated to search engines. Noopener stops a page opened in a new tab from controlling the page that opened it, and noreferrer additionally stops the destination seeing where the visitor came from. Neither changes how search engines treat the link. Some themes and plugins add them automatically to links that open in a new tab, and that is fine. Only the nofollow value affects whether the link is treated as an endorsement.

7. I removed nofollow. How soon will anything change?

Search engines need to recrawl the pages that contain the links, which can take days for popular pages and longer for rarely visited ones. There is no fixed timescale and no guaranteed ranking change. Run the Internal Link Analysis again straight away to confirm that the links are now followed, then watch how your key pages perform in Search Console over the following weeks rather than expecting an immediate shift.

Check which internal links are being followed

The Internal Link Analysis maps every internal link across your crawled pages and counts links in and out of each page, so you can see how your key pages are linked and confirm your fixes after a recrawl.

Open Internal Linking Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Internal Linking Fixes  ·  Robots Meta Tags  ·  Link Equity Flow  ·  Faceted Navigation  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.