DevTools Logo

RSS Feed Generator

RSS Feed Generator

Build a valid RSS 2.0 feed XML in your browser — escape special characters, copy, or save as feed.xml

Channel & items

One channel per feed; one item per post

Examples

Generate a channel with no items

Input
title: Dev Notes
link: https://example.com
description: Updates & tips
language: en-us
items: 0
Output
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Dev Notes</title>
    <link>https://example.com</link>
    <description>Updates &amp; tips</description>
    <language>en-us</language>
  </channel>
</rss>

The required channel fields and optional language are emitted even when the feed has no item blocks yet.

Escape special characters in an item

Input
channel title: Cats & Dogs
channel link: https://example.com/blog
channel description: News <weekly>
item title: Q & A
item link: https://example.com/p/1?a=1&b=2
item description: Said "yes" & "no"
pubDate: Mon, 01 Jan 2026 00:00:00 GMT
guid: https://example.com/p/1
Output
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Cats &amp; Dogs</title>
    <link>https://example.com/blog</link>
    <description>News &lt;weekly&gt;</description>
    <item>
      <title>Q &amp; A</title>
      <link>https://example.com/p/1?a=1&amp;b=2</link>
      <description>Said &quot;yes&quot; &amp; &quot;no&quot;</description>
      <pubDate>Mon, 01 Jan 2026 00:00:00 GMT</pubDate>
      <guid>https://example.com/p/1</guid>
    </item>
  </channel>
</rss>

Ampersands, angle brackets and quotes are escaped in channel and item text so the XML remains parseable.

Omit blank optional item fields

Input
title: Minimal
link: https://example.com
description: Short feed
item title: First
item link: https://example.com/1
item description: Hello
pubDate: empty
guid: empty
Output
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Minimal</title>
    <link>https://example.com</link>
    <description>Short feed</description>
    <item>
      <title>First</title>
      <link>https://example.com/1</link>
      <description>Hello</description>
    </item>
  </channel>
</rss>

Blank language, pubDate and guid values are omitted rather than emitted as empty XML elements.

About this tool

RSS (Really Simple Syndication) is the XML format that powers feed readers, podcast apps, news aggregators and newsletter tooling. An RSS 2.0 file has two parts: a single <channel> that describes the feed itself (title, link, description, optional language) and one <item> per post, each carrying its own title, link, description, publication date and a globally-unique id. Feed readers are XML-strict — if any text field contains an unescaped <, >, &, ' or " the file fails to parse.

This generator assembles a valid RSS 2.0 file with the right structure, escapes every text field for you, and lets you add or remove items as you build. It supports an optional <language> tag for feeds in a specific locale and a per-item <pubDate> formatted as RFC 822 — the format RSS 2.0 requires. The output updates live and is ready to save as /feed.xml at your domain root.

Generation, escaping and rendering all happen in your browser — channel metadata and item contents stay on your device.

How to use

  1. Set the channel

    Fill in the channel title, link, description and optional language tag.

  2. Add your items

    Click + Add item for each post — set its title, link, description, RFC 822 pubDate and GUID.

  3. Copy the feed

    Copy the generated XML and save it as /feed.xml at your domain root, then link it from your HTML head with <link rel="alternate" type="application/rss+xml">.

Use cases

Publishing a project changelog

Add one item per release with a title, canonical link, summary, publication date and GUID, then save the generated XML as feed.xml.

Providing a blog feed

Use the channel metadata for the blog and add each post as an item that feed readers can display and link back to.

Building a lightweight internal update stream

Generate a small RSS document for engineering announcements or release notes without introducing a server-side feed library.

Checking escaping before deployment

Paste titles and descriptions containing ampersands, quotes or angle brackets to confirm the emitted XML is escaped before a feed reader parses it.

Feed structure

ElementPurpose
<?xml ... ?>XML declaration — required at the top of every RSS file
<rss version="2.0">Root element, fixed at version 2.0
<channel>Wraps the channel metadata plus every <item>
<title>, <link>, <description>Channel-level metadata — required
<language>Optional locale tag, e.g. en-us
<item>One per post, nested inside <channel>
<title>, <link>, <description>Per-item content
<pubDate>RFC 822 date — e.g. Mon, 01 Jan 2026 00:00:00 GMT
<guid>Globally unique id for the item

Special characters in every text field are XML-escaped automatically.

Common mistakes

Mistake:Pasting raw ampersands or angle brackets into XML by hand after generating the feed.

Fix:Let the generator escape text fields and avoid undoing entities such as &amp; and &lt; when copying the output into feed.xml.

Mistake:Expecting the tool to invent a GUID or publication date.

Fix:The component only emits pubDate and guid when you provide non-blank values. Supply a stable item identifier and an RSS-compatible date when your feed reader needs them.

Mistake:Using a relative link for the channel or item URL.

Fix:Use absolute canonical URLs so feed readers and aggregators can resolve the links outside your site context.

Mistake:Assuming the form validates the date format or feed semantics.

Fix:The generator trims and XML-escapes pubDate but does not parse or validate it. Check the final feed with an RSS-aware validator and use the date format expected by your consumers.

Frequently asked questions

References & standards