Skip to content

How to display an RSS feed on your website.

To display an RSS feed on your website, you need the feed’s address and something that reads it: WordPress’s free RSS block, a few lines of code, or a feed widget. Here is how to find the address, and what each method shows.

The Vitraz teamWe build the embed that puts social feeds on websites
Published
Reading time
9 min read
A laptop on an oak desk showing a column of article previews, each with a small photo, beside a coffee cup and a stack of newspapers, lit by blue and amber stained-glass light
On this page
  1. How do you display an RSS feed on your website?
  2. Find the feed address
  3. WordPress: the RSS block
  4. Wix, Squarespace, Webflow
  5. Plain HTML and JavaScript
  6. When a feed won’t show
  7. With pictures, on any site

The short answer

  • To display an RSS feed on your website you need the feed’s address and something that fetches it and turns its items into HTML.
  • WordPress has a free RSS block that does this on your server: up to 20 items, with titles, dates, authors and excerpts, and never pictures.
  • Wix, Squarespace and Webflow have no block that reads another site’s feed. Wix’s Podcast Player is the exception, for podcast feeds.
  • A few lines of JavaScript work only when the feed allows it. Of 13 public feeds we tried from another website, 2 did.
  • For pictures, a feed that refreshes itself on any site builder, or several feeds in one list, use a feed widget.

How do you display an RSS feed on your website?

Find the feed’s address, then give it to something that fetches the feed and turns its items into HTML. On WordPress that is the free RSS block. On other site builders it is a feed widget pasted into a code element. On a site you code yourself, it is a short script, or code on your server.

An RSS feed is a file, not a page. Open one in a browser and you get XML, written for programs called feed readers. Showing it on a website means doing a reader’s job on your page: fetching the file, picking out each item’s title, link and date, and drawing them. The methods differ in where that work happens, and that decides what each can show.

Four ways to display an RSS feed on a website
MethodWhere it worksWhat it showsPictures
WordPress’s RSS blockAny WordPress site with the block editorUp to 20 linked titles, with dates, authors and excerpts if you switch them onNo
Your own JavaScriptAny page that runs scripts, but only for feeds that allow itWhatever you writeIf you write it
Code on your serverSites with a server or serverless functions you controlWhatever you writeIf you write it
A feed widgetAny site with an HTML or code elementDepends on the widgetUsually

The rest of this guide takes them in turn, after the step all four share: finding the feed.

How do you find a website’s RSS feed address?

View the site’s page source and search for application/rss+xml or application/atom+xml: the href beside it is the feed. Most sites announce their feed that way. If none is there, try the address pattern for the platform the site runs on, from the table below, and open it to check you get a feed back.

The announcement is a link element in the page’s head. The RSS autodiscovery specification requires three attributes on it, rel, type and href, and feed readers find a site’s feed by looking for exactly this.

What to look for in a page’s source
<link rel="alternate" type="application/rss+xml"
  title="Example blog" href="https://example.com/feed/">
Where common platforms put their feeds
PlatformFeed addressFormat
WordPressexample.com/feed/RSS 2.0
Wix blogThe blog’s address, then /blog-feed.xmlRSS 2.0, newest 20 posts
SquarespaceThe page’s address, then ?format=rssRSS 2.0, newest 20 items
Ghostexample.com/rss/RSS 2.0
Substackname.substack.com/feedRSS 2.0
Mediummedium.com/feed/@usernameRSS 2.0
Shopify blogThe blog’s address, then .atomAtom
YouTube channelyoutube.com/feeds/videos.xml?channel_id=IDAtom
MastodonThe profile’s address, then .rssRSS 2.0, posts without titles
Blueskybsky.app/profile/handle/rssRSS 2.0
GitHub releasesgithub.com/owner/repo/releases.atomAtom

We fetched each of these on 11 November 2026, except Squarespace and Shopify, which come from their help centres. A YouTube feed needs the channel’s ID rather than its handle; our guide to embedding a YouTube channel shows where to find it.

