Sun, Jun 4, 2000; by Dave Winer.
New version available, October 2002
RSS 2.0 is the current version. It is upward compatible with 0.91, that is any 0.91 source is also a valid 2.0 source.
6/9/00: Changed copyright to the IETF-inspired copyright we used for XML-RPC.
6/9/00: Minor changes and clarifications in response to feedback.
4/20/01: Pointed to the RSS 0.92 spec from this page, which is an extension of 0.91.
5/3/01: The Netscape 0.91 spec, written in July 1999, has re-surfaced. Archived here.
For a political introduction to this specification, see Scripting News for 6/7/00.
Post comments on the discussion group here, or on the Syndication mail list hosted on eGroups.
A brief history of RSS with pointers.
In December 1997, UserLand began
offering Scripting News syndicated in XML, as a public Web resource.
Other sites adopted the format, known as <scriptingNews> format.
In March 1999, Netscape opened My.Netscape.Com, based on an XML syndication format known as RSS 0.9.
In April 1999, My.UserLand.Com opened, an aggregator that processed RSS 0.9 content.
In May 1999, My.UserLand.Com supported <scriptingNews> 2.0b1 format.
In July 1999, Netscape introduced RSS 0.91, incorporating most of the features of <scriptingNews> 2.0b1. At the same time My.UserLand.Com supported RSS 0.91.
In December 1999, UserLand shipped the Manila content management system with built-in support for <scriptingNews> 2.0b1.
In March 2000, O'Reilly's aggregation engine, Meerkat, opened, reading all the above formats.
In April 2000, UserLand added built-in RSS 0.91 support to all Manila-authored sites.
About this document
In June 2000, after a year of active deployment, we've learned a lot
about RSS, there are lots of ideas in the community for its evolution,
and the ideas are maturing. Editorial tools have improved a lot in the
last year, further innovations are possible in the near future.
But we lack a firm foundation to build on, the only specification we
have for RSS is on the Netscape website, and it's not being maintained,
as far as we know.
Therefore, this document is explains RSS as it's currently practiced.
Questions about the future
Will RSS remain as-is, to be superceded by new formats? Or will RSS
evolve, and if so, how will that happen? We now have at least three
24-by-7 aggregation engines, and a thousand RSS sources. Because RSS is
a simple format, and because the community is relatively tight-knit, it
seems possible that we could make improvements without disrupting the
For an example please refer to this sample RSS 0.91 file, containing selected links from WriteTheWeb.Com, on its opening day 6/5/00.
It may be helpful to refer to the My.UserLand rendering of its RSS file to see how the XML can be turned into something browsable.
What is RSS?
There is no consensus on what RSS stands for, so it's not an acronym,
it's a name. Later versions of this spec may say it's an acronym, and
hopefully this won't break too many applications.
RSS is dialect of XML. All RSS files must conform to the XML 1.0 specification, as published on the World Wide Web Consortium (W3C) website.
At the top level, a RSS document is a <rss> element, with a
mandatory attribute called version, that specifies the version of RSS
that the document conforms to.
Subordinate to the <rss> element is a single <channel>
element, which contains information about the channel (metadata) and
Required <channel> sub-elements
Following are the required elements of a <channel>.
<title> -- The name of the channel. It's how people refer to your
service. If you have an HTML website that contains the same information
as your RSS file, the title of your channel should be the same as the
title of your website. Maximum length is 100 characters.
<link> -- A URL pointing to the website named in the <title>. Maximum length is 500 characters.
<description> -- A phrase that describes your channel, your
channel's positioning statement. Maximum length is 500 characters.
<language> -- Indicates the language your channel is written in.
This allows aggregators to group all Italian language sites, for
example, on a single page. A list of allowable values for this element
<image> -- An XML element that contains several sub-elements, explained here.
Optional <channel> sub-elements
<copyright> -- Copyright notice for content in the channel. Maximum length is 100.
<managingEditor> -- The email address of the managing editor of
the channel, the person to contact for editorial inquiries. Maximum
length is 100. The suggested format for email addresses in RSS elements is firstname.lastname@example.org (Bull Mancuso).
<webMaster> -- The email address of the webmaster for the
channel, the person to contact if there are technical problems. Maximum
length is 100.
<rating> -- The PICS rating for the channel. Maximum length is 500.
<pubDate> -- The publication date for the content in the channel.
For example, the New York Times publishes on a daily basis, the
publication date flips once every 24 hours. That's when the pubDate of
the channel changes. All date-times in RSS conform to the Date and Time Specification of RFC 822.
<lastBuildDate> -- The date-time the last time the content of the channel changed.
<docs> -- A URL, points to the documentation for the format used
in the RSS file. It's probably a pointer to this page. It's for people
who might stumble across an RSS file on a Web server 25 years from now
and wonder what it is. Maximum length is 500.
<textInput> -- An XML element that contains several sub-elements, explained here.
<skipDays> -- An XML element that contains up to seven
<day> sub-elements whose value is Monday, Tuesday, Wednesday,
Thursday, Friday, Saturday or Sunday. Aggregators may not read the
channel during hours listed in the skipDays element. (Most aggregators
seem to ignore this element.)
<skipHours> -- An XML element that contains up to 24 <hour>
sub-elements whose value is a number between 1 and 24, representing a
time in GMT, when aggregators, if they support the feature, may not
read the channel on days listed in the skipHours element. (Most
aggregators seem to ignore this element.)
What is an <image>?
An <image> is a sub-element of <channel>, which contains three required and three optional sub-elements.
<url> is the URL of a GIF, JPEG or PNG image that represents the channel. Maximum length is 500.
<title> describes the image, it's used in the ALT attribute of
the HTML <img> tag when the channel is rendered in HTML. Maximum
length is 100.
<link> is the URL of the site, when the channel is rendered, the
image is a link to the site. (Note, in practice the image <title>
and <link> should have the same value as the channel's
<title> and <link>. Maximum length is 500.
Optional elements include <width> and <height>, numbers,
indicating the width and height of the image in pixels.
<description> contains text that is included in the TITLE
attribute of the link formed around the image in the HTML rendering.
Maximum value for width is 144, default value is 88.
Maximum value for height is 400, default value is 31.
What is an <item>?
A channel may contain any number of <item>s, each of which links to a story, with an optional description.
<title> is the title of the story. Maximum length is 100.
<link> is the URL of the story. Maximum length is 500.
<description> is the story synopsis. Maximum length is 500.
What is a <textInput>?
A channel may optionally contain a <textInput> sub-element, which contains four required sub-elements.
<title> -- The label of the Submit button in the text input area. Maximum length is 100.
<description> -- Explains the text input area. Maximum length is 500.
<name> -- The name of the text object in the text input area. Maximum length is 20.
<link> -- The URL of the CGI script that processes text input requests. Maximum length is 500.
RSS 0.91 places restrictions on the first non-whitespace characters of
the data in <link> and <url> elements. The data in these
elements must begin with http:// or ftp://. Among others, https:,
Copyright and disclaimer
© Copyright 1997-2000 UserLand Software. All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and these paragraphs are
included on all such copies and derivative works.
This document may not be modified in any way, such as by removing the
copyright notice or references to UserLand or other organizations.
Further, while these copyright restrictions apply to the written RSS
specification, no claim of ownership is made by UserLand to the format
it describes. Any party may, for commercial or non-commercial purposes,
implement this protocol without royalty or license fee to UserLand. The
limited permissions granted herein are perpetual and will not be
revoked by UserLand or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and USERLAND DISCLAIMS ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.