What is this?

TrimMyFeeds is a simple commandline tool that can be used to strip out feeds that are no longer active. In our experience it removed about 20% of feeds.

It will:

  • Take your OPML file from Google Reader or another source and strip out dead feeds.
  • Allow you to configure what a "dead" feed means to you -- how long before you give up on your friend ever updating their blog? By default, we think if they haven't updated in two years,'s dead.
  • Generate a new OPML file for you that's been neatly trimmed.

Installation & dependencies

You need Python 2.7 as well as a number of dependencies you can install using Pip.

pip install feedparser
pip install lxml


Pretty simple. Get your OPML file and use this tool on the commandline like: subscriptions.xml

If you want to configure how old things should be before they get deleted, you can do so with: subscriptions.xml --dt 2010-01-01

Which would remove feeds that hadn't been updated after 2010-01-01.

As it proceeds, it will give you one of several statuses:

  • OK: It's all good, and will be saved.
  • REDIRECTED, BUT OK: The feed moved, but we were able to find it again and update your subscription file.
  • TOO OLD: This means the feed does not have any entries newer than two years (default) or the date you provided.
  • GONE/NOT FOUND: The feed is no longer on the Interwebs. If it's important to you, you might want to check it out.

You can also sometimes see a warning that says that the feed was unable to be parsed. This means we couldn't find a date in it, and that we kept it, but not without hestitation.

When we're done, we'll generate a file for you called trimmed-subscriptions.xml. Take that and upload it to a new service! You're done.


We don't yet support folders in OPML files, so if you have any, they'll get flattened out.

If you wish to have this feature, you'll need to do a nasty method digging into the XML and keeping track of parents and such. It can be done, but brace for momentary pain. Pull requests welcome.