How it works
Reddit's current UI ("shreddit") is built from clean, semantic web components, so nothing needs de-obfuscating:
- Hide ads. Every feed ad is a
<shreddit-ad-post>element carrying apromotedattribute, separated from real posts by<hr>rules. The extension hides each ad plus its trailing rule so no double divider is left behind. - Keep Rising. The Rising sort lives at the stable URL
/rising/. Landing on the default home feed (/,?feed=homeor/best/) redirects there. No loop risk:/rising/is never itself redirected, and sorts you pick explicitly (/hot/,/new/,/top/) are left alone.
A MutationObserver re-applies the filter as you scroll and as the feed lazy-loads more posts.
Options (toolbar popup)
- Enable: master on/off.
- Hide Promoted / Sponsored and Keep feed sorted by Rising: each independently.
- Dim instead of remove: fade and collapse hidden posts, hover to peek.
- A live count of promoted posts hidden on the page.
What it can touch
| Manifest entry | Why it is there |
|---|---|
permissions: ["storage"] | Your popup settings, kept in chrome.storage.sync. That is the only permission requested. |
host_permissions | None. Not requested, not needed. |
content_scripts.matches: ["https://www.reddit.com/*"] | HTTPS only, and only reddit.com. No other site is touched. |
content_scripts.all_frames: false | Top-level document only; nothing is injected into embedded iframes. |
run_at: "document_start" | So the page is filtered as it renders rather than flashing unfiltered first. |
content_security_policy | script-src 'self': no remote code, no eval, no inline script. |
Zero network requests, zero data sent anywhere. No analytics, no telemetry, no remote config, no remote script. The only network traffic is the site itself loading, exactly as it would without the extension. Your settings live in
chrome.storage.sync (so they follow your Chrome profile) and nothing else is stored.What it does not do
- Does not vote, post, comment or subscribe on your behalf.
- Does not read cookies, tokens or credentials.
- Does not load anything from the network, ever.
Honest caveats
- Only the current
www.reddit.comdesign is supported, notold.reddit.com. - If Reddit renames the ad element, the
shreddit-ad-postselector incontent.jsis the one line to change.
Security
Follows the repo's shared security guidelines (the OWASP Browser Extension Vulnerabilities Cheat Sheet): storage is the only permission, the content script runs HTTPS-only in the top frame, a strict CSP forbids remote code, no innerHTML or eval, no network calls, and popup↔page messaging checks sender.id. A static audit (tests/owasp-audit.mjs) enforces all of that on every extension in the repo.
Install
- Download or clone the repo.
- Open
chrome://extensionsand turn on Developer mode (top right). - Click Load unpacked and choose the
chrome-extensions/reddit-remove-promoted-keep-risingfolder.