Skip to main content

XML format

OPML

A nested outline format, used almost universally for exporting and importing feed subscriptions.

OPML describes a tree of <outline> elements whose meaning comes entirely from their attributes. Its dominant real-world use is the subscription list every feed reader can import and export.

Like RSS, it declares no namespace, and its looseness is deliberate: any application may add attributes, so an OPML file's real schema is whatever produced it.

Constraints that bite

  • Structure lives in attributes (text, type, xmlUrl), not in child elements.
  • No namespace, and no schema in practice — validate against the producer's conventions.
  • <outline> nests arbitrarily deep; consumers must handle recursion.
  • The text attribute is required on every outline, even when empty.
Root element
<opml>
Media type
text/x-opml
Extensions
.opml, .xml
Namespaces
None — unqualified elements
XMLDir label
xml

A minimal valid document

Every example on this site is checked against the same parser the workspace uses, so what you see below is known to be well-formed.

opml.xml
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head><title>Subscriptions</title></head>
  <body>
    <outline text="News">
      <outline type="rss" text="Example" xmlUrl="https://example.com/rss.xml"/>
    </outline>
  </body>
</opml>

Get started

Bring order to the XML your team can't afford to ignore.

Create a free account and get a private workspace to search, validate, diff, and monitor your XML feeds, sitemaps, schemas, and vendor integrations.