An .opml file is an outline: nested <outline> elements inside a head/body document, where each node is an attribute bag rather than typed content. Its overwhelmingly common use is as the export and import format for a feed reader's subscription list.
Private for supported formats — processed in your browser
Convert supported files
Runs on your device
+
Drop OPML files here
Batch files can each use a different output. Nothing uploads for local conversions.
Working inputs include camera RAW, browser-local audio/video, PDF, CBZ/CBR comics, office documents, ebooks, markup, 3D models, structured text, images, and archives.
Dave Winer created OPML in 2000 for his outliner software, and version 2.0 followed in 2007. The specification is deliberately vague about what an outline node means, which was intended as flexibility and in practice means the format is defined by convention per application — the subscription-list convention being the one that stuck, because it is how you move between feed readers without losing your subscriptions.
How OPML works
Nodes are <outline> elements whose meaning comes entirely from their attributes, not from element names.
The subscription-list convention uses type="rss", xmlUrl for the feed and htmlUrl for the site.
Nesting is arbitrary depth, which is how readers represent folders of feeds.
The head element carries document metadata such as title and dateCreated.
No schema constrains which attributes are meaningful, so two valid OPML files can be mutually unintelligible.
When to use OPML
Exporting subscriptions from one feed reader and importing to another
Backing up a reading list independently of any service
Sharing a curated set of feeds with someone else
Flattening an outline into a table for review
Strengths and limitations
Strengths
The one universally accepted way to move feed subscriptions between readers
Arbitrary nesting maps naturally onto folders and hierarchies
Simple enough to write by hand or generate trivially
Limitations
Semantics are conventional, not specified — a general OPML consumer cannot exist
No schema, so validation beyond well-formed XML is impossible
Attribute-only content makes it awkward for anything text-heavy
Compatibility
Every feed reader imports and exports OPML subscription lists, and several outliners and mind-mapping tools read it. Outside those two niches it is rarely encountered. Novus Convert parses it locally and converts to JSON and CSV, flattening the hierarchy for inspection.
Outline text and attributes, including feed URLs, are preserved. Deep hierarchy is flattened when the target is tabular.