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.
<?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"))Related files
- jsonJSON Feed 1.1A JSON Feed 1.1 document — the JSON alternative to RSS/Atom — with a feed header and three items using content_html, content_text, tags, and publish dates, for testing JSON Feed parsers and readers.

- m3u8HLS Playlist (M3U8)An HTTP Live Streaming (HLS) media playlist in UTF-8 M3U8 — #EXT-X-VERSION, target duration, four timed .ts segments, and #EXT-X-ENDLIST — for testing HLS parsers and adaptive-streaming players.

- m3uM3U PlaylistAn extended M3U media playlist with #EXTINF duration and title directives over three track references (local and remote) — for testing playlist parsers and media players.

- atomAtom FeedA well-formed Atom feed with multiple entries — for testing feed readers and parsers.

- rssRSS 2.0 FeedA well-formed RSS 2.0 feed with a channel and multiple items — for testing feed readers and parsers.

- bibBibTeX Bibliography (.bib)A BibTeX bibliography with three real citations (Lovelace, Knuth, Shannon) across article, book, and inproceedings types — for testing BibTeX parsers, reference managers, and citation converters.

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