Short answer: A multilingual site should publish one feed per language, each containing only posts in that language, with the matching language element in the channel and localised titles and descriptions. Each page should advertise the feed for its own language in its autodiscovery tag. In WordPress, multilingual plugins such as WPML and Polylang usually provide language-specific feed URLs, such as /de/feed/; check that they filter posts correctly and that caches keep languages apart.
Feeds on multilingual sites go wrong in predictable ways. A reader who subscribes from the German home page receives English posts. A newsletter tool mixes three languages in one email. A partner in France imports articles in Lithuanian. Or the feed simply follows the site’s default language, and the other languages have no feed at all. None of this is necessary: every major multilingual setup can publish clean per-language feeds with a little attention. This guide explains the principles and how to apply them.
Why one feed per language
A mixed-language feed serves nobody well:
- Readers usually read one language and must skip everything else.
- Newsletter and social tools publish whatever is in the feed, so a mixed feed produces mixed emails and posts.
- Partners and aggregators typically serve one language market and cannot use items in others.
- Translations appear as duplicates: the same article in four languages is four items about one story.
Mixed feeds also make measurement harder, because you cannot tell which language audience clicks, and they make it impossible to give each market a different posting rhythm. Separate feeds solve all of these. Each audience subscribes to its language, and each tool receives content it can use directly.
What each language feed should contain
| Element | What to set |
|---|---|
| Channel title | Site name plus language or localised name, e.g. “Example Blog (Deutsch)” |
| Channel link | The home page of that language, e.g. /de/ |
| Channel description | Written in that language |
| language | The correct code, e.g. de, fr-ca, lt |
| Items | Only posts published in that language |
| Item links | The URL of the post in that language |
| Dates | Standard format with time zone; English day and month names in RSS, regardless of language |
The last row surprises many people: RSS dates always use English day and month abbreviations, even in a German or Lithuanian feed. Localised dates make the feed invalid. Atom’s numeric dates avoid the issue entirely.
Plan your language feeds before configuring
A few decisions up front prevent most problems later:
- Which languages get feeds? Usually every language with regular new content. A language with only static pages and no posts does not need one.
- Are all posts translated? If some posts exist only in one language, each language feed will naturally have different items and different publishing frequencies. That is fine, but it affects how many items each feed should show.
- Which URL format? Directories such as
/de/, subdomains or separate domains all work; directories are the most common and the easiest to cache correctly. - Who consumes each feed? List the newsletter tools, social automations and partners per language, so each is connected to the right URL.
- What about category feeds? Decide whether translated categories should have their own feeds in each language, and document the URLs.
Write the result down as a small table of language, feed URL and consumers. It becomes the checklist you use after every plugin update or migration.
WordPress with WPML
WPML filters queries by the current language, and feeds follow the same logic. Depending on your language URL format, feeds are usually available as:
- Language in directories:
/de/feed/,/fr/feed/, with the default language at/feed/. - Language as a parameter:
/feed/?lang=de. - Separate domains: each domain’s own
/feed/.
The exact behaviour depends on your WPML version and settings, so always open each language’s feed after setup and look at the first few items and the channel title. Category feeds work the same way within each language. Check that category slugs are translated where you expect, because the feed URL uses the translated slug.
WordPress with Polylang
Polylang also provides feeds per language, typically at the language directory plus /feed/, for example /lt/feed/, and category feeds under each language’s category URLs. If the default language is shown without a directory, its feed stays at /feed/. Check two settings in particular: whether the language is set from the directory in the URL, and whether the default language’s URL contains the language code. Both affect which feed URL returns which language.
Other platforms
- Drupal with its multilingual modules can filter feed views by language; add a language filter to each feed display, or use the interface language as a contextual filter.
- Joomla multilingual sites usually have category menu items per language, each with its own feed.
- TYPO3 news feeds can be configured per site language in the routing and TypoScript.
- Static site generators such as Hugo generate feeds per language when multilingual mode is enabled.
- Hosted platforms vary; many support only one language per publication, which makes feeds simple but limits the site.
Autodiscovery, hreflang and subscribe pages
Each page should advertise the feed for its own language. A German article’s head should contain a link rel="alternate" pointing to the German feed, with a German title. Multilingual plugins generally handle this if the theme uses WordPress’s standard feed links, but custom themes sometimes hard-code the default feed. You may also list other language feeds with hreflang attributes on the alternate links, which some readers use to offer the right language. Keep the page’s own language first.
Telling readers which feeds exist
Autodiscovery handles readers that visit a page, but people also look for feeds deliberately. A short “Subscribe” or “RSS” page in each language, listing that language’s main feed and any category feeds with one-line descriptions, helps both readers and partners. Link it from the footer in every language. If you publish a newsletter per language, list it on the same page, so readers can choose the channel they prefer in their own language.
For partners and press contacts, a single overview page listing all language feeds in a table saves repeated emails. Include the language code, the feed URL and what it contains, and keep it updated whenever you add a language or change the URL structure.
Caching pitfalls
Caching layers are a frequent cause of wrong-language feeds. If the language is chosen by a cookie, browser setting or query parameter, and the cache key does not include it, the first language requested may be served to everyone. Safer patterns:
- Put the language in the URL path or domain, so each feed has its own URL and cache entry.
- If you must use a parameter, make sure the cache varies on it.
- Never rely on cookies or the
Accept-Languageheader for feeds; readers do not send meaningful values.
CDNs deserve extra care, because their default cache keys often ignore query strings or cookies entirely. After configuration, fetch each language feed from a clean session, such as a command-line request, and check that items and channel text are in the right language.
Translations and duplicates
When an article exists in several languages, each version is a separate item in its own language feed. That is correct. Problems arise only when feeds are merged, for example in an aggregator that combines all languages. In that case, decide deliberately whether to show all versions or only one language. If you combine feeds from multilingual sources yourself, keep languages in separate merged feeds. Our tool, Feeds, merges several sources into one feed, removes duplicates and filters by keywords, which works well per language: one merged feed for German sources with German keywords, another for French. See the plans.
Related reading
- WordPress RSS Feed URLs: Every Feed Your Site Already Has
- RSS Autodiscovery: Help Readers and Apps Find Your Feed
- Automating Multilingual Content Distribution with Feeds
The bottom line
Multilingual sites should publish one feed per language, with only that language’s posts, a correct language code and localised channel text, and each page should advertise its own language’s feed. WPML, Polylang and other systems support this with language-specific URLs; the usual problems come from hard-coded theme links, caches that ignore language and localised RSS dates. Test each language feed from a clean session, and every audience will get exactly the content it can read.
DUK
Should a multilingual site have one feed or several?
Several, one per language. Mixed-language feeds confuse readers and produce mixed newsletters and social posts. Separate feeds let each audience and tool receive content in one language, and they make measurement per market much easier.
What is the feed URL for a language in WPML or Polylang?
Usually the language’s home URL plus /feed/, such as /de/feed/. With parameter-based language settings it may be /feed/?lang=de. Check your plugin’s language URL settings.
Can RSS dates be written in other languages?
No. RSS 2.0 dates must use English day and month abbreviations with a time zone, whatever the feed’s language. Localised dates make the feed invalid.
Why does my German feed show English posts?
Often a cache is serving the first language requested to everyone, or the theme hard-codes the default feed. Put the language in the URL, make caches vary by it, and check the autodiscovery links.
Should translated versions of an article share a guid?
No. Each language version is a separate item with its own URL and its own guid. Sharing guids across languages can make readers or aggregators treat them as the same item, so one version would silently hide the other. Multilingual plugins normally give each translation its own post ID and guid automatically.


