The 30 minute number is real, but it is a default, not a law. Every analytics tool sets its own timeout, and several of them let you change it, which is the first reason two tools counting the identical visit can disagree on how many sessions it produced.
The exact definition
A session is a bounded group of interactions, typically pageviews, events, and clicks, that a tool groups together as one continuous visit by one visitor. What bounds it is a timeout: after a set number of minutes with no new activity, the tool closes the session, and the next interaction from that same visitor starts a new one. Google Analytics and GA4 both default to a 30 minute inactivity window. The 30 minute default is not a technical requirement, just the convention every major tool shipped with, so most sites never touch it and most people assume it is fixed.
What starts and ends a session, and where GA4 changed the rules
Universal Analytics ended a session on three separate triggers: 30 minutes of inactivity, the clock crossing local midnight, or the visitor arriving with a new campaign source mid-visit, which force-started a fresh session even if the old one had not timed out yet. GA4 dropped two of those three. It kept the inactivity timeout, now adjustable from 5 minutes up to almost 8 hours in the admin settings, but it no longer resets a session at midnight, and a mid-session change in campaign source no longer force-starts a new one by default. A visitor browsing a site from 11:50pm to 12:10am is one session in GA4 and two in Universal Analytics, for the exact same twenty minutes of behavior.
| Universal Analytics (legacy) | GA4 | |
|---|---|---|
| Default inactivity timeout | 30 minutes, adjustable 1 minute to 4 hours | 30 minutes, adjustable 5 minutes to 7 hours 55 minutes |
| Resets at local midnight | Yes, always | No |
| New campaign source mid-visit starts a new session | Yes | No, by default |
| Counted at | Server-side hit processing | session_start event |
Session vs user
A user is a person, or more precisely a device and browser combination identified by a client ID cookie, or a login ID if the tool supports it. A session is one bounded visit by that user. The relationship is one-to-many: a single returning user can rack up dozens of sessions over a month, one for every time they come back after a gap longer than the timeout, while a single session belongs to exactly one user. This is why sessions is always a number equal to or greater than users over any given period, and why a spike in sessions with a flat user count usually just means existing visitors are coming back more often, not that reach is growing.
Session vs pageview
A pageview is one page load, one event. A session is the container that holds however many pageviews, along with whatever other events fired, that a visitor generated inside one continuous, un-timed-out visit. A visitor who lands on a homepage, clicks into a pricing page, then a features page, has generated three pageviews inside one session, assuming they did it inside the timeout window without a 30 minute gap between clicks. Pageviews per session is a genuinely useful metric because it measures the depth of a single visit in a way neither pageviews alone nor sessions alone can.
Session timeout in GA4, and why to touch it carefully
GA4's session timeout lives in each data stream's tag settings, adjustable from 5 minutes up to 7 hours 55 minutes. Shorten the timeout and session counts inflate for the same traffic, since more inactivity gaps now qualify as a new visit. Stretch it out instead, and separate visits start merging into one. Neither change makes the underlying traffic different, and changing the setting partway through a reporting period breaks any before and after comparison of session counts, since the two halves of the period were measured under different rules. If session count needs to move for a real reason, document the change and the date, or the resulting trend line will look like a traffic shift that never happened.
Why session counts never match between two tools
Two tools watching the identical traffic can report different session totals even with the same 30 minute default, because the timeout is only one of several places tools disagree: what counts as the triggering event that keeps a session alive, whether a bot is filtered out before or after session counting, and whether a session is tied to a cookie that a privacy setting or an ad blocker might strip before the second pageview ever fires. The same root causes covered in why analytics numbers never match and why click counts differ between tools apply here directly, since a session count is just an aggregation built on top of the same click and pageview events those pages are about.
Sessions on a link in bio page
A link in bio page usually is not measured in sessions at all, and that is by design rather than a shortcoming. The single useful event on that page is the click, which link did someone tap, and Raydar logs it directly with UTM, referrer, and first and last touch data instead of folding it into a session construct built for multi-page website behavior. Tracking what that visitor does after they land on the destination site is a different job entirely, one that belongs to website visitor tracking running on that destination rather than to a page of links. See what a link in bio is for that boundary, and unique clicks vs total clicks for the click-level equivalent of the user versus session distinction above.