Skip to content

Convert

OPML to CSV

OPML to CSV

Beta

Turn an OPML export from Feedly, Inoreader, NetNewsWire or a podcast app into a CSV with one row per feed: title, feed URL, site URL and folder. Feeds are never fetched and nothing is uploaded.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

Adds a UTF-8 byte order mark so Excel shows accented feed titles correctly. Turn it off if a script reads the file.

OPML Input
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CSV Output

One row per feed will appear here..

Why Use Our OPML to CSV Converter?

An OPML file is how feed readers and podcast apps hand over a subscription list, and it is an XML tree that nothing but another feed reader reads comfortably. Checking which feeds you still follow, cleaning a list before a migration, or sharing a reading list with someone who works in a spreadsheet all start with turning that tree into rows. OPML to CSV flattens every feed into a CSV row with its title, feed URL, site URL and folder path, in your browser, without contacting a single feed.

OPML, the Outline Processor Markup Language, is an XML format for outlines that feed readers adopted as the common way to export and import subscriptions. A subscription list is a body of outline elements: an outline with an xmlUrl attribute is a feed, and an outline that contains other outlines is a folder. The name lives in the text attribute, sometimes repeated in title, and the website address in htmlUrl.

OPML to CSV reads OPML 1.0 and 2.0 without a DOM. It walks the outline tree once, carries the folder path down to every feed, decodes XML entities in titles, and matches attribute names without regard to letter case, because exports write xmlUrl, xmlurl and XMLURL. A file that is not well-formed XML is refused with the parser's message instead of being half-converted; a syntax error such as an unescaped ampersand names its line number.

The CSV has six columns: title, xml_url, html_url, folder_path, description and type. By default only feeds become rows, and Include folder rows adds a row for each folder with the type folder. Nothing in the file is fetched, so no feed server learns which feeds you follow.

How it compares

Many online OPML converters take the file as an upload. OPML to CSV keeps the subscription list in the tab, fetches nothing, and keeps the folder structure in its own column instead of flattening it away.

OPML Conversion Tips

  • xml_url is the feed address a reader subscribes to; html_url is the website the feed belongs to. They are different addresses and both are kept.
  • Folders become a folder_path joined with a slash and spaces, such as Tech / Web, so nested folders survive in a single column.
  • An outline with a url attribute instead of xmlUrl, which OPML uses for plain links, is written with that address in html_url and its type, usually link, in the type column.
  • Feed URLs are copied, not checked. A dead feed stays in the list, which is what you want when auditing.
  • Keep Excel BOM on when the CSV will open in Excel, so accented feed titles display correctly.

Frequently Asked Questions

What is an OPML file?

An OPML file is an XML outline that feed readers and podcast apps use to export and import subscription lists. Each feed is an outline element with an xmlUrl attribute pointing at the RSS or Atom feed, and folders are outlines that contain other outlines. The extension is usually .opml, though some apps save it as .xml.

How do I export OPML from my feed reader?

Feed readers such as Feedly, Inoreader and NetNewsWire, and podcast apps that support it, offer an OPML export in their settings, account or subscriptions menu. The export is a single .opml file holding every subscription and folder, and that file is what this page reads.

What is the difference between xml_url and html_url?

xml_url is the feed itself, the address a reader or podcast app polls for new items. html_url is the website the feed belongs to, the page a person would visit. Many exports include both, some only the feed, and the CSV keeps each in its own column.

How are folders handled?

Each feed's folders are written to the folder_path column, outermost first and joined with a slash and spaces, so a feed filed under Tech inside News shows News / Tech. A feed outside any folder has an empty folder_path.

Can I include the folders themselves as rows?

Yes. Turn on Include folder rows and every folder gets its own row, with the folder name in title, the path of its parent folders in folder_path, and folder in the type column. Feeds and folders stay in the order they appear in the file.

Does it work with podcast subscription exports?

Yes. A podcast app's OPML export lists each show as an outline whose xmlUrl is the podcast's RSS feed, which is the same structure a feed reader writes, so every show becomes a row with its feed URL.

Does it check whether my feeds still work?

No. No feed is fetched or validated. The page copies the addresses written in the file, so a feed that no longer exists still appears in the CSV, and no feed server learns that you opened your list.

Why does it say No feeds found?

The file has no outline with an xmlUrl or url attribute. That happens when the file is a single RSS or Atom feed rather than an OPML subscription export, or when an export holds only empty folders. A file that is not well-formed XML gets a different message that names the problem, and the line number when the problem is a syntax error.

Is my subscription list uploaded?

No. The OPML is parsed and the CSV is written in your browser, and no request carries the file. A subscription list says a lot about what you read and listen to, which is why it stays in the tab.

Can I turn the CSV back into OPML?

Not on FindUtils yet. Most feed readers import OPML only, so keep the original .opml file as the copy you import, and use the CSV for auditing, sharing and cleanup.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool