Event Log Sessionizer

Event Log Sessionizer

Turn timestamped events into sessions with an explicit inactivity rule.

Each user is sorted by its event times. This is a local log analysis profile, not a measurement of active engagement or a replica of an analytics service.

Event CSV and session rules

1 MiB UTF-8 · 1–5,000 data rows · 3–32 columns · 100,000 cells. User keys and event names: at most 256 Unicode code points, single line and nonblank. Headers are trimmed; values keep their exact identity.

Choose the input format yourself; no unit guessing. RFC3339 needs a full date, seconds and Z or ±HH:MM. Up to 3 fractional digits; no leap seconds or offsetless local time.

A new session starts when the same user’s next gap is greater than or equal to the timeout. Exactly 30 minutes splits at the default 1,800 seconds.

Inspect the columns, choose your format and run the analysis.

Time and session contract

For each exact user key, sort by integer UTC milliseconds, then by input order. A gap ≥ timeout starts a session; crossing midnight alone does not. Equal instants stay together. Session duration is last minus first, not total attention, active time or time spent after the last event. The analysis keeps duplicate rows.

Accepted RFC3339 profile: years 0001–9999, a real calendar date, T/t, seconds, optional 1–3 fractional digits, Z/z or an offset from -23:59 through +23:59. UTC conversion must stay within the same year range. Invalid days, hour 24, second 60, more precise fractions, named zones and surrounding whitespace are errors. Unix seconds use an optional sign and decimal fraction up to 3 digits; Unix milliseconds use an optional sign and integer digits. Scientific and hex notation are rejected.

RFC3339 -00:00 describes a known UTC instant but an unknown original local offset. Z and +00:00 explicitly specify zero offset. Unix timestamps define instants without telling us the original local timezone. No browser timezone or daylight-saving guess is used.

Only explicitly pasted text or a selected file is read. Analysis stays in page memory; there is no upload, URL/analytics storage or automatic save. Downloads contain user keys and event strings, so review them before sharing. Cancel or an error never yields a partial success.

Time format references

The parser uses the bounded profile described above, not all RFC3339 variants. It avoids the implementation-specific date-string fallback permitted by JavaScript Date.parse.

Comments & questions

Event Log Sessionizer

A timestamp conversion does not explain which events belong to the same visit-like interval. This tool groups exact user keys, puts each user’s events in chronological order and splits them at a chosen inactivity threshold. Every session keeps its first and last observed events, original CSV records and complete event path. The report uses an explicit mathematical definition instead of assuming the rules of a particular analytics product.

Key features

  • Three explicitly chosen columns and timestamp formats; no guessed Unix units or browser timezone.
  • Exact-key grouping with stable input-order ties for events at the same instant.
  • A new session at gap ≥ timeout, with last-minus-first duration and zero-length single-event sessions.
  • Session and event tables retain normalized UTC, original timestamp, source record and ordering provenance.
  • Whole-report session CSV, event CSV and JSON exports independent of filters and pagination.
  • Bounded local analysis, cooperative cancellation and whole-input errors rather than silent skipped events.

How to use

  1. Paste UTF-8 CSV or select a local file and choose comma, semicolon or tab.
  2. Inspect the table and select three distinct columns for user key, timestamp and event name.
  3. Choose the exact timestamp format and an integer inactivity timeout in seconds.
  4. Run analysis, compare duration statistics and inspect session event order and boundary gaps.
  5. Filter the preview or download the complete session CSV, event CSV or JSON report.

Use cases

  • Group an anonymous fictional product log into consistently defined inactivity sessions.
  • Audit exactly-at-threshold events while retaining their original CSV record numbers.
  • Compare raw timestamps with different UTC offsets that refer to the same instant.
  • Export complete event paths for later analysis without mistaking a session span for active engagement.

Frequently asked questions

When does an event start a new session?

The first event for a user starts a session. After sorting that user by UTC milliseconds, a gap greater than or equal to the chosen timeout starts another. At 1,800 seconds, exactly 30 minutes splits; 29 minutes 59.999 seconds does not. Crossing midnight alone does not split. Events with the same timestamp remain together in original CSV order.

What timestamp formats are accepted?

Choose RFC3339 with milliseconds, Unix seconds with up to three decimals, or integer Unix milliseconds. The RFC profile requires years 0001–9999, valid month/day/time, T/t, seconds and Z/z or ±HH:MM. Fractions beyond milliseconds, leap seconds, hour 24, named zones, offsetless timestamps and whitespace around timestamps are rejected. The tool does not claim every RFC3339 variant is supported.

What does -00:00 mean?

RFC3339 -00:00 identifies a known UTC instant while leaving the original local offset unknown. Z and +00:00 specify zero offset. Unix timestamps likewise define instants without providing an original local timezone. The report preserves the raw text and separately records whether that local offset is known.

Is session duration the time a user actively spent?

No. Duration is the last observed event minus the first in that session. A single event contributes zero and no timeout is added after the final event. Sessions with zero duration participate in mean and median statistics. Per-session integer milliseconds and total decimal-string milliseconds are exact; the mean is a floating-point approximation. These values do not prove attention or reproduce a specific analytics service.

How are keys, duplicate events and input order handled?

