Host it yourself
Don't want to rely on us? Comfortable running a PHP application on your own? You can host this yourself on your own server (one with at least PHP 7.2 installed).
When making HTTP requests, you can pass the following parameters to mergefeeds.php (either in a GET request or POST request).
Example 1 - Hacker News stories with 'corona' or 'covid' in title
Example 2 - Merge two feeds: Hacker News feed and the /r/Technology subreddit
The form above uses the same parameters, so if you're usure how to construct a URL, use the form and then examine the RSS feed URL that's produced.
||One or more feed URLs. If more than one is supplied, the feeds will be merged. At least one URL is required.
||string (URL substring)
||Filter out any feed item whose URL does not contain one of these substrings. This can appear multiple times. Example: /article/
||string (word or phrase)
||Filter out any feed item whose title or description does not contain any of the supplied words or phrases. This can appear multiple times.
||Filter out any feed item whose URL contains any of the supplied words or phrases. This can appear multiple times.
||Filter out any feed item whose title or description contain any of the supplied words or phrases. This can appear multiple times.
||0 (default), 1
||If enabled, feed items without an <img> element inside the description will get removed.
||0 (default), 1
||If enabled, feed items without a <media:content> or <media:thumbnail> image element will get removed.
||If this text is found in the title or description, it's replaced with an empty string. Useful, for example, to remove the site name from item titles, or anything else you find superfluous.
Note: to remove the entire item based on its text, use the text_contains or strip_if_text parameters.
||1 (default), 0, param1,param2
||Determines the query string parameters that get preserved in item URLs. 1 = all preserved, 0 = none preserved. You can also pass individual parameters by name, e.g. 'articleId' to only preserve that parameter. Use a comma to supply more than one, e.g. 'id,category'.
||The feed title to use in the generated feed.
||1 (default), 0
||By default we'll include item descriptions from source feeds (favouring full content when available). Set this to 0 to omit item descriptions from the output.
||number (limit: 20)
||The maximum number of items to return. The limit can be changed in the config file.
||feed (default), date
||By default feed items are kept in the same order as the source feed. Set this to 'date' if you want items ordered by date.
Usually this will make no difference (feed items are usually already ordered by publication date), but some feeds will contain
items with more recent dates lower down in the feed. Sometimes this is due to updates to older news items.
Note: When merging two or more feeds, this is applied independently on each feed. The final merged result will contain feed items
ordered by date.
||rss (default), json
||By default the output will be formatted as RSS 2.0. Set this to JSON if you prefer that.
||Self-hosted use only. If you add proxy servers to the config file, you can pass the name of the proxy server you want to use for this request, e.g. 'rotating-proxy-us'.
||Saved request parameters. In the config file, you can associate a set of request parameters with a given name. You can then pass that name in the request instead of the request parameters. This is useful if you want to subscribe to a generated feed and then update it later without changing the feed URL.
Required parameters: url must be supplied.
Customise this page
If everything works fine, feel free to modify this page by following the steps below:
- Save a copy of index-mergefeeds.php in the custom/ folder
- Edit custom/index-mergefeeds.php
Next time you load this page, it will automatically load custom/index-mergefeeds.php instead.
Documentation and Support
We have documentation if you need help. You can also check out the forum or email us at firstname.lastname@example.org.