scalpel@labs: ~/glossary/nofollow-link.mdx5 sections

Nofollow Links

rel="nofollow" tells search engines not to follow a link or pass ranking credit through it. Since September 2019, Google treats nofollow as a hint, not a rule; it may ignore it for both crawling and ranking.

extension: Scalpel SEOupdated: 2026-08-14read_time: 3 min
less nofollow-link.mdx

Why it matters

Because nofollow is now a hint, Google can and does crawl and pass some signal through nofollowed links when it judges that useful. This means nofollow stopped reliably sculpting PageRank internally in 2009, well before the 2019 change made it official policy for all three rel values (nofollow, sponsored, ugc). Site owners should use nofollow for what it was designed for: untrusted or paid links, not as a lever to hoard link equity on-site.

The practical implication: don't expect nofollow to be your sole defence against link spam in comments or to guarantee that internal linking structure flows exactly as you intend. Use it for disclosure (paid content), and use robots.txt or meta robots if you need to prevent crawl on internal areas.

How it works

The history matters here because it explains the confusion:

2005-2019: Nofollow as a directive. Google introduced rel="nofollow" with the promise that it would tell crawlers to both skip following the link and not pass ranking signals through it. PageRank sculpting became popular: clever SEOs would nofollow internal links to unimportant pages and keep authority on important pages. Google closed that loophole in 2009 by changing internal nofollow to not affect PageRank flow, but kept the external nofollow behaviour to prevent comment spam.

September 2019: Nofollow becomes a hint. Google announced that nofollow, sponsored, and ugc were now hints instead of directives. In practice: Google may crawl a nofollowed link if it thinks it's useful, and may pass ranking signals through it. The compliance value (marking paid links) remained, but the crawl-prevention guarantee was gone.

How Google processes a nofollowed link today:

  1. Parser encounters <a href="..." rel="nofollow">.
  2. Adds link to crawl queue, but may decide to skip it based on crawl budget and other signals.
  3. If crawled, processes the page normally.
  4. For ranking, does not strictly isolate nofollow links from ranking flows; may pass signal if context suggests it.

What does not matter

Nofollow does not guarantee zero crawl of a nofollowed link. Google may crawl it anyway. Nofollow does not guarantee zero indexing of a nofollowed destination: if that page is also linked from elsewhere with dofollow, it will index. Nofollow does not reliably prevent internal PageRank distribution.

Also, nofollow is not a signal that a link is untrusted or low-quality. It's just a flag that the site owner wanted to mark it as not endorsed. Google doesn't penalise a page for having nofollowed links. What matters is the actual destination quality and the rel attribute's correctness.

Code example

Here's how to add nofollow to untrusted or paid external links:

<!-- Bad: paid link with no rel attribute -->
<a href="https://affiliate-store.example.com/product">
  Check out our recommended gear
</a>

<!-- Good: paid link with rel="nofollow" or rel="sponsored" -->
<a href="https://affiliate-store.example.com/product" rel="nofollow">
  Check out our recommended gear
</a>

<!-- Better: use rel="sponsored" to be more explicit about paid links -->
<a href="https://affiliate-store.example.com/product" rel="sponsored">
  Check out our recommended gear
</a>

If you're adding nofollow programmatically:

// Add nofollow to all external links in a comment
const comment = document.querySelector('.comment-text');
comment.querySelectorAll('a').forEach(link => {
  const href = link.getAttribute('href');
  if (href && href.startsWith('http')) {
    // External link in UGC, add rel="ugc" instead of nofollow
    link.setAttribute('rel', 'ugc');
  }
});

The second example is better practice: for user-generated content (comments), use rel="ugc" instead of nofollow. For paid links, use rel="sponsored". These are more specific and help Google understand intent rather than just "this link is not endorsed."

How Scalpel shows it

The Links tab flags all nofollow links on the page and separates them from sponsored and ugc links. For each nofollowed link, it displays the destination URL, anchor text, and rel attribute. Scalpel highlights nofollow on internal links (which is usually a mistake; internal nav should not be nofollowed unless you're deliberately blocking crawl discovery, which is rare). The extension also shows the breakdown of nofollow vs sponsored vs ugc links to help you audit rel attribute correctness.

Sources