Session replay

Watch the session that broke.

A funnel tells you where people leave. A replay of that exact person, keyed to the same event, tells you why.

See it on your own site first

Type a domain. We open that page in a real browser, record it, and play the recording back to you here. No account, nothing installed.

One page, one browser, one visit.

Recording is on for every workspace that asks for it, and included in the free plan.

Three weeks of guessing, or four minutes of watching.

The funnel gives you a number, not a cause

Half the carts never reach checkout. That figure is true, repeatable, and tells you nothing you can fix. The next question is always the same one: what were those people actually looking at?

So you go looking, in four places at once

Analytics for the drop, error tracking for the stack trace, a support ticket for the anecdote, a staging build to reproduce it. Four tools, four identities for the same person, and no way to line them up on one clock.

Or you click the drop-off and watch it happen

The recording, the errors and the network calls sit on one timeline, because they came out of one pipeline. There is nothing to reproduce: you are watching the original.

What you get in the player

Scrub, don’t wait

Drag anywhere on the timeline. Skip the idle minutes, sit on the two seconds that matter.

Errors beside the picture

Uncaught errors and unhandled rejections on the same clock as the recording, deduplicated so one broken loop cannot flood a session. Click one, land on the frame.

Requests and status codes

Method, address, status and duration for every call the page made while you were watching. Addresses are redacted in the browser.

Masked before it is sent

Text typed into fields is replaced in the browser, not on our side. There is nothing to redact later, because nothing was written down.

One identity, not two

A recording carries the same person as your events, by the same identity graph. Signing in halfway through does not make a second stranger.

Mobile sessions too

Expo and React Native apps record as frames and land in the same player, behind an opt-in. Masking happens on the device; a frame that cannot be masked is dropped.

The difference

The replay is not a second dataset.

Most stacks bolt a recorder onto analytics and hope the two agree on who a user is. Kilden records into the pipeline the events already run on — same identity, same clock, same verification. A drop-off in a funnel is a list of recordings, because it was never anything else.

one person, four readings
identity usr_4192 ✓ verified
in your funnel dropped at checkout
in flag targeting cohort: used_search 7d
in replay 3 sessions · last 17s

An illustration. The identifiers are made up; the four readings are the four places that person already appears.

Drag the timeline. The error is at seventeen seconds.

fjord.coffee/checkout replay · usr_4192
Checkout
email
•••@••••••••••••
card number
•••• •••• •••• ••••
discount code
FJORD10
Apply code
Total $24.00
Pay $24.00 Try again

We couldn’t process that payment. Please try again.

events
exceptions
network
0:17

Masking is on: the card number never left the browser. Click an exception to jump to it.

An illustration, not a recording of anyone: a hand-authored session, so an example on a marketing site cannot expire or leak.

How it works

Recording model

captured
The page structure and every change to it yes
Pointer, scroll and input events yes
Uncaught errors and unhandled rejections yes
Request method, address, status and duration yes
Console log and warning messages no
Request and response bodies no
Video or screen pixels no
not yet
The player linking out to a person’s profile not yet
Building a cohort from the player not yet
Choosing where your data lives not yet
What sampling does not save the download

The recorder is a separate script, fetched only for projects with recording on. The sampling roll happens inside it, after the fetch — so a sampled-out visitor pays for the script and records nothing.

What is above the line is what replay does today. If a capability is not listed, assume it does not exist yet — we would rather you found that out here than after installing.

Install

starting from scratch
# npm install kilden
import kilden from 'kilden'

kilden.init('wk_…')

Two lines, and no third one for replay.

already using kilden

Nothing to add. Recording is a switch in the project’s settings, so it never needs a change to your site — it lands on the next page load, not in a tab already open.

A second script for replay none
Framework requirements none
Code change to start recording none

Read the SDK reference

Privacy defaults

Masking happens in the browser, before anything is transmitted. The defaults below are on from the first recording; loosening them is an explicit change you make.

Text typed into inputs, textareas and selects masked
Page text that nobody typed kept
A visitor who opted out of tracking not recorded
Two attributes you can put on any element data-kilden-no-capture data-kilden-mask One takes the element and everything inside it out of the recording. The other keeps its shape and hides its contents.
Delete a person’s recordings on request distinct_id
How long anything survives

Two different clocks. The recording is deleted from storage after 30 days, on every plan. The events follow your plan — 180 days on free, 730 days on Pro — so the record outlives the video.

GDPR and Ley 21.719

You are the controller and we process on your instructions, with a data processing agreement on request and a published subprocessor list. Chile’s Ley 21.719 sits on the same footing as the GDPR.

How Kilden handles personal data

What replay costs

free pro
Recordings included each month 5K 10K
Beyond that capped $0.002 each
Recording kept for 30 days 30 days
Seats unlimited unlimited
Monthly base $0 $49

One recorded session counts once, however long it runs. On free the allowance is a cap, not a bill: recording stops until the month turns over. Full pricing

Questions people actually search

does session replay slow down my site?

The recorder is a separate script, fetched only for projects with recording on and never at all if you turn it off. It buffers and compresses off the critical path, and adds no blocking request to page load. If you measure a regression, tell us — we treat it as a bug, not a trade-off.

is session replay GDPR compliant?

Compliance is a property of how you use it, not of a vendor badge. What we give you: text typed into fields masked in the browser by default, an attribute that excludes an element and its children, deletion on request, and a retention window that is fixed and published. Your consent flow and privacy notice remain yours — the same holds for Chile’s own data protection law.

can I see replays for one specific user?

Yes. Recordings carry the same person as events, so a profile lists that person’s sessions next to their event history. For signed-in users that identity is verified by a token your backend signs.

how much does session replay cost?

It is included in the free plan with a monthly allowance, and a larger one on Pro with a per-recording rate beyond it. On free the allowance is a hard cap rather than a bill. Seats are free on every plan.

does it work with react, vue or a single-page app?

Yes — the recorder watches the page, so it does not care what renders it. There is no framework-specific package to install and no router integration to configure.

can I record mobile app sessions?

Yes, on Expo and React Native: those record as frames and land in the same player, behind an opt-in. Native iOS and Android SDKs do not exist yet. Mobile web in a phone browser records like any other page.

Record your first session before you decide anything.
Start with your own site, no account. On real visitors the install is two lines.
Start free Read the docs Record my site