User keys preserve case, spaces, leading zeros and Unicode spelling. Headers alone have outer whitespace trimmed. Identical event rows are retained, not deduplicated. Events are sorted separately within each user; identical instants keep original input order. The result includes both original logical CSV records and chronological ranks. Global session IDs apply only to this report, not as persistent IDs across edited inputs.

What are the limits and what do exports include?

Use up to 1 MiB UTF-8, 5,000 data rows, 32 columns and 100,000 cells; selected user/event strings are single-line nonblank values up to 256 code points. Bad rows fail the whole analysis. Blank records are counted and skipped. CSV and JSON always include every session/event independent of the preview; full paths are exported even when the table shortens their display. CSV protects spreadsheet formula prefixes, JSON keeps originals, and each output is bounded to 8 MiB. Cancellation discards partial results.

Privacy

Only explicitly pasted text or a selected file is read. Analysis stays in page memory; there is no upload, URL/analytics storage or automatic save. Downloads contain user keys and event strings, so review them before sharing. Cancel or an error never yields a partial success.

Related Tools

Timestamp ConverterJSON ↔ CSVJSON FormatterWasm Module InspectorHreflang Matrix CheckerAST Query PlaygroundContainer Build GraphDependency Graph ExplorerSemver Range LabCron Schedule AuditorPatch Review WorkbenchSource Map ExplorerLocalization Catalog AuditorStructured Data ReviewerHTTP Archive AnalyzerWebhook Signature LabProtobuf Schema WorkbenchGraphQL Schema LabAvro Schema EvolutionLocal SQL WorkbenchSchema Form BuilderMesh Repair WorkbenchPipe Network LabRobot Arm Kinematics LabThermal Network LabBeam Response LabGear Train DesignerTolerance Stackup LabSensor Calibration FitPCB Stackup PlannerDigital Filter DesignerNetwork Reachability MapSun Shadow MapGPS Error SimulatorDigital Logic SimulatorAnalog Circuit LabMechanism Linkage LabAnalysis Mesh GeneratorOpenAPI Contract InspectorDatabase Migration PlannerDimensional Equation CheckerTruss Force LabBoolean Minimization LabControl Response LabQueueing Simulation LabGeofence Event SimulatorCoordinate Reference LabSurvey Traverse LabRaster Classification LabChoropleth Design LabMap Print ComposerRaster Reprojection LabElevation Contour MakerTerrain Viewshed LabWatershed DelineatorMap Tile PackagerText File Encoding WorkbenchFilesystem Portability AuditorSBOM License ExplorerFile Signature Auditornpm Lockfile Conflict ResolverSource Secret AuditorOffline Web Package BuilderCertificate Chain InspectorTorrent Metainfo InspectorChunked File PackagerEncrypted File VaultDuplicate File FinderArchive WorkbenchDesign Token ManagerSpacing Token DesignerResponsive Type SystemPackaging Dieline DesignerSVG Icon Sprite PackerFlex Layout PlaygroundCSS Grid PlaygroundRegex Equivalence LabMarkdown Repository AuditorLog Template MinerResponsive Layout AuditorEmail Template PreviewInternal Link GraphState Machine TesterPetri Net SimulatorGit History VisualizerCurl Request WorkbenchBinary Protocol DesignerHex File EditorBinary Patch WorkbenchFile Signature WorkbenchAPI Mock SandboxSchema Column MapperER Diagram DesignerTime Series Gap AuditorStratified Data SplitterData Lineage DesignerDecision Tree LabData Anonymization WorkbenchData Expectation RunnerJSON Schema ValidatorBasket Pattern AnalyzerRobots Policy TesterSEO HTML AuditorAccessibility Structure AuditorSyndication Feed WorkbenchIndexNow Payload BuilderCrawl Log AnalyzerCSP Policy WorkbenchSearch Performance AnalyzerCSV Formula Risk AuditorCORS Response SimulatorCache Header LabCookie Policy InspectorWeb Vitals Trace LabSitemap Health AuditorBatch File RenamerFile Manifest VerifierFolder Space MapFolder Difference ReviewerRoute Order OptimizerGeoJSON Map EditorPolygon Overlay LabCartographic Label PlacerSpatial Table JoinGeoJSON Topology AuditorGPX Track AnalyzerTrack Privacy RedactorCSV Table JoinCSV Pivot WorkbenchScientific Data ProfilerTabular Cleaning WorkbenchRecord ReconciliationData Dictionary BuilderCanonical Graph AuditorRedirect Plan TesterHTTP response and ping reference testBrowser and System InformationJSON ↔ YAML ConverterXML ↔ JSON ConverterHTML FormatterJavaScript MinifierMock Data Generator.gitignore GeneratorLicense GeneratorUser-Agent ParserPassword Strength CheckerCode to ImageXML FormatterHTTP Status Code LookupMIME Type LookupJS & SQL String EscapeCSS Box Shadow GeneratorCSS Gradient GeneratorIndent ConverterNumber Base ConverterUnicode Escape ConverterUnicode InspectorJSON Structure DiffMarkdown Table GeneratorBase64 EncoderURL EncoderSQL FormatterCron Expression GeneratorRegex TesterUUID GeneratorHash GeneratorJWT DecoderHTML Entity ConverterMarkdown PreviewCSS MinifierMeta Tag GeneratorCase ConverterImage to Base64
Explore all Dev Tools tools →Image/Media →Text/Convert →Life/Fun →