WordPress feeds can be handled in two very different ways: you can hide their discovery links, or you can disable the feed endpoints themselves.
Those actions are often described as though they were interchangeable.
They are not.
Removing RSS or Atom links from the document <head> only stops WordPress from advertising those feeds automatically. The feed URLs can still exist, still return XML and still be discovered or requested directly.
Disabling the feeds themselves goes further. It changes what happens when someone requests a URL such as:
https://example.com/feed/
or one of WordPress’s many more specific feed endpoints.
This distinction matters because feeds are not limited to the main site feed. WordPress can expose feeds for comments, categories, tags, authors, searches, custom taxonomies and certain post type archives.
A site owner who removes two <link> elements from the page head may therefore believe RSS has disappeared while dozens of feed routes remain accessible.
Conversely, disabling feed routes without removing feed discovery links can leave browsers, crawlers and feed readers being pointed toward URLs that no longer work.
The cleanest configuration depends on what you actually want to accomplish.
This guide explains the difference between hiding and disabling WordPress feeds, what WordPress exposes by default, how discovery links differ from feed endpoints, how to disable each layer safely, and when keeping RSS remains useful.
What is a WordPress feed?
A WordPress feed is a machine-readable representation of site content that allows software to retrieve recent posts, comments or other collections without parsing normal HTML pages.
The official WordPress Feeds documentation describes the different feed formats and URLs WordPress can provide.
The most familiar example is the site’s RSS 2.0 feed:
https://example.com/feed/
A feed reader can request that URL periodically and receive structured information about recently published content.
Instead of receiving a normal webpage with navigation, scripts, styles and visual layout, the client receives feed markup intended for software consumption.
Conceptually:
Normal page
https://example.com/blog/
→ HTML for browsers
Feed
https://example.com/feed/
→ structured feed data for feed readers and applications
What are WordPress feeds used for?
RSS and related feed formats were originally central to following blogs and news websites without visiting each site manually.
They are still used today in several contexts.
Feed consumers can include:
- RSS reader applications;
- content aggregation platforms;
- automation services;
- newsletter systems;
- monitoring tools;
- podcast and publishing workflows;
- custom integrations;
- other WordPress websites using RSS blocks or widgets.
The current WordPress RSS block documentation still describes RSS as a machine-readable way of displaying content from another website.
This means feeds are not automatically obsolete simply because fewer visitors recognize the orange RSS icon.
What feed URLs does WordPress create?
The main site feed is only one part of the system.
A typical installation can expose several feed variations.
Main content feed
With pretty permalinks enabled, the primary feed is commonly available at:
https://example.com/feed/
WordPress can also understand explicit formats such as RSS2, Atom or other supported feed types depending on the request.
Comments feed
A site-wide comments feed can also exist:
https://example.com/comments/feed/
The WordPress feed documentation specifically distinguishes the comments RSS feed from feeds containing recent posts.
Category feeds
Individual categories can have their own feeds:
https://example.com/category/security/feed/
Tag feeds
Tags can expose feeds as well:
https://example.com/tag/wordpress/feed/
Author feeds
An author’s archive can potentially have a feed:
https://example.com/author/example/feed/
Search feeds
WordPress can generate feeds for search-result queries.
Custom taxonomy feeds
Public taxonomies can have feed representations.
Post type archive feeds
Public post types with compatible archive behavior can also expose feeds.
The current WordPress feed_links_extra() documentation explicitly handles feed discovery for post type archives, categories, tags, taxonomies, authors, search results and individual post comments.
For a dedicated map of the available addresses, see WordPress RSS Feed URLs Explained.
How WordPress advertises feeds
WordPress does not rely only on visitors knowing that /feed/ exists.
It can advertise available feeds inside the document head.
A typical page may contain markup similar to:
<link
rel="alternate"
type="application/rss+xml"
title="Example Site Feed"
href="https://example.com/feed/"
/>
and:
<link
rel="alternate"
type="application/rss+xml"
title="Example Site Comments Feed"
href="https://example.com/comments/feed/"
/>
Additional pages can advertise more specific feeds.
For example, a category archive may advertise that category’s RSS feed.
The purpose of this markup is discovery.
Software inspecting the page can learn that an RSS version exists without having to guess the feed URL.
For a deeper explanation of this layer, see How WordPress Advertises RSS Feeds by Default.
Hiding feeds means removing discovery
When people say they want to “hide WordPress feeds,” they often mean they want to remove these <link rel="alternate"> entries from the page head.
This is a presentation and discovery change.
Before cleanup:
<head>
...
<link rel="alternate"
type="application/rss+xml"
href="https://example.com/feed/" />
...
</head>
After cleanup:
<head>
...
</head>
The page no longer advertises the feed.
But if someone manually requests:
https://example.com/feed/
WordPress may still return the feed normally.
This is why hiding a feed is not equivalent to disabling it.
Disabling feeds means changing endpoint behavior
Disabling WordPress feeds means preventing feed requests from returning normal feed content.
The request:
https://example.com/feed/
may instead:
- return an error;
- redirect elsewhere;
- return a custom response;
- be blocked at the application or server layer.
This is an endpoint-level change.
The feed is no longer merely undiscoverable. The route itself stops functioning as a normal syndication feed.
The dedicated implementation guide is How to Disable RSS Feeds in WordPress.
Hiding vs. disabling WordPress feeds
The simplest way to understand the difference is:
Hide feed
↓
remove advertisement
↓
feed endpoint can still work
Disable feed
↓
change endpoint behavior
↓
feed content is no longer served normally
Another way to express it is:
| Action | Head discovery links | Feed URL |
|---|---|---|
| Default WordPress | Present | Works |
| Hide feeds only | Removed | Still works |
| Disable endpoints only | May remain | Disabled |
| Complete feed shutdown | Removed | Disabled |
This distinction is the foundation for configuring feeds correctly.
For a narrower comparison focused specifically on implementation, see Disable RSS Feeds vs. Remove Feed Links.
Why would you hide feeds without disabling them?
Removing feed discovery while leaving feed endpoints active can be useful when feeds still serve a technical purpose but you do not want every page advertising them.
Custom integrations still need the feed
A newsletter system, automation platform or internal application may consume:
https://example.com/feed/
directly.
Removing the HTML discovery link does not break a client that already knows the URL.
You want cleaner head output
A site that does not expect visitors or applications to discover RSS automatically may choose to remove unnecessary discovery metadata.
This is similar to other WordPress head cleanup decisions.
See Cleaning Up WordPress’s Default Head Output.
You want feeds available but less prominent
A feed can remain available for users who intentionally subscribe while no longer being advertised automatically throughout the site.
This is a legitimate middle ground.
Why would you disable WordPress feeds completely?
Some websites simply have no syndication requirement.
Examples can include:
- corporate brochure sites;
- landing-page websites;
- private applications;
- membership platforms where content should remain controlled;
- websites whose content is distributed only through another API;
- sites deliberately minimizing unnecessary public endpoints.
If nobody legitimately consumes the feeds, leaving them active may provide no practical benefit.
Are WordPress feeds a security risk?
A standard public RSS feed is not automatically a vulnerability.
If the site already publishes content publicly, the feed is another representation of that public information.
However, feeds can affect the site’s exposed surface.
They can reveal structured information about:
- recent posts;
- publication dates;
- authors;
- categories;
- comments;
- permalinks;
- content excerpts or full text.
Whether this matters depends on the site.
A feed should never expose private information merely because an administrator assumed nobody knew its URL.
Access control must protect sensitive content independently of feed discovery.
Do feeds make content scraping easier?
Feeds provide structured content, so they can make automated retrieval convenient.
A scraper does not need to parse menus, page builders or visual HTML if WordPress already provides standardized XML.
That can make feeds attractive to:
- legitimate aggregators;
- feed readers;
- automation tools;
- content scrapers.
Disabling feeds may remove one convenient scraping source.
It does not prevent scraping.
Any public webpage can still be requested and parsed.
Therefore feed removal should not be marketed as serious anti-scraping protection.
Do feeds create duplicate content?
Feeds contain versions of information that also appears on normal webpages, but this should not automatically be interpreted as a duplicate-content problem requiring emergency removal.
Search engines understand common syndication formats and websites routinely expose RSS feeds.
The site’s normal pages should still provide consistent SEO signals through:
- canonical URLs;
- internal links;
- XML sitemaps;
- redirect behavior;
- normal crawlable page architecture.
If you are investigating actual URL duplication, see Duplicate Content in WordPress, Explained.
Do WordPress feeds matter for SEO?
RSS feeds are not a requirement for normal search-engine indexing.
Search engines discover pages through many other mechanisms, including:
- internal links;
- XML sitemaps;
- external backlinks;
- previous crawl history;
- normal site navigation.
A website does not need an RSS feed simply to appear in Google.
Conversely, disabling RSS should not be treated as an SEO optimization by itself.
The decision should be based on publishing and integration requirements.
RSS feeds are not XML sitemaps
RSS feeds and XML sitemaps are both XML-based resources, which occasionally causes administrators to confuse them.
They serve different purposes.
RSS feed
A feed is designed primarily for syndication and recent content consumption.
XML sitemap
An XML sitemap is designed to provide search engines with URLs that the site wants crawled and understood as part of its public content set.
Disabling RSS does not mean you should disable your XML sitemap.
Likewise, keeping an XML sitemap does not preserve RSS functionality.
They are separate systems.
How WordPress outputs the main feed links
WordPress commonly adds core feed discovery through functions attached to wp_head.
Two important functions are:
feed_links()
feed_links_extra()
The first handles primary site and comments feed links.
The second handles contextual feed links such as categories, tags, authors, search results and other supported archive contexts.
The feed_links_extra() code reference shows the range of conditional feeds WordPress can advertise.
How to hide WordPress feed links
If the objective is only to remove automatic RSS discovery from the document head, the relevant WordPress actions can be removed.
A focused implementation is:
add_action(
'after_setup_theme',
function () {
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
}
);
This targets feed discovery output.
It does not disable the feed routes.
After applying it, you should verify both:
Page source:
no unwanted RSS discovery links
Direct request:
https://example.com/feed/
still works
That confirms you have hidden discovery rather than disabled feeds.
What feed_links() controls
The main feed output typically advertises:
- the main posts feed;
- the main comments feed.
Removing this callback prevents those standard discovery entries from being printed through that mechanism.
It does not change how WordPress processes a direct feed request.
What feed_links_extra() controls
The extra feed output is more contextual.
Depending on the requested page, WordPress can advertise feeds for:
- individual post comments;
- post type archives;
- categories;
- tags;
- custom taxonomies;
- authors;
- search results.
Removing only the main feed_links output while leaving feed_links_extra active can therefore produce incomplete cleanup.
Modern WordPress also provides granular feed-link filters
Recent WordPress versions include more granular filters around some feed discovery output.
For example, WordPress exposes filters controlling whether specific contextual feed links are displayed.
The official documentation for feed_links_extra_show_post_comments_feed shows that individual post comments feed discovery can be controlled separately from the global comments feed.
This is useful when a project wants selective behavior instead of removing all feed discovery globally.
Removing feed links does not remove feed URLs
This cannot be overstated.
After removing:
feed_links
feed_links_extra
the following may still return valid feeds:
/feed/
/comments/feed/
/category/example/feed/
/tag/example/feed/
/author/example/feed/
The site’s head is cleaner, but the application still serves the endpoints.
If your actual requirement is:
No RSS or Atom feeds should be available
then discovery cleanup alone is incomplete.
How WordPress processes feed requests
WordPress routes feed requests through feed-specific actions.
The core do_feed() documentation shows that WordPress determines the requested feed type and calls a corresponding action.
Possible actions include:
do_feed_atom
do_feed_rdf
do_feed_rss
do_feed_rss2
Individual handlers then load the appropriate feed templates.
For example, do_feed_rss2() loads either the RSS2 posts feed or comments feed depending on the request.
This is the layer that must be changed if you actually want to prevent feed content from being served.
How to disable WordPress feed endpoints
A common approach is to replace WordPress’s normal feed handlers with a custom response.
For example:
function my_disable_wordpress_feed() {
wp_die(
esc_html__( 'Feeds are disabled on this website.', 'example' ),
'',
array( 'response' => 404 )
);
}
add_action( 'do_feed', 'my_disable_wordpress_feed', 1 );
add_action( 'do_feed_rdf', 'my_disable_wordpress_feed', 1 );
add_action( 'do_feed_rss', 'my_disable_wordpress_feed', 1 );
add_action( 'do_feed_rss2', 'my_disable_wordpress_feed', 1 );
add_action( 'do_feed_atom', 'my_disable_wordpress_feed', 1 );
This example illustrates endpoint interception.
A production implementation should deliberately decide:
- which feed formats to disable;
- whether comment feeds are treated differently;
- which HTTP response to return;
- whether a redirect is more appropriate;
- whether custom feeds registered by plugins also need review.
There is no universal requirement that every disabled feed must behave identically.
Should disabled feeds return 404?
If the feed genuinely no longer exists, a 404 Not Found response is conceptually reasonable.
However, some implementations choose to redirect feed requests to the homepage or another destination.
That decision should be deliberate.
A blanket redirect such as:
/feed/
→ /
may be convenient for users but does not necessarily communicate that the requested resource no longer exists as clearly as an appropriate error response.
Do not redirect every legacy endpoint simply because redirects feel friendlier.
Use response semantics that match what happened to the resource.
Should feeds redirect to the normal page?
This can make sense in certain narrowly controlled contexts, but it becomes difficult for archive feeds.
A category feed:
/category/security/feed/
could theoretically redirect to:
/category/security/
but implementing equivalent behavior across every possible feed type requires more routing logic.
If feeds are simply unsupported, a consistent disabled response can be easier to maintain.
Do not disable only /feed/
A common incomplete implementation blocks:
https://example.com/feed/
and assumes WordPress feeds are gone.
But WordPress may still expose:
/comments/feed/
/category/example/feed/
/tag/example/feed/
/author/example/feed/
/search/example/feed/
and other supported variations.
This is why disabling the feed handlers is generally more comprehensive than writing one rewrite rule for the main feed URL.
Comments feeds deserve separate review
WordPress can provide both site-wide and per-post comment feeds.
Even a site that wants to preserve post syndication may decide comment feeds are unnecessary.
This allows several possible configurations:
Posts feed: enabled
Comments feed: enabled
Posts feed: enabled
Comments feed: disabled
Posts feed: disabled
Comments feed: disabled
The correct choice depends on how the site publishes and distributes content.
What happens if comments are disabled?
Disabling WordPress comments and disabling comments feeds are related but not necessarily identical operations.
Existing comments can remain stored, and feed-related functionality can require separate review depending on the implementation.
If your site is removing discussion functionality entirely, see How to Completely Disable Comments in WordPress.
Feed settings under Settings → Reading do not disable feeds
WordPress provides feed-related options under Settings → Reading.
The current Reading Settings documentation includes controls for:
- how many recent posts syndication feeds show;
- whether each article displays full text or a summary.
These settings modify feed content.
They do not provide a native switch that means:
Disable every RSS feed
Setting feeds to show fewer posts or summaries is not equivalent to removing feed access.
Full text vs. summary is not hiding vs. disabling
Another terminology problem appears when administrators change:
For each article in a feed, show:
Full text
Summary
Selecting Summary reduces how much article content appears in the feed.
The feed still exists.
It can still be discovered.
It can still be requested.
This setting is about feed payload, not availability.
Can plugins create additional feeds?
Yes.
WordPress allows plugins and themes to register custom feed behavior.
A plugin may expose a feed for:
- products;
- events;
- podcasts;
- custom content;
- special integrations;
- data synchronization.
Removing core feed handlers does not automatically guarantee that every plugin-defined feed has also disappeared.
When the requirement is a complete public-feed shutdown, audit custom routes as well.
Can WooCommerce or other plugins depend on feeds?
Large WordPress installations can use feeds or feed-like XML endpoints for functionality that is unrelated to ordinary blog subscriptions.
Never assume that disabling core RSS is harmless on a complex site without checking dependencies.
Before making the change, review:
- installed plugins;
- external integrations;
- automation services;
- newsletter systems;
- podcast tools;
- content syndication;
- custom applications.
How hiding feeds affects performance
Removing a few feed discovery links from the document head has a negligible performance impact.
The markup is tiny.
This change should be described as cleanup rather than optimization.
It will not meaningfully improve:
- Largest Contentful Paint;
- Interaction to Next Paint;
- server response time;
- JavaScript execution;
- image loading.
How disabling feeds affects server activity
Disabling unused feed endpoints can prevent WordPress from generating feed responses when bots, scrapers or other clients request them.
The operational benefit depends entirely on traffic.
A site receiving almost no feed requests will see almost no measurable difference.
A site being heavily scraped through RSS may reduce some application work by rejecting those requests earlier.
Again, this should not be exaggerated into a universal performance strategy.
Should feeds be blocked in robots.txt?
Robots directives and feed availability are separate systems.
Adding feed paths to robots.txt asks compliant crawlers not to crawl those paths.
It does not disable the feed.
Anyone can still request:
/feed/
directly.
Therefore:
robots.txt restriction
≠
feed disabled
Use robots rules for crawl management, not as access control.
Should feed URLs be removed from XML sitemaps?
Normal WordPress XML sitemaps should focus on canonical public content URLs rather than RSS feed variants.
You generally do not need feed URLs appearing as separate sitemap entries.
Feeds and sitemaps serve different purposes and should remain conceptually separate.
Should you keep RSS on a content-heavy website?
Often, yes.
A news site, publication, technical blog or frequently updated knowledge base may still benefit from RSS.
Readers who use feed applications can follow updates without relying on:
- social-media algorithms;
- email newsletters;
- push notifications;
- proprietary discovery platforms.
RSS is a simple open publishing mechanism.
If readers or integrations use it, removing it merely because it looks old is not an improvement.
Should you keep feeds on a corporate website?
That depends on whether the site publishes recurring content.
A corporate website with an active news, insights or resources section may still benefit from a feed.
A five-page brochure site that changes twice per year may have little practical use for syndication.
There is no universal WordPress best practice requiring every site to make the same decision.
What about head cleanup only?
If the site’s primary objective is simply cleaner markup, removing feed discovery may be enough.
This approach preserves maximum compatibility.
You remove:
<link rel="alternate" type="application/rss+xml" ...>
while keeping:
/feed/
functional.
This mirrors the general philosophy of removing discovery metadata without automatically disabling the corresponding feature.
The same distinction appears with:
- REST API discovery;
- shortlinks;
- RSD;
- oEmbed discovery.
How TheOneWP handles WordPress feed cleanup
TheOneWP treats feed discovery and feed functionality as separate decisions rather than combining them into one ambiguous switch.
This matters because site owners may want different outcomes.
Remove RSS feed links
When the objective is head cleanup, TheOneWP can remove WordPress’s RSS and related feed discovery links without necessarily preventing direct feed access.
This preserves compatibility for applications that already know the feed URL.
Disable RSS feeds
When the objective is to stop feed functionality entirely, feed endpoints can be disabled separately.
This is a broader change and should be enabled only after confirming that the site does not rely on RSS syndication.
The distinction follows a simple rule:
Remove discovery when you do not want advertising.
Disable functionality when you do not want the feature.
How to audit WordPress feed behavior
A proper feed audit should inspect both discovery and endpoint behavior.
Inspect the document head
Search the rendered HTML for:
application/rss+xml
rel="alternate"
Identify which feeds the page advertises.
Request the main feed directly
Open:
https://example.com/feed/
and record the response.
Test the comments feed
Check:
https://example.com/comments/feed/
Test taxonomy feeds
Choose representative categories and tags:
/category/example/feed/
/tag/example/feed/
Check post type archives
If the site has public custom post types, test whether archive feeds exist.
Check author and search feeds
These are easy to overlook during a cleanup audit.
Review server logs
Before disabling feeds, check whether anything currently requests them.
Look for:
- legitimate reader traffic;
- newsletter services;
- automation clients;
- scrapers;
- bots;
- custom integrations.
A feed receiving real legitimate traffic deserves more investigation than one nobody has requested in months.
How to test after hiding feed links
After removing discovery markup:
- clear WordPress caches;
- clear server or CDN caches;
- inspect several page types;
- confirm RSS discovery links are gone;
- request the feed URL directly;
- verify it still works if that is the intended configuration.
Testing only the homepage is insufficient because contextual feed links can appear on archive or singular pages.
How to test after disabling feeds
When feeds are supposed to be unavailable, test multiple endpoint types.
At minimum, verify:
/feed/
/comments/feed/
/category/example/feed/
/tag/example/feed/
Then test any relevant:
- author feeds;
- search feeds;
- custom taxonomy feeds;
- custom post type feeds;
- plugin-created feeds.
Confirm that they return the exact response you intended.
Common mistakes when managing WordPress feeds
Removing feed links and assuming feeds are disabled
This removes discovery, not endpoint functionality.
Disabling feeds but leaving discovery links
This can leave pages advertising resources that no longer work.
If feeds are intentionally disabled, remove their discovery markup too.
Blocking only /feed/
WordPress has many feed URL variations.
Audit the actual feed handlers and contextual endpoints.
Using robots.txt as feed security
A robots rule does not prevent direct access.
Setting feeds to Summary and assuming content is protected
Summary mode only changes the feed payload.
The feed remains public.
Disabling feeds because they look obsolete
Age is not a technical requirement.
Check whether users, services or automations still depend on them.
Treating feed removal as major SEO optimization
RSS availability is rarely the thing preventing a website from ranking.
Treating feed removal as anti-scraping protection
Public HTML remains scrapeable.
Forgetting comments and contextual feeds
The main feed is only one endpoint in WordPress’s syndication system.
Hiding vs. disabling WordPress feeds checklist
- Decide whether the objective is discovery cleanup or full feed shutdown.
- Understand that removing feed links does not disable feed endpoints.
- Understand that disabling endpoints does not automatically remove discovery markup.
- Identify whether the site uses RSS for real syndication.
- Check newsletter and automation integrations.
- Check external applications and feed readers.
- Inspect the document head for RSS discovery markup.
- Check the main
/feed/endpoint. - Check the site-wide comments feed.
- Check category feeds.
- Check tag feeds.
- Check author feeds.
- Check search feeds.
- Check custom taxonomy feeds.
- Check public custom post type archive feeds.
- Review plugin-defined custom feeds.
- Use
feed_linksandfeed_links_extracleanup only when the objective is discovery removal. - Use feed handlers when the objective is actual endpoint disabling.
- Choose an appropriate HTTP response for disabled feeds.
- Do not confuse Reading Settings with feed disabling.
- Do not confuse Summary mode with feed protection.
- Do not rely on
robots.txtas access control. - Do not treat feeds and XML sitemaps as the same feature.
- Do not describe feed removal as major performance optimization.
- Do not describe it as complete anti-scraping protection.
- Clear caches before testing.
- Test several page types after removing feed discovery.
- Test several feed endpoint types after disabling feeds.
- Document whether the site intentionally hides or fully disables feeds.
Related guides
- How to Disable RSS Feeds in WordPress
- WordPress RSS Feed URLs Explained
- Disable RSS Feeds vs. Remove Feed Links
- How WordPress Advertises RSS Feeds by Default
- Cleaning Up WordPress’s Default Head Output
Final recommendation
Hiding and disabling WordPress feeds solve different problems.
If your website still uses RSS but you do not want WordPress advertising feeds automatically throughout the document head, remove the discovery links and leave the endpoints available.
If the site has no legitimate feed consumers and you want RSS functionality gone entirely, disable the actual feed handlers and remove the corresponding discovery markup as well.
Do not assume that deleting two lines from wp_head has disabled syndication.
Likewise, do not disable a functioning publishing interface merely because nobody on the current team personally uses an RSS reader.
Check actual dependencies first.
Review the main feed, comments feed, taxonomy feeds, author feeds, search feeds, custom post type feeds and any plugin-defined feed routes that matter to the project.
Then choose the narrowest configuration that matches the requirement.
If the goal is cleaner markup, hide discovery.
If the goal is no feed access, disable the endpoints.
If readers or integrations genuinely use RSS, keep it.
The important part is not whether WordPress feeds are enabled or disabled. It is knowing exactly which layer you changed and why.

