Static RSS and Atom Feed Builder
Author a real RSS 2.0 or Atom 1.0 feed from original metadata and entries, with stable IDs, explicit UTC dates and safe literal summaries.
Loading tool…
How to use Static RSS and Atom Feed Builder
Prepare a small static site’s syndication file locally. Supply your own titles, summaries, stable identities and real publication/update dates; the same authoring workflow can export Atom or RSS without fetching your website. The result is usable XML to copy or download. Hosting it at the declared URL, keeping identities stable and testing your actual readers remain separate publishing steps.
- Replace the complete example with your own metadata and zero to one hundred entries. A selected local UTF-8 JSON file takes precedence over pasted text.
- Keep stable IDs and use explicit whole-second UTC publication and update timestamps. Choose RSS or Atom, then review the visible field-mapping limitations.
- Copy or download the actual XML. Inspect it and publish it through your own site at the declared self URL; this tool does not host, fetch, submit or subscribe to a feed.
Good to know
- Use exactly the documented root and entry fields, with nonblank strings. Duplicate JSON members, extra fields, wrong types and malformed Unicode refuse. Zero to 100 entries, source order preserved. Titles/author are single lines up to 200 UTF-16 units; descriptions/summaries up to 4,000. XML-compatible text allows tabs and CR/LF, but unsupported controls and U+FFFE/U+FFFF refuse.
- All IDs and destinations use already canonical ASCII HTTP(S) URLs up to 2,048 characters. The URL parser’s href must equal the input: do not rely on silent slash, host-case, percent, Unicode or backslash repair. Credentials refuse. Home and self URLs reject any fragment, including an empty #. IDs compare exact strings; repeated feed/entry IDs refuse. Global uniqueness, ownership and link availability are not verified.
- Dates must be YYYY-MM-DDTHH:mm:ssZ in Gregorian years 1900–9999, seconds 00–59. No local time, time zone guessing, offsets, fractions or leap seconds. This explicit authoring profile requires published ≤ entry updated ≤ feed updated. It never invents the current time, infers a publication date or normalizes an impossible date.
- Atom uses its namespace, a shared author name, plain text title/subtitle/summary, alternate/self links and separate published/updated values. RSS uses unnamespaced core elements plus Atom self-link and Dublin Core creator extensions. RSS guid has isPermaLink=false; item pubDate means published, and channel lastBuildDate means feed updated. RSS does not encode the separate feed ID or each entry updated value.
- User markup remains literal. Atom text is XML-escaped with type=text. RSS item descriptions contain only fixed generated paragraph/break tags around HTML-escaped original text, then XML escaping; their line endings become visual line breaks. RSS channel descriptions and ordinary titles remain XML text. This is not a general HTML sanitizer or a guarantee about unsafe downstream readers.
- An optional actual file is nonempty, at most 300,000 bytes and strict UTF-8 with at most one initial BOM. Source JSON is capped at 100,000 UTF-16 units, 8 levels and a conservative 5,000-token preflight; generated XML at 500,000. There are no media enclosures, podcasts, categories, language metadata, per-entry authors, signed feeds or arbitrary extensions.
- No input is rendered as user HTML, fetched, uploaded, retained or executed. Copy and download contain the generated XML itself. Generating a file is not publication, reader compatibility, subscription success, copyright clearance, content authenticity or search-demand validation.
- Processing is local. Output is limited to 1,000,000 text characters unless a stricter file limit is stated.
Common questions
Why are published and updated separate, and why does RSS omit an entry’s updated value?
An item can be published once and revised later. Atom has separate fields for those dates. RSS core pubDate describes publication, so this profile does not silently overwrite it with the modification time. RSS output uses your published value, exposes the omission above the result, and leaves per-entry update extensions outside the supported profile.
Is this input sent to a server?
No. The application processes this input inside your browser tab and does not save it to persistent storage.
Keep going with related tools
All files →RSS and Atom Feed Inspector
Read supplied RSS2 or Atom XML as a plain JSON entry inventory without fetching media or links.
FilesOPML2 Outline Workbench
Inspect an OPML2 outline file or generate a safe outline document from a declared JSON tree.
SEOXML Sitemap Generator
Build a sitemap from real HTTP(S) URLs and optional truthful last-modified dates.