RSS 2.0 and Atom are two formats for the same job, and everything in this guide reads both. Two things the table does not show. A Mastodon feed’s items have no titles, only the post’s text, so a tool that lists titles shows them blank or untitled. And some sites refuse feed requests from programs: Reddit’s feeds answered our test with 403 Blocked. Open a feed in your browser before you build around it, then check it works where you put it.

How do you add an RSS feed to a WordPress site?

Add an RSS block: type /rss on an empty line, then paste the feed’s address. Choose how many items to show, from 1 to 20, and switch on the date, author and excerpt if you want them. WordPress fetches the feed on your server, not in the visitor’s browser, and keeps a copy for 12 hours.

  1. Add the block. Select the + inserter and search for RSS, or type /rss on an empty line and press Enter.
  2. Paste the feed’s address into the block and confirm it. The block lists the feed’s newest titles straight away, five of them by default.
  3. Choose what it shows in the block’s settings: Number of items (1 to 20), Display author, Display date, Display excerpt, and Max number of words in excerpt (10 to 100). The toolbar switches between List view and Grid view, and the grid takes 2 to 6 columns.
  4. Publish, then check the page. Links open in the same tab unless you switch on Open links in new tab.
WordPress's RSS block in list view on a published page, showing three NASA stories as linked titles, each with its date, one with an author, and a short excerpt, and no pictures
The RSS block in WordPress 7.1, list view, reading NASA’s feed on 11 November 2026. NASA’s feed carries pictures; the block shows none. The first excerpt is navigation text, because that is what the feed’s description holds for that story.

What the block leaves out

  • Pictures. The block prints each item’s title, date, author and excerpt, and nothing else. We checked its source code: there is no image in its output, whatever the feed carries.
  • Formatting. Excerpts lose their HTML and are cut at your word limit, with […] at the end. An excerpt is only as good as the feed’s description, as NASA’s first story shows.
  • Authors, sometimes. Display author shows a name only for items whose feed gives one. Two of NASA’s three stories had none.
  • Your own feed. The block refuses your site’s own home address, to avoid a loop that slows the site, and suggests the Latest Posts block instead.
  • A second feed. Each block reads one address. To merge feeds into one list you need a plugin or code.

The block fetches through WordPress’s fetch_feed function, which caches a feed for 12 hours by default, so a story published in the morning may not appear until the evening. Developers can change that with the wp_feed_cache_transient_lifetime filter. Because the list is built on your server, the titles are in the page’s HTML when it arrives, and the browser rule the next sections deal with never comes into it.

WordPress's RSS block in grid view with three columns, showing three WordPress.org news posts as linked titles with dates and excerpts
The same block in grid view, three columns, reading WordPress’s own news feed: titles, dates and 20-word excerpts. The fonts and spacing are the theme’s, here Twenty Twenty-Five.

How do you add an RSS feed in Wix, Squarespace or Webflow?

None of the three has a block that displays another site’s feed. Wix’s RSS button and Squarespace’s RSS block link visitors to your own feed, and Webflow generates feeds from your CMS collections. The exception is Wix’s Podcast Player, which reads a podcast feed. For anything else, paste a feed widget into the builder’s code element.

What each builder has, and where a widget’s code goes
PlatformBuilt inWhere the code goesWatch for
WixAn RSS button for your own blog; the Podcast Player, for podcast feedsAdd Elements, Embed Code, Popular Embeds, Embed HTMLWix runs the code in a frame of its own that does not resize, so give the element room.
SquarespaceAn RSS block, which links to your own feedA Code blockScripts need the Core, Plus or Advanced plan, and may not show while you are logged in.
WebflowRSS feeds generated from your own CMS collectionsA Code Embed elementThe Designer shows a placeholder; preview or publish to see the feed.

