Browser extension for hiding and collapsing LinkedIn feed and notification clutter. Available for Chrome and Firefox.
JLI Declutter does not use LinkedIn APIs, block network requests, click buttons, post content, send messages, automate account actions, or transmit data. The packaged extension runs a local content script on LinkedIn pages to classify visible feed and notification items, collapse distracting items, and keep comments/reposts visible.
The extension uses a single content script for desktop LinkedIn with configurable toggles:
- No LinkedIn API calls.
- No network requests.
- No account actions.
- No data transmission.
- Local page text inspection only, used to decide which visible cards to collapse.
- A
MutationObserverwatches for newly loaded feed and notification items. - Settings stored locally via
storage.sync(not transmitted anywhere).
- Toggle to enable/disable the extension.
- Collapse promoted/sponsored-looking feed cards.
- Collapse social/reaction feed cards.
- Collapse suggested-looking feed cards.
- Hide job recommendation feed carousels.
- Collapse recommended follow modules.
- Collapse reaction notifications.
- Collapse analytics notifications, such as post impression summaries.
All collapsed items expand on hover. Each category can be toggled independently from the popup.
The packaged extension processes visible LinkedIn page text locally in the browser to classify feed and notification items. It transmits no data and stores no data off-device. Settings are saved to storage.sync for convenience across devices — no data leaves your browser.
- Single purpose: Locally hides and collapses distracting LinkedIn feed and notification clutter so users can browse LinkedIn with less noise.
- Storage permission: Used to persist user toggle preferences locally. No data is transmitted.
- Host permission:
https://www.linkedin.com/*— needed to run the content script on LinkedIn pages. Access is limited to LinkedIn. - Remote code: None. All JavaScript, CSS, HTML, and assets are packaged with the extension.
The same codebase publishes to AMO. The Firefox version is identical — no remote code, no data transmission, no account automation. The storage.sync permission works the same way via Firefox Account sync.
- Open
chrome://extensions. - Enable Developer Mode.
- Click
Load unpacked. - Select this
jli-declutterdirectory. - Refresh LinkedIn.
- Open
about:debugging#/runtime/this-firefox. - Click
Load Temporary Add-on…. - Select
manifest.jsonfrom this directory. - Refresh LinkedIn.
Create a distributable zip from this directory:
npm run buildThe output is written to dist/jli-declutter-v<package.version>.zip. The same zip works for both Chrome Web Store and Firefox Add-ons (AMO) submission.
manifest.json: Manifest V3 config with Chrome + Firefox compatibility.assets/: Extension icon source and PNG assets.content/generator.js: LinkedIn decluttering content script with toggle support.popup.html,popup.css,popup.js: Popup UI with master toggle and per-category toggles.options.html,options.css: Options/help page.scripts/build-zip.js: Packaging script.
Run checks from this directory:
npm run checkLinkedIn changes its DOM frequently. The desktop runtime favors text and accessibility patterns over generated class names. If a rule misses, prefer small changes to the detection patterns before adding broad structural selectors.