At long last, Universal Feed Parser 3.0 is out. You can download it from SourceForge or view its spiffy new home page. It comes with over 2000 unit tests, or you can browse the tests online. It comes with over 100 pages of documentation, or you can read the documentation online.
Changes since beta 22:
- made results.entries[0].links[0] and results.entries[0].enclosures[0] into FeedParserDict
- fixed typo that could cause the same encoding to be tried twice (even if it failed the first time)
- fixed DOCTYPE stripping when DOCTYPE contained entity declarations
- better textinput and image tracking in illformed RSS 1.0 feeds
- added and passed Sam’s amp tests
- added and passed my blink tag tests
- fixed bug in _changeEncodingDeclaration that failed to parse utf-16 encoded feeds
- made source into a FeedParserDict
- duplicate admin:generatorAgent/@rdf:resource in generator_detail.url
- added support for image
- refactored parse() fallback logic to try other encodings if SAX parsing fails (previously it would only try other encodings if re-encoding failed)
- remove unichr madness in normalize_attrs now that we’re properly tracking encoding in and out of BaseHTMLProcessor
- set feed.language from root-level xml:lang
- set entry.id from rdf:about
- send Accept header
- don’t try iso-8859-1 (can’t distinguish between iso-8859-1 and windows-1252 anyway, and most incorrectly marked feeds are windows-1252)
This release fixes all known bugs and documents all known features. If you find a bug, please report it on SourceForge.
Share and enjoy.

