CorrectFeed

OPML import errors — how to fix broken feed lists

OPML is the standard way to move feed subscriptions between readers. When imports fail, it’s usually due to invalid XML or missing feed URLs on outline entries.

Quick checklist

  1. Confirm the file is actually OPML (XML), not HTML/JSON.
  2. Ensure the file is valid UTF‑8 and parses as XML.
  3. Verify each subscription has an xmlUrl (the RSS/Atom URL).
  4. Keep the structure simple: <opml><head><body><outline>.
  5. If the reader supports it, try “merge” vs “replace” to avoid duplicate conflicts.

Common import failures (and fixes)

What you seeLikely causeFix
“Invalid OPML” / “XML parse error”Malformed XML or invalid charactersNormalize to UTF‑8, remove control characters, and validate XML
Import succeeds but no feeds appearOutlines missing xmlUrlEnsure every feed outline has a real RSS/Atom URL in xmlUrl
Import hangs or takes foreverVery large OPML; importer verifies each feedImport in batches; disable “verify feeds” if the reader offers it
Duplicates explodeThe reader merges by title instead of URL (or vice versa)Use “replace” instead of “merge”, or dedupe by xmlUrl before import

1) Confirm it’s actually OPML

An OPML file should start with:

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head>...</head>
  <body>...</body>
</opml>

If it’s HTML, JSON, or a proprietary export, most readers won’t import it as OPML.

Minimal working OPML example

If you want to sanity-check your importer, try a tiny file like:

<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
  <head>
    <title>Subscriptions</title>
  </head>
  <body>
    <outline text="Example Feed" type="rss" xmlUrl="https://example.com/feed.xml" htmlUrl="https://example.com/"/>
  </body>
</opml>

2) Check outline entries include feed URLs

Many readers expect:

  • xmlUrl (the RSS/Atom feed URL)
  • optionally htmlUrl (the website URL)

If xmlUrl is missing, the import may “succeed” but create empty folders, or fail outright.

Common outline mistakes

  • xmlUrl is present but empty
  • xmlUrl contains a website URL (HTML) instead of the feed URL (XML)
  • URLs include spaces or unescaped characters
  • duplicate entries with the same xmlUrl but different names (some importers choke)

3) Fix invalid characters/encoding

Stray control characters (often from copy/paste) can break XML parsing.

Normalize the file to UTF‑8 and remove invalid characters before importing.

4) Folder structure issues (nested outlines)

OPML supports folders by nesting <outline> elements. Some readers are strict about the shape:

  • A “folder” outline might have only text and children.
  • A “feed” outline should have xmlUrl (and optionally type="rss").

If your export mixes both styles on the same node (folder + feed URL), some importers fail.

5) Reader-specific quirks

Even when the OPML is valid, imports can fail due to product constraints:

  • maximum file size or maximum number of outlines
  • rate limits when verifying feed URLs during import
  • duplicate-detection rules that reject “too similar” entries

If you have a large OPML (hundreds/thousands of feeds), try importing in batches.

  1. Validate the OPML file.
  2. Repair XML parsing errors first.
  3. Ensure outlines have valid xmlUrl values.
  4. Re-import into your target reader.

FAQ

Why won’t my OPML import?

Common causes are invalid XML, missing required OPML structure, invalid characters/encoding, or outline entries missing feed URLs.

What does OPML contain?

OPML typically contains <outline> entries, each representing a subscription and including an RSS/Atom URL (xmlUrl) and optional metadata.

How do I make OPML portable across readers?

Ensure valid XML, include xmlUrl for each outline item, avoid reader-specific attributes when possible, and normalize encoding to UTF‑8.

Fix RSS/Atom feeds and OPML lists

Paste a feed/OPML URL, upload a file, or paste XML — then validate and fix it.

Fix my feed / Import OPML Back to Help