Key takeaways
- Noindex prevents a page from appearing in search results. Nofollow prevents link equity from flowing through links. They control completely different things.
- Nofollow does not stop a page from being indexed. If you want a page out of Google, you need noindex, not nofollow.
- Do not block a page in robots.txt and add noindex. Google cannot see the noindex tag if it cannot crawl the page. Allow crawling, then use noindex.
- Since 2019, Google treats nofollow as a hint, not a directive. Google may choose to follow or pass equity through nofollow links if it finds value in doing so.
- Use the X-Robots-Tag HTTP header to apply noindex or nofollow to non-HTML resources like PDFs, images, and API responses.
Noindex and nofollow are two of the most confused terms in SEO. They sound similar, they often appear in the same meta tag, and people regularly use one when they mean the other. The result is pages accidentally hidden from Google or link equity leaking to pages that should not receive it.
The confusion matters because these directives control fundamentally different things. Noindex controls whether a page shows up in search results. Nofollow controls whether links on a page pass ranking power. Mixing them up can quietly damage your site's visibility for weeks before anyone notices.
This guide breaks down what each directive does, when to use each one, how to implement them correctly, and the specific mistakes that cause the most damage.
- What is noindex?
- What is nofollow?
- Key differences at a glance
- When to use noindex
- When to use nofollow
- Using noindex and nofollow together
- How to implement each directive
- The X-Robots-Tag HTTP header
- Noindex vs. robots.txt
- Google treats nofollow as a hint
- 7 mistakes that wreck your indexing
- Frequently asked questions
What is noindex?
Noindex is a directive that tells search engines not to include a specific page in their search index. A noindexed page will not appear in search results for any query.
You implement it with a meta robots tag in the <head> section of your HTML:
<meta name="robots" content="noindex" />
When Googlebot crawls a page and finds this tag, it processes the page content (reads it, follows its links, evaluates it) but does not add it to the search index. The page effectively becomes invisible in Google Search.
Important distinction: noindex does not stop crawling. Google still visits the page, still reads its content, and still follows its links (unless you also add nofollow). It just does not show the page in search results.
Google treats noindex as a directive, meaning it will obey it. If Google can access your page and finds a noindex tag, that page will be removed from or kept out of the index. This is different from canonical tags, which Google treats as hints and can override.
What is nofollow?
Nofollow tells search engines not to follow the links on a page or not to pass link equity (ranking power) through a specific link.
It can be applied at two levels:
Page-level nofollow (meta robots)
Applied to all links on the page:
<meta name="robots" content="nofollow" />
This tells search engines: "Do not pass link equity through any link on this page." Google will still crawl the linked pages if it finds them through other links elsewhere, but this page will not contribute ranking signals to those destinations.
Link-level nofollow (rel attribute)
Applied to individual links:
<a href="https://example.com" rel="nofollow">Example</a>
This is more surgical. It tells search engines to not pass equity through this specific link while allowing other links on the same page to function normally.
Nofollow was originally created in 2005 to combat comment spam. Blog comment sections were flooded with links to spammy sites trying to steal link equity. The nofollow attribute gave site owners a way to allow user-generated links without endorsing them.
Key differences at a glance
Here is a direct comparison to make the distinction clear:
- Noindex controls indexing (whether the page appears in search results)
- Nofollow controls link equity (whether links pass ranking power)
- Noindex is page-level only (applies to the entire page)
- Nofollow can be page-level or link-level (apply to all links or individual links)
- Google treats noindex as a directive (it obeys it)
- Google treats nofollow as a hint (it may choose to ignore it)
- Noindex does not stop Google from following links on the page
- Nofollow does not stop Google from indexing the page
That last point is where most confusion happens. If you add nofollow to a page thinking it will keep the page out of search results, you are wrong. The page can still be indexed. And if you add noindex thinking it will prevent link equity from flowing through the page's links, you are also wrong. Google can still follow and value those links.
When to use noindex
Use noindex on pages that should not appear in search results but still need to be accessible to users who have a direct link.
Thank you and confirmation pages
Pages that appear after a form submission, purchase, or signup. These pages serve a purpose for the user who just completed an action, but they have no value as a search result. Nobody searches for "thank you for subscribing."
Internal search results pages
Your site's internal search generates pages like /search?q=blue+shoes. These are thin content pages that duplicate your category or product pages. Google specifically recommends noindexing site search results.
Paginated archive pages
While main pagination pages should be indexed (page 2 of your blog has unique content), some paginated archives are just lists of links to actual content. If a paginated page adds no unique value beyond listing links that exist elsewhere, noindex it.
Staging and development environments
If your staging site is accessible to search engines (not password-protected), add noindex to every page. A common disaster is Google indexing your staging site and showing it in search results instead of your live site.
Admin, login, and dashboard pages
Internal pages that serve logged-in users only. They add nothing to search results and can create security concerns if indexed.
Duplicate content you cannot canonicalize
When canonical tags are not an option (for example, the content is similar but not identical enough to canonicalize), noindex the less important version to prevent duplicate content issues.
Tag and category archive pages (sometimes)
In WordPress and other CMS platforms, tag archives often create thin pages that list posts already accessible through your main blog page or category pages. If these archive pages rank for nothing and just duplicate your navigation, noindex them. Category pages with unique introductory content should generally stay indexed.
When to use nofollow
Use nofollow on links that you do not want to endorse or that should not pass ranking power to their destination.
User-generated content
Blog comments, forum posts, and community submissions often contain links you have not vetted. Adding rel="nofollow" (or rel="ugc", the modern equivalent) prevents these links from passing your site's authority to potentially spammy destinations.
Paid links and sponsorships
Google's guidelines require that paid links use rel="sponsored" or rel="nofollow". If you accept money for a link placement, review, or sponsored post, the link must be marked. Failing to do this can result in a manual action from Google against your site.
Untrusted external resources
If you link to a page for reference but do not want to vouch for it (a competitor's site, a source you are critiquing, a page with questionable content), nofollow keeps your site from endorsing it.
Login and signup links
Links to your login page, registration page, or password reset page do not need to pass link equity. These are functional navigation links, not content endorsements. Nofollowing them keeps your link equity focused on pages that actually need ranking power.
Widget and embedded content links
If your site offers embeddable widgets, badges, or tools that include a link back to your site, those links should be nofollow. Google has specifically called out widget links as a manipulation vector and expects them to be nofollowed.
Using noindex and nofollow together
You can combine both directives in a single meta tag:
<meta name="robots" content="noindex, nofollow" />
This tells search engines: "Do not index this page and do not follow any of its links."
When to combine them
- Staging environments: you do not want the pages indexed or the staging links passing equity
- Admin areas: internal pages that should be completely invisible to search engines
- Pages with untrusted outbound links: a page you want hidden from search that also contains links you do not endorse
When NOT to combine them
In most cases, you want one or the other, not both. A common mistake is adding noindex, nofollow everywhere as a "safety measure" when only noindex is needed. If a noindexed page has legitimate internal links to other pages on your site, keeping those links followable helps Google discover and crawl those destination pages. Adding nofollow unnecessarily blocks that crawl path.
How to implement each directive
Meta robots tag (HTML)
Place the tag inside the <head> section of the page:
<!-- Noindex only (links still followed) -->
<meta name="robots" content="noindex" />
<!-- Nofollow only (page still indexed) -->
<meta name="robots" content="nofollow" />
<!-- Both -->
<meta name="robots" content="noindex, nofollow" />
The name="robots" attribute targets all search engines. You can target specific bots with name="googlebot" or name="bingbot" if you want different behavior per engine.
Link-level rel attribute
For individual links, add the rel attribute directly to the anchor tag:
<!-- Classic nofollow -->
<a href="https://example.com" rel="nofollow">Example</a>
<!-- User-generated content (modern equivalent) -->
<a href="https://example.com" rel="ugc">User link</a>
<!-- Sponsored/paid link -->
<a href="https://example.com" rel="sponsored">Sponsored link</a>
Google introduced rel="ugc" and rel="sponsored" in 2019 as more specific alternatives to rel="nofollow". All three are treated the same way technically, but using the specific attributes gives Google better context about why the link is marked.
In WordPress
Both Rank Math and Yoast let you set noindex and nofollow per page in the SEO settings panel. For bulk changes (like noindexing all tag archives), use the plugin's global settings under Search Appearance or Titles & Metas.
The X-Robots-Tag HTTP header
Meta robots tags only work in HTML documents. For PDFs, images, video files, and other non-HTML resources, use the X-Robots-Tag HTTP response header.
X-Robots-Tag: noindex
X-Robots-Tag: nofollow
X-Robots-Tag: noindex, nofollow
This header is added at the server level. Here is how to set it for different server types:
Apache (.htaccess)
# Noindex all PDF files
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
Nginx
# Noindex all PDF files
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex";
}
Cloudflare Workers
// Add X-Robots-Tag to specific paths
if (url.pathname.startsWith('/internal/')) {
response.headers.set('X-Robots-Tag', 'noindex, nofollow');
}
The X-Robots-Tag is useful for any file type that Google can index. PDFs appear in search results by default, so if you have internal documents or draft PDFs that should not be public, the X-Robots-Tag is the right tool.
Noindex vs. robots.txt
This is one of the most common and damaging misunderstandings in technical SEO.
Robots.txt blocks crawling. It tells search engines: "Do not visit this page." If Google cannot crawl the page, it cannot see your noindex tag. So blocking a page in robots.txt and adding noindex creates a conflict:
- Robots.txt says: "Don't crawl this page"
- Noindex says: "Crawl this page but don't index it"
- Google obeys robots.txt first, never sees the noindex tag, and may index the URL anyway based on external links pointing to it
The result: Google shows the page in search results with a message like "A description for this result is not available because of this site's robots.txt." Your page is indexed with no snippet and no description. This is worse than simply being indexed normally.
The correct approach
- To keep a page out of search results: allow crawling (do not block in robots.txt) and add a noindex meta tag or X-Robots-Tag
- To save crawl budget: use robots.txt to block pages that have no SEO value and do not need to be indexed (like /wp-admin/ or /cart/)
- To do both: if a page is already indexed and you want to remove it, first add noindex (allow crawling so Google sees the tag), wait for Google to deindex it, then optionally block crawling in robots.txt afterward
Google treats nofollow as a hint
In September 2019, Google changed how it handles nofollow. Before this change, nofollow was a directive: Google always obeyed it and never followed nofollowed links. After the change, Google treats all three link attributes as hints:
rel="nofollow"-- hint to not follow or pass equityrel="ugc"-- hint that the link is user-generated contentrel="sponsored"-- hint that the link is paid or sponsored
This means Google may choose to follow a nofollowed link or pass equity through it if Google's algorithms decide the link provides value. In practice, Google still respects nofollow in most cases, but you can no longer treat it as an absolute block.
What this means in practice
For most sites, the change has minimal impact. The key takeaway is that nofollow is not a reliable way to control PageRank flow within your own site. If you were using nofollow on internal links to "sculpt" PageRank (directing more authority to certain pages by nofollowing links to others), that strategy no longer works reliably. Focus on a solid internal linking structure instead of trying to micro-manage link equity with nofollow.
7 mistakes that wreck your indexing
1. Using nofollow when you mean noindex
Adding nofollow to a page does not remove it from search results. The page can still be indexed through other discovery paths. If your goal is to keep a page out of Google, use noindex.
2. Blocking crawling and adding noindex
If robots.txt blocks Googlebot from reaching the page, Google cannot read the noindex tag. The page may still appear in search results based on external signals, but with no description. Allow crawling first, then noindex.
3. Noindexing pages that should be canonicalized
If you have duplicate content that should point to a preferred version, use a canonical tag, not noindex. Noindex removes the page entirely. A canonical consolidates its ranking signals to the preferred version. Using noindex on a page with valuable backlinks throws away that link equity instead of redirecting it.
4. Accidentally noindexing your entire site
This happens more often than you would expect, usually during a site launch or migration. A staging environment has noindex on every page, and the noindex tags are not removed when the site goes live. Or a developer adds a site-wide noindex in the CMS settings and forgets to turn it off. Always check meta robots tags as part of your SEO audit process.
5. Noindexing paginated pages
Setting noindex on /blog/page/2/ hides all the content only accessible through that pagination. Unlike canonicalizing pagination (which is a different kind of mistake), noindexing it means Google ignores the page entirely, including any unique posts listed on that page. Each paginated page has its own content and should generally be indexed with a self-referencing canonical.
6. Using nofollow on all internal links
Some site owners add nofollow to internal links pointing to pages like their privacy policy or contact page, thinking it will concentrate link equity on their "money pages." Since Google treats nofollow as a hint, this strategy does not reliably work. Worse, it can reduce the crawl discovery of those pages. If a page exists on your site and serves users, let its internal links flow naturally.
7. Forgetting noindex on JavaScript-rendered pages
Single-page applications (SPAs) that inject the noindex meta tag after JavaScript hydration can cause timing issues. If Google's initial HTML crawl does not see the noindex tag because it is added by JavaScript later, Google may index the page before the rendering pass catches the directive. For JavaScript-heavy sites, ensure the noindex tag is in the initial server-rendered HTML, not injected client-side.
Frequently asked questions
What is the difference between noindex and nofollow?
Noindex and nofollow control different things. Noindex tells search engines not to include a page in their search index, meaning it will not appear in search results. Nofollow tells search engines not to follow the links on a page or not to pass link equity through a specific link. A page can be noindexed but still have its links followed, or it can be indexed but have its links set to nofollow. They are independent controls that can be used separately or together.
Does nofollow prevent a page from being indexed?
No. Nofollow does not prevent a page from being indexed. It only tells search engines not to follow the links on that page or not to pass link equity through specific links. If you want to prevent a page from appearing in search results, you need to use the noindex directive. A common mistake is adding nofollow to a page thinking it will keep the page out of Google's index, when in reality the page can still be discovered through other links and indexed normally.
Can I use noindex and nofollow together?
Yes. You can combine them in a single meta robots tag: <meta name="robots" content="noindex, nofollow" />. This tells search engines to neither index the page nor follow its links. Use this combination for staging environments, internal admin pages, and pages with user-generated content you do not want search engines to process. In most cases, though, you only need one or the other. If a page has legitimate internal links, keeping them followable helps Google discover your other pages even if the source page itself is noindexed.
Should I use robots.txt or noindex to block pages from Google?
Use noindex when you want to keep a page out of search results. Robots.txt blocks crawling, which means Google cannot access the page to see the noindex tag. If other websites link to a page blocked by robots.txt, Google may still index the URL with no description. The correct approach is to allow crawling and add a noindex meta tag or X-Robots-Tag header so Google can discover the directive and remove the page from its index.
Need help getting your indexing and crawling under control? I offer technical SEO services that include crawl analysis, indexing audits, and robots configuration. Or start with a complete SEO audit to identify pages that are incorrectly indexed, missing from the index, or leaking link equity. Get in touch to discuss your project.

