Twitter RSS Feed in 2026: What Works After Nitter
Twitter RSS feed options as of October 2026: why X and Nitter give you none, what RSSHub and RSS.app need, and a small Worker that builds your own feed.
Tarun Khatri
Published · Updated · 7 min read
A Twitter RSS feed in 2026 needs a paid feed service or your own small script, because X doesn't publish RSS feeds.
This guide is for you if your feed reader went quiet when Nitter stopped. You get the status of each option as of October 2026, then a Cloudflare Worker that builds a feed from one account or List. We run Weir, the API the Worker calls.
The Worker's only API call, which returns posts newer than the last one you saw:
curl https://api.weirapp.io/v1/x/search \
-H "Authorization: Bearer $WEIR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fromUsers": ["XDevelopers"], "sinceId": "2111172163776708859", "limit": 20}'
Which Twitter RSS feed options still work?
Only paid services and code you run yourself. We checked each option's own pages on 21 October 2026:
| Option | Status | The catch |
|---|---|---|
| X itself | No account or List feeds | Only its dev changelog has RSS |
| Nitter | Archived after legal letters | Instances told to shut down |
| RSSHub | Maintained | Self-host it with X credentials |
| RSS.app | Offers X feeds | Free plan: 2 feeds, daily refresh |
| A Worker calling Weir | Works | You deploy a little code |
Nitter is the big loss. Its maintainer's site says X Corp. sent cease-and-desist letters on 24 August and 8 September 2026. They demanded "a permanent takedown of Nitter instances and the project's repository."
The GitHub repo is now archived, and nitter.net shows only that notice. That's why "nitter rss not working" fills search boxes. Our twikit and twscrape alternatives guide covers the scrapers that broke with it.
RSSHub still ships Twitter routes, but you host them. Its docs list two setups that work: auth_token cookies from logged-in X accounts, or your own pay-per-use X API keys at X's rates.
RSS.app is the no-code pick. Its pricing page lists a free plan with 2 feeds refreshed every 24 hours. Paid plans start at $8.32 a month, with hourly refresh.
How the do-it-yourself feed works
You need a Weir API key, a free Cloudflare account and Node.js for Cloudflare's wrangler tool.
- Pick the feedOne account with fromUsers, or a public List with listId.
- Fetch new postsEach hour, ask for posts newer than the last id you stored.
- Serve RSSTurn the stored posts into RSS 2.0 when a reader asks.
- DeployCloudflare runs the refresh on an hourly cron.
Step 1: Get a key and pick the feed
Sign up for Weir, copy a key from API keys, and decide what the feed follows.
- One account:
fromUsers: ["XDevelopers"]returns that account's own posts. - A List:
listIdtakes the digits after/i/lists/in the List's URL, and returns posts by its members.
Use search with listId rather than the List timeline endpoint. That endpoint takes no limit and no sinceId, and X can send about 100 posts per call, each one billed.
Step 2: Fetch only new posts with sinceId
sinceId returns only posts newer than the id you pass. Store the newest post, and each refresh pays only for what's new.
const USER = "XDevelopers"; // for a List, send { listId } instead of fromUsers
async function refresh(env) {
const items = JSON.parse((await env.FEED.get("items")) ?? "[]");
const body = { fromUsers: [USER], sort: "latest", limit: 20 };
if (items.length) body.sinceId = items[0].id; // newest post we already have
const res = await fetch("https://api.weirapp.io/v1/x/search", {
method: "POST",
headers: { Authorization: `Bearer ${env.WEIR_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify(body),
});
if (!res.ok) return; // failed calls cost nothing; the next run tries again
const { data } = await res.json();
if (data.length) await env.FEED.put("items", JSON.stringify([...data, ...items].slice(0, 50)));
}
Keep id as a string. X ids are too big for a JavaScript number.
We ran the same search on 21 October 2026. First with an old sinceId, then with the newest id it returned:
→ search_x {"fromUsers": ["XDevelopers"], "sinceId": "2071752389183647758", "limit": 3}
← 3 posts · 4 credits
2026-10-16 New guide to the 𝕏 Chat API from @santiagomed ...
2026-10-14 ZohoSocial is making it even easier for teams ...
2026-10-07 We teamed up with Grok Bot to put the pulse of X ...
→ same search, "sinceId": "2111172163776708859"
← 0 posts · 1 credit
A quiet hour costs the 1-credit minimum and nothing more.
Step 3: Turn the posts into an RSS feed
Each stored post becomes one RSS item. The post's URL serves as its link and its guid, the id readers use to spot items they've shown.
const esc = (s) => s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
const item = (p) => `<item><title>${esc(p.text.slice(0, 80))}</title><link>${p.url}</link>
<guid>${p.url}</guid><pubDate>${new Date(p.createdAt).toUTCString()}</pubDate>
<description>${esc(p.text)}</description></item>`;
export default {
async fetch(request, env) {
const items = JSON.parse((await env.FEED.get("items")) ?? "[]");
const xml = `<?xml version="1.0"?><rss version="2.0"><channel><title>@${USER} on X</title>
<link>https://x.com/${USER}</link><description>Recent posts</description>${items.map(item).join("")}</channel></rss>`;
return new Response(xml, { headers: { "Content-Type": "application/rss+xml" } });
},
async scheduled(controller, env, ctx) {
ctx.waitUntil(refresh(env));
},
};
A reader's request never calls Weir. It only reads what the cron stored, so a reader polling every minute costs no credits.
Step 4: Deploy it with an hourly cron
Put both blocks in worker.js, next to this wrangler.toml:
name = "x-rss"
main = "worker.js"
compatibility_date = "2026-10-01"
kv_namespaces = [{ binding = "FEED", id = "<your KV namespace id>" }]
[triggers]
crons = ["0 * * * *"]
Create the store with npx wrangler kv namespace create FEED and paste its id above. Save your key with npx wrangler secret put WEIR_API_KEY, then run npx wrangler deploy.
Paste the Worker's URL into your reader. The first cron run fills it with the account's latest 20 posts.
Rather not run code? Our n8n guide makes the same search call from an HTTP Request node.
How much does a Twitter RSS feed cost to run?
About 900 credits a month for an hourly feed. Each refresh costs 1 credit, plus 1 credit per new post.
Hourly means 24 calls a day, or 720 credits a month. An account that posts 6 times a day adds about 180:
The 5,000 free credits each month cover about five hourly feeds. Past that, 900 credits cost about 18 cents on the $5 pack.
If you page through a busy hour with meta.nextCursor, budget 1 more credit. The last page can come back empty and still costs the minimum.
If it doesn't work
- The feed is empty. The store fills on the first cron run, at the top of the hour.
- Posts are missing after a busy hour. One call returns about 20 posts. Page with
meta.nextCursor, or refresh more often. - Reposts are missing. In our tests, a
fromUserssearch returns an account's own posts, not its reposts. - Weir answers
402. You're out of credits. Don't retry; add credits or wait for the monthly grant.
When not to use Weir
- You want to read X in a browser, the way Nitter worked. Weir has no viewer.
- You want no code at all. A feed service like RSS.app is simpler.
- You need posts within seconds. This feed is hourly. X's Activity API pushes
post.createevents at $0.005 each. - You follow a protected account. Weir reads public posts only.
For setups beyond RSS, see Weir as a Twitter API alternative.
FAQ
Does X have an RSS feed?
No, not for accounts or Lists, as of October 2026. X's developer docs list one RSS feed, for their own changelog. For posts, the routes X documents are its paid API and webhooks.
Is Nitter dead?
For most people, yes. X Corp. sent takedown letters in August and September 2026, the repo is archived, and nitter.net shows only a notice. Its maintainer says he is seeking funding and legal help.
Can I turn a Twitter List into an RSS feed?
Yes. In the Worker, send listId in place of fromUsers. Search returns posts by the List's members, newest first, at 1 credit a post plus the call.
Is there a free Twitter RSS feed generator?
RSS.app's free plan covers 2 feeds, refreshed every 24 hours. With Weir, the 5,000 free credits a month cover about five hourly feeds you host yourself.
Sources
All checked on 21 October 2026.
- nitter.net, update of 10 October 2026: https://nitter.net
- Nitter repository, archived: https://github.com/zedeus/nitter
- RSSHub, X (Twitter) routes: https://github.com/DIYgod/RSSHub/tree/master/lib/routes/twitter
- RSS.app, X feeds: https://rss.app/rss-feed/create-twitter-rss-feed
- RSS.app pricing: https://rss.app/pricing
- X docs index: https://docs.x.com/llms.txt
- X API pricing, Activity API events: https://docs.x.com/x-api/getting-started/pricing
- Cloudflare, Cron Triggers: https://developers.cloudflare.com/workers/configuration/cron-triggers/
- Weir billing: https://docs.weirapp.io/billing
- Weir pagination: https://docs.weirapp.io/pagination