A lightweight Chrome extension that permanently blocks advertisers on X and lets you save videos, GIFs and images — all client-side, no data ever collected.
Built for power users who want a cleaner feed and full control over their X experience.
Doesn't just hide ads — actually blocks the advertiser's account entirely. Uses a debounced MutationObserver to detect "Ad", "Promoted", and "Reklam" labels in real-time, then silently clicks Block → Confirm in the background.
Saves highest-bitrate MP4 videos, GIFs, and full-resolution images. Uses X's own Syndication API — no blob hacks or network interception.
Auto-detects your browser language. Manually override from Settings. i18n is awaited before any DOM paint — no English flickering on first load.
Counters update in real-time via chrome.storage.onChanged even while the popup is open. Animated number roll on every update.
Toggle ad blocking, media downloader, and toast notifications independently. Settings sync live to all open X tabs — no refresh needed.
Under the hood, X Ad Blocker uses X's own interface and API — no network-level hacks, no filter lists to maintain.
A debounced MutationObserver watches for new tweets with 120ms batching. It scans span text for ad labels outside the tweet body — no false positives on normal content.
Injects a custom stylesheet that hides the block dropdown and confirmation modal only during the active block operation. A temporary full-screen overlay prevents accidental clicks.
Each advertiser's @handle is stored in blockedHandles. Same advertiser appearing twice? Block fires again (ad removed) but the counter doesn't increment.
Requests cdn.syndication.twimg.com via the background service worker (bypassing CORS). Picks highest-bitrate MP4. Blob-downloads with a clean filename — no double extensions.
Waits for X's React hydration cycles instead of using hardcoded delays. Re-scans buffered tweets when the ad blocker is re-enabled — nothing slips through.
X Ad Blocker was designed from the ground up with privacy as a first principle — not an afterthought.
Nothing you do on X is sent anywhere. No analytics, no tracking pixels, no crash reporting. Your browsing is entirely your own.
The only external request is to cdn.syndication.twimg.com — X's own public API — and only when you explicitly click the download button.
All counters, settings, language preference, and the blocked advertiser list live exclusively in chrome.storage.local. On your device. Under your control.
Not on the Chrome Web Store — installed directly in Developer Mode. Takes less than a minute.