{"slug": "how-i-track-scroll-depth-without-cookies", "title": "how i track scroll depth without cookies", "summary": "Om Yaduvanshi, an 18-year-old applied AI developer, built Cloudline, a cookieless Google Analytics alternative that tracks scroll depth without cookies by treating scroll depth as a property of the pageview rather than the visitor. The under-2KB script logs page, referrer, screen size and time, attaching only the deepest scroll bucket (25/50/75/100%) to each anonymous pageview, so no session ID or fingerprint is needed. Cloudline is free for early users while development continues.", "body_md": "i'm om yaduvanshi. i'm 18, an applied ai developer building **cloudline**, a cookieless **google analytics alternative**. one script tag, under **2 KB**, no cookies, no stored ips.\n\nto report \"this visitor scrolled 75% of the page\", you have to know it's the same visitor across scroll events. the usual answer is a cookie. here's how i got around it.\n\nscroll events are cheap. the browser fires them for free. the hard part is connecting a dozen scroll events to one visit. most tools do that with a session id in a cookie.\n\ntake the cookie away and the events don't connect. that's the whole problem.\n\nforget the visitor for a second. scroll depth is simpler than it sounds: for each pageview, what's the deepest point reached? cloudline reports it in four buckets: 25, 50, 75, 100%.\n\nscroll depth is a property of the pageview. it says nothing about the reader. a speed-scroller and a careful reader both show 100%. the number tells you where attention drops, not how deep it goes.\n\nif every pageview is already anonymous, there's nothing to stitch.\n\ncloudline's script logs a pageview with four things: page, referrer, screen size, time. the deepest scroll mark rides along with that same pageview. the browser already knows how far it scrolled, so only the bucket number leaves the page. no cookie to read and nothing to fingerprint.\n\nnothing about the visitor is stored, because nothing about the visitor is needed.\n\nthe buckets only mean something against the page.\n\na cliff between 50 and 75% on a long post means the middle drags. 100% on a pricing page with no clicks means people saw the price and left. low numbers on a short page mean nothing, the page just ends.\n\ni check one thing per page: where's the biggest drop between buckets. that's the paragraph to rewrite.\n\nscroll depth can't tell reading from skimming, and it can't tell you why someone stopped. on short pages the buckets are noise.\n\nit's one number per pageview. treat it like that and it's useful.\n\n**cloudline** is **free for early users** while i keep building it. cookieless analytics in one line of code.\n\n— om yaduvanshi", "url": "https://wpnews.pro/news/how-i-track-scroll-depth-without-cookies", "canonical_source": "https://dev.to/omyvnss/how-i-track-scroll-depth-without-cookies-jb9", "published_at": "2026-09-28 04:13:08+00:00", "updated_at": "2026-09-28 04:47:57.620916+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools"], "entities": ["Om Yaduvanshi", "Cloudline", "Google Analytics"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/how-i-track-scroll-depth-without-cookies", "markdown": "https://wpnews.pro/news/how-i-track-scroll-depth-without-cookies.md", "text": "https://wpnews.pro/news/how-i-track-scroll-depth-without-cookies.txt", "jsonld": "https://wpnews.pro/news/how-i-track-scroll-depth-without-cookies.jsonld"}}