All three help centres describe feeds going out, not coming in. Squarespace’s RSS block adds a button visitors use to subscribe, and its feeds carry the 20 most recent items. Wix’s RSS button points at your own blog’s feed, also capped at 20 posts. Webflow’s help covers setting up an RSS feed for a collection, which is your content going out.

The one way in is for podcasts. Wix calls its Podcast Player an RSS reader: add the app from Add Apps, then in its Settings select Insert next to RSS Feed link, paste the feed and select Connect. Wix describes it only for podcast feeds, so for a blog or a news feed, use a widget.

Can you display an RSS feed with JavaScript?

Only if the feed allows it. Browsers stop a page from reading a file on another site unless that site sends an Access-Control-Allow-Origin header. In our test of 13 public feeds from a page on another domain, 2 loaded: Mastodon’s and NASA’s. The other 11, WordPress.org, YouTube and Substack among them, were blocked.

The rule is cross-origin resource sharing, usually shortened to CORS. It applies to requests a page’s scripts make, not to a person opening the feed, which is why a feed that opens fine in a tab can fail from a script with nothing but “Failed to fetch” in the console. We ran the test from a page on example.com, in a current desktop browser.

Could a script on another website read the feed? 11 November 2026
ResultFeedsWhy
LoadedMastodon (mastodon.social), NASABoth send Access-Control-Allow-Origin: *
BlockedNPRIt allows one other site, its own apps.npr.org
BlockedWordPress.org News, a WordPress.com blog, YouTube, Bluesky, Substack, Medium, Ghost, GitHub releases, BBC News, and this blog’s own feedNo Access-Control-Allow-Origin header at all

If your feed is one of the few that allow it, or lives on the same domain as your page, a short script is enough. This one lists the five newest items as links, and ran against Mastodon’s feed in our test:

Five newest items from an RSS feed that allows it
<ul id="rss-feed"></ul>
<script>
  const FEED = "https://mastodon.social/@Mastodon.rss";

  fetch(FEED)
    .then((res) => res.text())
    .then((text) => {
      const xml = new DOMParser().parseFromString(text, "application/xml");
      const list = document.getElementById("rss-feed");

      [...xml.querySelectorAll("item")].slice(0, 5).forEach((item) => {
        const href = item.querySelector("link")?.textContent ?? "";
        if (!href.startsWith("https://")) return;

        const html = item.querySelector("description")?.textContent ?? "";
        const words = new DOMParser()
          .parseFromString(html.replaceAll("</p>", "</p> "), "text/html")
          .body.textContent.trim();

        const link = document.createElement("a");
        link.href = href;
        link.textContent =
          item.querySelector("title")?.textContent || words.slice(0, 120);

        const li = document.createElement("li");
        li.append(link);
        list.append(li);
      });
    });
</script>
  • It reads RSS 2.0. For Atom, look for entry instead of item, and take the link’s href attribute.
  • It writes with textContent, never innerHTML. A feed’s HTML comes from someone else, and markup inserted into your page can run code there.
  • It skips any link that is not https, so a link in the feed can never become a script.
  • Mastodon’s items have no titles, so it falls back to the first 120 characters of the post.

For every other feed, fetch it on a server: your own backend, a serverless function, or a service that does it for you. A server is not a browser, so CORS does not apply, and it can cache the feed instead of fetching it once per visitor. That is exactly what WordPress’s block does.

Why is an RSS feed not showing on my website?

Usually one of four things: the address is the site’s page, not its feed; the feed is broken; its server refuses programs; or an old copy is cached. Open the address in a browser first. If you get a feed, the block or widget is the problem; if you get a page or an error, the feed is.

  • “RSS Error: WP HTTP Error: A valid URL was not provided.” WordPress could not fetch the address. Check it opens in a browser, and that it is the feed, not the blog’s page.
  • “An error has occurred, which probably means the feed is down.” WordPress fetched something with no items in it. The feed may be empty, broken, or a page that is not a feed.
  • New items are missing. WordPress keeps a copy for 12 hours, and widgets refresh on their own timetable. Check the feed itself has the item before you look further.
  • The feed works in your browser but not on the site. The feed’s server may refuse programs, as Reddit’s did in our test. For a script in the page, it is almost always CORS.
  • Nothing loads on an https page. A script on a secure page cannot fetch a feed that is plain http. Try the https address, or fetch the feed on a server.

