Features / Replay & transcripts

Session replay with text transcripts

One recording, two formats — because a human and a language model need completely different things from the same session.

What it does

  • Frame-by-frame, not a heatmap approximation Playback reconstructs the actual DOM, not a pixel diff or a canned screen capture — scrub to any second and see exactly what the browser rendered, including states that never touched a screenshot.
  • A transcript derived from the same events, not a separate summary Every recording produces a plain-text account of navigations, clicks, and stalls, generated from the identical stored events as the video — the two cannot disagree, because neither is a paraphrase of the other.
  • Signals marked inline, not buried in a report Rage clicks, dead clicks, failed requests, and abandoned forms are flagged directly on the scrubber and in the transcript with a , so the interesting five seconds of a nine-minute session are findable without watching the other eight minutes and fifty-five.
  • Skip idle, play at up to 4× Idle time — the seconds where nothing moved — is compressed automatically, and the remaining playback runs at 1–4×, so a nine-minute session reviews in well under two.

What it looks like

# Tape 3e7128f8
- URL: https://example.com/checkout
- Duration: 1:02

## Transcript
- 0:00 session start · https://example.com/ · viewport 1440×900
- 0:04 click button "Apply coupon"
- ⚠ 0:18 dead click button "Pay now" — nothing on the page responded
- ⚠ 0:19 rage click ×4 · button "Pay now"
- ⚠ 0:21 POST https://example.com/api/pay · 502
- ⚠ 0:30 typed into a form but left without submitting (heuristic)
- 1:02 session end · total 1:02

Session replay has been sold as video for over a decade, and video is genuinely the right format — for a human, sitting down to watch. It’s a terrible format for almost everything else you’d want to do with a session: search it, filter it, hand it to a script, hand it to a model. UserTapes records once and serves the result both ways, because the two audiences that need it want completely different things.

The video is for you

Playback is a full reconstruction of the DOM at the moment it was recorded, not a screen-capture video and not a sampled series of screenshots. That means scrubbing lands on a real, interactive frame, not the nearest keyframe — you can step second by second through exactly what a visitor’s browser showed them, including transient states like a loading spinner or a disabled button that a screenshot-based tool would simply miss.

Signals are marked directly on the transport: rage clicks, dead clicks, failed requests, and reload loops show as ticks on the scrubber in red. You don’t scan a nine-minute recording for the interesting part — you jump to the tick.

The transcript is for reading fast, by anyone

Every recording also has a plain-text transcript: a timestamped line per navigation, click, and stall, with the moments that matter prefixed . It’s generated from the same stored events as the video, not written separately — which means it can never drift out of sync with what the recording actually shows.

That matters for two different readers. For you, it means the readout panel next to the player lets you click a line and have the tape seek there — reading is often faster than watching, especially for a session where nothing much happened until the last five seconds. For an agent, it means the session is something that fits in a prompt at all: a few kilobytes of structured text instead of hundreds of kilobytes of serialized DOM events that would have to be rendered to mean anything.

Why signals are marked, not just logged

A rage click, a dead click, and a stalled request are detected automatically and surfaced in both formats — as a red tick in the player, as a line in the transcript. The alternative most tools ship is a raw event log you’d have to interpret yourself, which works fine for one session and falls apart the moment you’re trying to find the bad one out of two hundred.

Where this connects

The transcript format is also what the MCP server returns to an agent, and what the AI chat panel reads to answer a question across many sessions at once — replay is the foundation both of those sit on top of.

Free tier · no card · no expiry

Give your agents eyes.

Record 100 sessions free, forever. Cookieless, inputs masked at the source, and full MCP access on every plan — including this one.

● Start recording