If you ever switch feed readers, you will meet OPML. It is the file format readers use to export and import a list of subscriptions, so you can move from one service to another without typing every feed again.
OPML stands for Outline Processor Markup Language. It was created by Dave Winer at UserLand Software in the early 2000s for outlines in general, and the feed world adopted it because a subscription list is, in the end, an outline: folders containing feeds.
What is inside
An OPML file is plain XML. A short one looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head><title>My feeds</title></head>
<body>
<outline text="Tech">
<outline type="rss" text="Ars Technica"
xmlUrl="https://feeds.arstechnica.com/arstechnica/index"/>
</outline>
<outline type="rss" text="xkcd" xmlUrl="https://xkcd.com/atom.xml"/>
</body>
</opml>
Each outline with an xmlUrl is a feed. An outline that contains others is a folder. The text attribute is the name the reader will show.
How to export your subscriptions
Almost every reader has an export option, usually in the settings or in the menu of the subscriptions list. It may be called “Export OPML”, “Export subscriptions” or simply “Export”. You get a file ending in .opml or .xml.
Do it once in a while even if you are happy with your reader. Services close, and the export is the only thing that guarantees your list survives.
How to import it
In the new reader, look for “Import OPML” or “Add subscriptions from file”, choose the file, and wait. Large lists can take a minute while the reader fetches every feed for the first time. Folders usually come across; read and starred items do not, because OPML only carries the list, not your history.
When there is no file
Sometimes you only have a list of addresses: notes in a text file, a list a colleague emailed you, the feeds of a course. You can turn that into OPML in seconds with our OPML Builder, which also works the other way round: paste an OPML file and it gives you the plain list.
Common problems
- “Invalid file”. Some exports are not quite valid XML, often because of an unescaped
&in a title. Open the file in a text editor and replace a lone&with&. - Dead feeds. An old OPML file will contain feeds that no longer exist. The reader will show them as errors; delete them after the import.
- Nested folders. OPML allows folders inside folders, but many readers only support one level and will flatten the rest.
The full format is described in the OPML 2.0 specification, but for moving feeds around, what is above is all you need.

