Not screen time. Dwell time.
Most people describe their feed one way. Their dwell data says something else. LumoScroll tracks which posts actually held your attention, by topic, tone, and time of day, and turns it into a weekly digest. Classified entirely on your device. Nothing sent anywhere.
No account required · nothing leaves your browser · no lectures, no nudges by default
Screen time was always the wrong unit.
Screen time counts minutes the tab was open, including the ones you spent scrolling past a hundred posts without reading a single one. It has never told you what actually got your attention, only that you were physically present.
Time the tab was open
34 minutes on Twitter. That number includes posts you scrolled past in a fraction of a second, videos playing in a background tab, and time spent typing a reply. It can't tell a doomscroll from a deliberate re-read.
Posts you actually stopped on
Every post that held your eyes for 2.5 continuous seconds or more gets one classified record: topic, tone, emotion, hour of day. A post you scrolled past in 400ms was never in your attention in the first place, so it's never counted.
Three different numbers, three different questions. LumoScroll's digest shows all three, plus the attention rate between them, on the "Where your attention went" funnel.
Scrolling Reddit, nothing changed on our end.
No settings to configure before this starts working. Just install it and browse. This is a real session, not a mockup.
Nothing to configure. Just scroll normally.
Install and pin it
Add it from the Chrome Web Store, then pin the icon so the badge is visible while you browse. That's the whole setup.
Browse Twitter/X, Reddit, LinkedIn, or YouTube
You don't do anything differently. LumoScroll watches for the same 2.5 second dwell threshold on every post that enters your screen.
Classification happens as you go
Topic, sentiment, and emotion are worked out in the content script the moment a post qualifies. No network call, nothing queued for later.
Your digest lands weekly
Topic breakdown, emotional tone, scroll timing, and a live in-session readout if you turn it on. Check the popup any time for a running total.
A lot has shipped since the first version.
LumoScroll started as a topic-and-mood tracker. It's grown into a full local behavioral layer on top of your feed, without adding a single server.
Local NLP classification
27 topic categories plus custom ones you define, with lemmatization and negation detection so "not interested in politics" doesn't score as politics.
Sentiment and emotion
VADER-based sentiment with an originally curated emotion lexicon, rebalanced across all eight emotions and gated against topic-vocabulary bias.
Live in-session widget
An ambient pill that appears after 3 minutes of real reading, plus one gentle nudge if a session runs long or skews heavily negative. Off in one click.
Goals and Focus mode
Daily per-platform time caps and a weekly Doomscroll Index ceiling, with live progress bars, built from data already being tracked.
Milestones
Calmest week, most diverse week, longest streak. A small running record of personal bests that surfaces at most once a week.
Behavioral insights
Digital Archetype, Topic Diversity Index, Chronotype, and a Doomscroll Index composited from negative tone, late-night concentration, and platform hopping.
Platform-hop detection
Catches patterns like LinkedIn to Twitter in under four minutes, and how much longer you stayed once you got there.
Teach it your own words
Correct a misclassified word in one tap, or add a fully custom topic with its own keywords and color. Takes effect on your next page load.
100% local, verified
Not a privacy-policy footnote. A visible badge in the popup and digest, and a network recording below showing exactly zero outbound requests.
Feeds fake themselves out from under a tracker.
Twitter/X and new Reddit both use virtualized, recycled DOM. Scroll a post far enough out of view and the framework can unmount that node entirely, then mount a brand-new node for the same logical post the moment you scroll back to it, even slightly.
A scan counter that dedupes by DOM element identity reads that remounted node as a new post and counts it twice. That's the real source of counts that looked roughly 30% too high in testing: not a bug in the dwell timer, but the feed quietly replacing elements out from under it.
The fix adds a second, cheap layer: a short text-snippet hash per post, checked against a bounded in-memory set that's never persisted and never sent anywhere. Two genuinely different posts that happen to open with the same 120 characters would now read as one, a real trade-off, but a far better failure mode than counting the same post three times because you scrolled past it three times.
One week, laid out plainly.
linkedin → twitter/x, 7× this month
avg gap: 4 min · stayed 3.2× longer than an average twitter session
This is one week of one person's scroll history. Yours will look different. That's the point.
Zero outbound requests. Verifiable, not just claimed.
Chrome DevTools, Network tab recording, LumoScroll running while someone scrolls Reddit. Every request belongs to Reddit. LumoScroll makes none, because there's no server to call.