Simple validator for RSS, Atom or opensearch.xml that using validator.w3.org/feed and plugins

Downloads in past


1.1.16 years ago9 years agoMinified + gzip package size for feed-validator in KB


Feed validator
Simple validator for feeds like RSS or Atom. Supports opensearch.xml validation. Based on validator.w3.org/feed
Supports plugins for custom checks
Build Status Code Climate bitHound Overall Score npm version


npm install [-g] feed-validator


usage: feed-validator [-h] [-v] [-c FILE_PATH] [-r REPORTER_NAME]

Simple validator for RSS, Atom or opensearch.xml that using validator.w3.
org/feed and plugins

Positional arguments:
  url                   Feed url or file-path to validate

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -c FILE_PATH, --config FILE_PATH
                        Config file path
                        Reporter name: text, json
  --no-colors           Don't use colors
  --no-showfeed         Don't show the feed content

Arguments and options

Options can be defined by command line and configuration file.


URL or file-path of the validated feed.


Configuration file. Can be passed from command line. Example of config file see in examples folder.


Reporter type: text or JSON. Can be defined in command line: --reporter json or in config file: reporter: 'json'


Don't use colors in report. Can be passed from command line: --no-colors and from config file: noColors: true.


Don't show the feed's xml content in the report. Can be passed from command line: --no-showfeed and from config file: noShowFeed: true.


You can suppress some messages by defining objects that contains fields to match in config file. Example of suppressing:
suppress: [
    {level: 'error', text: 'Unexpected method attribute on Url element'},
    {level: 'warning', type: 'ShouldIncludeExample'}


Can be defined in config file (see examples). Each plugin is function that take JSON feed representation and returns errors, warnings and information messages list.
Plugin function example:
 * Check HTTPS in urls from opensearch.xml
 * @param {Object} feedJson Feed JSON representation
 * @param {Object} options Program options
function checkHttps(feedJson, options) {
    var path = 'OpenSearchDescription.Url';
    var urls = _.get(feedJson, path);

    var errors = [];
    if (!urls) {
        errors.push({level: 'error', path: path, text: 'No urls'});

    _.each(urls, function (item, i) {
        var url = _.get(item, '$.template');
        var type = _.get(item, '$.type');

        var errPath = [path, i, '$.template'].join('.');
        if (!url) {
            errors.push({level: 'error', path: errPath, text: 'No url template for type ' + type});
        } else if (!/(https:)?\/\//.test(url)) {
            errors.push({level: 'error', path: errPath, text: 'Non HTTPS schema in type ' + type});
    return errors;
You should define level and text fields. And you can define your own custom type field.