LinkedIn wants more of your time than you want to give.
Good Friction puts the bottom of the page back. A small counter shows how long you've been on the feed. When you hit the end of a page, one prompt asks whether to keep going. Yes loads the next page. No closes the moment.
A nudge, not a blocker.
Two features. Nothing else.
End-of-page pause-gate — when you reach the end of the feed, a prompt asks if you want to keep going. It names how long you've been here. Yes loads the next page; no closes the moment.
Session timer — a small widget shows how long the current LinkedIn session has been running. Seeing the number is the point.
No history, no stats dashboard, no streaks, no nudge registry, no grayscale mode, no video-blocking. LinkedIn's own autoplay toggle handles autoplay; the onboarding deep-links to it rather than reimplementing.
Two permissions:
host_permissions: ['*://*.linkedin.com/*']— the content script needs access to LinkedIn pages to inject the timer and pause-gate.storage— settings (timer visibility, pause-gate preferences) persist locally in your browser.
No accounts. No tracking. No network requests. No data collection. The session timer runs in memory and resets when you close the tab. The code is open source — read it yourself.
Coming to the Chrome Web Store. In the meantime you can build and load locally — see Development.
npm install
npm run dev # WXT dev server, launches a Chrome profile with the extension side-loaded
npm test # Vitest run
npm run build # Production build → .output/chrome-mv3/Or load a built extension manually: Chrome → chrome://extensions → Developer mode → Load unpacked → select .output/chrome-mv3/.
Manual verification: open linkedin.com/feed, confirm the timer appears, scroll to the end of the feed, confirm the pause-gate prompt fires.
See CONTRIBUTING.md.
Free. Open source. No premium tier. No ads. Succeeds when you need it less.


