ScrollMark is a lightweight, high-performance Chrome extension designed to anchor your exact reading position on any webpage and return to it instantly with a simple keyboard shortcut or click.
Unlike generic scroll-saving extensions, ScrollMark is custom-built to handle complex, dynamic single-page applications (SPAs) like ChatGPT, Gemini, and Grok by anchoring to the nearest semantic DOM elements rather than raw pixel offsets.
Built during study breaks for exams. When reading long study materials or logs and scrolling down to ask counter-questions in ChatGPT, losing the scroll position and having to find the place again was a constant disruption. ScrollMark solves this by letting you bookmark your exact paragraph, scroll down to chat/ask questions, and instantly teleport right back.
- Semantic DOM Anchoring: Remembers the actual text block/paragraph you were reading so that it aligns correctly even if the layout shifts or dynamic content loads.
- Dynamic Container Support: Works on websites with custom scroll panels (e.g. ChatGPT chat feeds, Gemini, Grok) where normal scroll extensions fail.
- CSP-Compliant Native Storage: Uses
chrome.storage.localto bypass host-page security policies (Content Security Policy) and prevent tracking/pollution of page storage. - Minimalist Dark Theme: Styled with a Vercel/Stripe-inspired dark aesthetic featuring smooth transitions and micro-animations.
- Hands-Free Auto-Scroll: Built-in adjustable speed autoscrolling for relaxed reading.
| Action | Shortcut (Windows/Mac) |
|---|---|
| Set Scroll Mark | Alt + S |
| Jump to Scroll Mark | Alt + J |
| Toggle Auto-Scroll | Alt + A |
- Clone/Download this repository to your local machine.
- Open Chrome (or any Chromium browser) and go to
chrome://extensions. - Toggle the "Developer mode" switch in the top-right corner to ON.
- Click the "Load unpacked" button in the top-left corner.
- Select the folder containing these files.
- Pin ScrollMark to your toolbar and start reading!
manifest.json: Extension settings, permissions, background worker, and hotkeys.popup.html&popup.js: The control panel interface.content.js: Handles scroll position calculations, visual line indicators, and message events.background.js: Listens for browser-wide keyboard commands and forwards them.icon*.png: Extension logo assets.

