HTML Syndication Format 1.0 Draft 1

This version:
Latest version:
Ian Hickson <>
Tantek Çelik


XHTML does everything we need. Let's just use that.

RSS 0.9, RSS 0.91, RSS 1.0, RSS 2.0, RSS 3.0, Echo, Necho, Pie, and Atom, all suck. And mixed-namespace formats definitely suck. ESF doesn't suck but isn't fashionable.

Status of This Document

This is a working draft. Comments are welcome on the blogite mailing list (archived).


This information is provided in good faith, but no warranty can be made for its accuracy. Opinions expressed are entirely those of the editors and cannot be taken to represent views past, present or future of our employers.


This document may be used under the terms of the BY-ND Creative Commons License.

If you wish to translate this document or use it in some other way, please contact the authors.

Available languages

The English version of this specification is the only normative version. However, for translations of this document, see

Table of Contents

1. Introduction


1.1. How To Read This Specification

This specification is split into two main parts. The first part (section 3) is aimed at syndicators (HSF authors), and explains how HSF feeds should be generated. The seconds part (section 4) is aimed at consumers, or processors, of HSF feeds and explains how documents containing HSF should be parsed.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119].

2. Requirements

A processor needs to be able to get the following information from an HSF feed:

  1. A feed's title and URI.
  2. Zero or more author names, each optionally with a URI.
  3. A suggestion of how often the feed should be checked.
  4. A list of entries, each of which having:
    1. A title.
    2. A permalink.
    3. A datetime.
    4. Some content, which could be: a summary, an abstract, an extract, or the whole thing.
  5. The ability to embed HSF inside arbitrary XML in a standards-compliant, semantically correct way.
  6. Multiple feeds.
  7. The HSF feed may be the same as the site home page, but it is perfectly acceptable for the feed to be a separate document. The format should therefore easily cope with both cases.

3. Authoring Specification

HSF feeds can be embedded inside any XML document. Feeds cannot be embedded inside HTML documents; for authors whose content is written in HTML, an external feed in XML must be provided instead.

It is perfectly possible to use the same profile of HTML for writing Web logs in HTML, but HSF processors cannot process non-XML variants of this profile. HTML authors are, however, encouraged to use this profile anyway, so that their markup is as semantically rich as their feed, as this improves accessibility even in non-HSF contexts.

To indicate the start of an HSF feed, insert a div element from the XHTML 1.0 namespace, and give it a class attribute with the value "hsf-feed", and a lang attribute with the relevant [RFC 3066] language code.

<!-- assuming this is a normal XHTML document -->
<div class="hsf-feed" lang="language">

An XML document may contain as many HSF feeds as necessary. They are considered independent feeds unrelated to each other.

The div element's first child (ignoring whitespace) must be an h1 element. This element must have a single child, an a element, with three attributes:

The site's canonical URI.
This attribute must have the value "alternate".
The MIME type of the site, typically text/html or application/xhtml+xml.
<div class="hsf-feed" lang="language">
 <h1><a href="URI" rel="alternate" type="MIME type">Site Title</a></h1>

After the title, insert zero or more address elements, one for each author. These elements may contain a single a element to link to a resource for that author. If present, the element must have the following two attributes:

The author's canonical URI.
This attribute must have the value "author".
<div class="hsf-feed" lang="language">
 <h1><a href="URI" rel="alternate" type="MIME type">Site Title</a></h1>
 <address><a href="URI" rel="author">Author 1 Name</a></address>
 <address>Author 2 Name</address>

<div class="hsf-feed" lang="...">
 <!-- Note: No other elements may be included inside this div
      except where specified. -->
 <h1><a href="..." rel="alternate" type="text/html">Web Log Title</a></h1>
 <address><a href="..." rel="author">Author 1 Name</a></address>
 <address><a href="..." rel="author">Author 2 Name</a></address>
 <!-- or, if you don't want to give a URI, just:
  <address>Author Name</address>
  Note that the URI could be mailto:, http:, or whatever.
  <dt>Frequency</dt> <dd>3600s</dd> <!-- units MUST be seconds -->
   Implementations should ignore metadata that doesn't use
   recognised names:
   <dt>Other Meta Data</dt> <dd>Other Value</dd>
   <ins title="Entry Title"
        class="summary"> <!-- or abstract, extract, content -->

    <!-- Here Goes The XHTML Content -->
    <h2>Entry Title</h2> <!-- optional, the point being the title can be
                              included as part of the content -->
    <p>Bla bla bla.</p>
    <!-- /End Of XHTML Content -->


Syndicators should not introduce other elements into HSF feeds.

3.1. Conformance Requirements

4. Processing Specification

4.1. Conformance Requirements

5. Examples

A. References

[RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner. IETF, March 1997. RFC 2119 is available at
[RFC 2396]
Uniform Resource Identifiers (URI): Generic Syntax, T. Berners-Lee, R. Fielding, L. Masinter. IETF, August 1998. RFC 2396 is available at
Tags for the Identification of Languages, H. Alvestrand. IETF, January 2001. RFC3066 is available at

Note. The authors of this document are best known for strongly disagreeing with each other in public. The existence of this specification is therefore quite unlikely. Readers are encouraged to check the authenticity of this document before referring to it.