Last updated February 18, 2015. Created on November 4, 2009.
Edited by ar-jan, robertwb, er.pushpinderrana, mcfilms. Log in to edit this page.


Feeds is a pluggable system for importing or aggregating content into Drupal. Out of the box, it supports

  • import or aggregation from RSS feeds, Atom feeds, OPML files or CSV files
  • import from an XML, or HTML document using Feeds extensible parsers (or Feeds XPath Parser for Drupal 6)
  • generation of users, nodes, terms or simple database records
  • granular mapping (e. g. map the "author" column of a CSV file to a CCK field or map the title of an RSS feed item to a term name)
  • multiple simultaneous configurations organized in "Importers"
  • overridable default configuration for the most common use cases
  • "Feeds as nodes" paradigm as well as "Standalone" import forms
  • aggregation (periodic import) on cron
  • PubSubHubbub subscriptions
  • views-style exportables (using CTools)
  • a views-style plugin API (using CTools) providing a powerful API for rapidly adjusting Feeds to specific use cases on site builds: add other import sources or targets in a straightforward way
  • concurrent Feed aggregation with Drupal Queue

Required Modules

The Feeds module relies on Chaos Tools and Job Scheduler

This documentation

This documentation is split into three parts:

The site builder's guide to Feeds

The site builder's guide explains core concepts in Feeds and walks you through how to configure Feeds to import or aggregate content from RSS, Atom or CSV as nodes, users, terms and more.

Check out the site builder's guide if you are new to Feeds and you are looking for instructions to get you started.

The developer's guide to Feeds

This section gives an introduction to Feeds' APIs and explains how to use them to address more complex use cases with Feeds.

This is for you if you are considering to write code that hooks into Feeds or if you are trying to fix a problem in Feeds and you need to get a quick overview of its architectural concepts.

The developer's guide builds on top of the site builder's guide to Feeds. If you are completely new to Feeds, start with the site builder's guide.

Feeds glossary

Feeds uses a series of terms in a specific way. Some examples are: Fetcher, Parser, Processor, Plugin, Scheduler, Importer. The glossary explains these terms.

Feeds contributed plugins

Overview of contributed fetchers, parsers and processors for feeds.

This section is for both site builders and developers.

Related Blogs and presentations

Looking for support? Visit the forums, or join #drupal-support in IRC.


SQP’s picture

To enable simplepie, download it from copy the into feeds/libraries like mentionned in the readme
And don't forget to clear the cache (admin/settings/performance) or you'll end up browse the code like me to understand why the option is still hidden

geerlingguy’s picture

...or you can also use the Libraries API module, and put inside sites/all/libraries/simplepie/ (so the end path would be sites/all/libraries/simplepie/ Had to look in feeds.module to find that, and thought I'd post it here.

Work: Midwestern Mac, LLC | Personal:

mordaga’s picture

The download link on is (at the time of this post) linked to an empty github directory.
I was able to find at this location on github:

Also, when I tried to put into sites/all/libraries/simplepie/ it did not show up as a parser option even after clearing all caches (same thing with sites/default/libraries/simplepie/).

It only worked when I uploaded it to modules/feeds/libraries.

I hope this saves someone else time in the future.

wernerglinka’s picture

corrie.potter’s picture

I tried various methods of getting a .csv file to import property and finally found that the problem is that the .csv file's fields did not have quotes around the fields when viewing in a text editor. The file that I got from a client was well formed but it was from ms excel. When I looked at the file in a text editor it was only comma separated instead of comma separated w/ quotes. I found that if you open the csv in Open office that it addes the quotes around each field. This made the file import properly into the feeds module. See below for more info.
MS Excel CSV - does not import

Title, Body, Date, Publisher
My Title, Body balh blah blah, 10-10-2012, MHS Press
My Title2, Body balh blah blah2, 11-11-2012, MHS Press2

Open Office CSV - imported properly

"Title", "Body", "Date", "Publisher"
"My Title", "Body balh blah blah", "10-10-2012", MHS Press"
"My Title2", "Body balh blah blah2", "11-11-2012", MHS Press2"
smd_ksu’s picture

To continue on this, I found that my CSV saved from Excel didn't work and it was because something is wrong with the returns between lines. If you open it up in a text editor, like a Mac's TextEdit and manually redo the returns it works. Or do as I did, and import the CSV in Google Docs and export it as a CSV again. Then it would work. Strange, I know.

ksun’s picture

An alternative to manually converting mac line-endings to unix (or windows) ones is to turn on auto_detect_line_endings in your PHP configuration. (Or turn it on with ini_set somewhere. I often put it in the settings.php file.)

sneharao’s picture

can you tell me how to import other fieds other than above 4 fields’s picture

hi guys,
i istalled this module and its great. i imported nodes with text fiels and image and all is fine exept the taxonomy term.
its just do not enter the term to the field.

some body know how to solve it?

jenlampton’s picture

This is a documentation page, and not the place for questions. Did you try searching for your problem over in the issue queue?

dudi99’s picture

I am looking for a way to build a forum structure from a list of items. Is there a way to use Feeds to import a nested forum container/topic structure from CSV file? If so, where can I find this information.


pdcarto’s picture

If you have multiple feeds, your hook_feeds_after_parse implementation(s) will execute on all of them.

You can determine which feed is currently running by inspecting$source->importer()->getConfig()['name'].


function mymodule_feeds_after_parse(FeedsSource $source, FeedsParserResult $result) {
  if($source->importer()->getConfig()['name'] == "my_feed_name") {
    // Do stuff here

There may be a more direct way to get the source feed id, but I haven't found it.
rrpadilla’s picture

//Get the feed identifier
$feed_name = $source->id;
if ($feed_name == 'my_feed_name')