Skip to content
Novus Examples
opml849 B

OPML Subscription List

An OPML 2.0 subscription list with nested outline groups and three feed entries (title, xmlUrl, htmlUrl) — the format RSS readers use to import and export subscriptions, for testing OPML parsers.

Preview — first 21 linesopml
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head>
    <title>Sample Subscriptions</title>
    <dateCreated>Wed, 01 Jan 2026 00:00:00 GMT</dateCreated>
    <ownerName>Novus Examples</ownerName>
  </head>
  <body>
    <outline text="News">
      <outline type="rss" text="Example Tech" title="Example Tech"
               xmlUrl="https://tech.example.com/rss.xml" htmlUrl="https://tech.example.com/"/>
      <outline type="rss" text="Example Science" title="Example Science"
               xmlUrl="https://science.example.com/atom.xml" htmlUrl="https://science.example.com/"/>
    </outline>
    <outline text="Podcasts">
      <outline type="rss" text="The Example Show" title="The Example Show"
               xmlUrl="https://podcast.example.com/feed.xml" htmlUrl="https://podcast.example.com/"/>
    </outline>
  </body>
</opml>

Specifications

Format
OPML 2.0
Outlines
nested (News, Podcasts)
Feeds
3

What is a .opml file?

OPML (Outline Processor Markup Language, .opml) is an XML format for nested outlines. Its most common use is exchanging feed subscription lists between RSS readers, where each outline element carries a feed title and xmlUrl, but it also serves for mind maps and document outlines.

How to use this file

Use an example .opml file to test feed-reader import and export, OPML parsers, and outline tooling, or to move a subscription list between podcast and RSS apps.

How to use this file for testing

“OPML Subscription List” is a deterministic Novus Examples fixture for Feed parsing, Playlist & feed parsing, Editor testing. Well-formed RSS 2.0 and Atom feeds with multiple entries — for testing feed readers and parsers.

Documented properties for this file: OPML 2.0. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Data fixtures document their exact quirks — delimiters, encodings, null handling, schema, and row counts — in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.

Code examples

import xml.etree.ElementTree as ET

root = ET.parse("subscriptions.opml").getroot()
for o in root.iter("outline"):
    print(o.get("text"), o.get("xmlUrl"))

Generated by generation/feeds_extra.py. Free for any use, no attribution required — license.