Check the feed itself

The W3C’s Feed Validation Service reads a feed from its address and lists what is wrong with it, for RSS and Atom alike. A feed that fails there will fail in most readers, blocks and widgets too, and the fix belongs to whoever publishes it.

How do you show an RSS feed with pictures on any website?

Use a feed widget that reads the feed on its own servers and finds each item’s picture. Vitraz does both: paste the feed’s address, and it shows the newest items with their pictures, titles and dates, refreshing on its own. You paste its embed code once, in WordPress or any site builder’s code element.

An RSS feed widget from Vitraz reads RSS 2.0, RSS 1.0 and Atom. For each item it takes the picture the feed declares, in an enclosure, a media tag or a podcast episode’s artwork, and otherwise the first image in the post, so a blog’s posts arrive with their cover photos. It reads up to 24 items each time it checks, links each one to the original, and lets you pin the one you want first. Because it fetches on our servers, CORS never comes into it.

RSS feeds are a free source on every plan, Free included, where the feed refreshes daily. A feed can sit beside other networks in one wall, and takes the layout you choose rather than a fixed list. On WordPress, our WordPress social feed plugin adds it as a block or a shortcode.

Our one-minute film of it: paste a blog’s feed address with nothing to sign in to, pin the post you want first, and show the posts as a timeline or as cards. Watch on YouTube.

Questions people also ask

A public feed is published for programs to read, but the posts remain their authors’ work. Showing headlines and short excerpts that link to the original is the common use; republishing whole articles needs the publisher’s permission. Some sites set terms for their feeds, so read those first.

From 1 to 20, and five by default. It can only show what the feed holds, though: WordPress’s own feeds carry the 10 newest posts unless the site changes that, and Wix and Squarespace feeds carry 20.

Not with WordPress’s RSS block, which reads one address per block. WordPress’s fetch_feed function can merge several feeds in code, and most feed widgets take several sources. In Vitraz each feed is a source, and RSS feeds can share a wall with social networks.

Yes. A podcast feed is an RSS feed whose items carry audio files. Wix’s Podcast Player plays one. WordPress’s RSS block lists the episodes as titles, without a player. Vitraz shows each episode with its artwork and links to it, also without playing the audio.

They are two formats for the same job. RSS 2.0 is published by the RSS Advisory Board; Atom was standardised by the IETF as RFC 4287 in 2005. Feed readers, WordPress’s RSS block and Vitraz all read both, so you rarely have to choose.

Sources

  1. 1.RSS blockWordPress.org Documentation
  2. 2.fetch_feed()WordPress Developer Resources
  3. 3.The RSS block’s source code (Gutenberg)WordPress on GitHub
  4. 4.RSS 2.0 SpecificationRSS Advisory Board
  5. 5.RSS AutodiscoveryRSS Advisory Board
  6. 6.RFC 4287: The Atom Syndication FormatIETF
  7. 7.Cross-Origin Resource Sharing (CORS)MDN Web Docs
  8. 8.DOMParserMDN Web Docs
  9. 9.Feed Validation ServiceW3C
  10. 10.Adding and Setting Up the Wix Podcast PlayerWix Help Center
  11. 11.Wix Blog: Adding an RSS Button to Your SiteWix Help Center
  12. 12.Using RSS feedsSquarespace Help Center
  13. 13.RSS blocksSquarespace Help Center
  14. 14.Set up an RSS feedWebflow Help Center
  15. 15.Publishing blogsShopify Help Center

Keep reading

Put real posts on your site, where Google can read them.

One deferred script, rendered into your page, no cookies. Your first feed is free and needs no card.

Build your first feed