Watch what happened before the error.

Session replay plays back the page, the clicks, the scrolling, the page changes and the failed requests from the minute before an error, right on the issue. It is opt-in, and every input is masked in the person’s browser before anything leaves it.

Part of production monitoring, on every plan.

Private by default

Replay is built so you can turn it on without a long privacy review.

  • Inputs masked in the browser

    Inputs, textareas and dropdowns are masked before recording. Passwords keep no length.
  • Your own markers

    Add data-checked-mask to hide text, or data-checked-block to leave an element out.
  • No query strings

    Page and link addresses are recorded without their query strings. Canvas and cross-origin iframes are never recorded.
  • Your workspace only

    No public links. Replays are deleted after your plan’s retention.

Records around errors, not every visit

By default the browser keeps the last minute in memory and uploads nothing unless an error or a failed request is captured. Then it uploads that minute and records the rest of the visit, so quiet sessions cost nothing.
  • onErrorSampleRate decides how many error sessions keep their replay.
  • sampleRate records a fraction of whole sessions from the start, when you want them.
  • Each recording has a length and size cap per plan; past it the recorder stops quietly and your app never sees an error.

Script tag

<script src="https://getchecked.twelveai.app/sdk/checked.v1.min.js"
        data-key="ck_pub_..."
        data-replay="true"></script>

npm (checkd-browser)

Checked.init({
  key: "ck_pub_...",
  replay: {
    onErrorSampleRate: 1, // keep the last minute, upload it when an error happens
    sampleRate: 0,        // fraction of sessions recorded from the start
    load: () => import("checkd-browser/replay"),
  },
});

Plays back on the issue

Open an issue and its replays are right there. The timeline marks every error, click and failed request, so you jump straight to the moment it went wrong.
  • A Replays page lists every recording, with filters for an issue, a release, a page address and whether anything went wrong.
  • Each replay links to the issues it belongs to, and each issue to its replays.
  • Browser, system, device, viewport and release on every replay.

Turn a real session into a test

Save as journey turns the clicks and typing in a replay into a draft journey. Typed values become variables you fill in, so the journey replays on every release and the bug stays fixed. About journeys.

Questions people ask

What replay records, what it never records, and who can see it.

Ask support something else
Is session replay on by default?

No. It stays off until you add data-replay="true" to the script tag or pass replay to Checked.init. It loads as a separate script, so pages without replay never download the recorder.

What gets masked?

Every input, textarea and dropdown is masked in the browser before anything is recorded, and passwords show a fixed mask so not even their length is kept. Add data-checked-mask to hide the text inside an element, data-checked-block to leave an element out entirely, or turn on maskAllText.

What is never recorded?

Typed values, canvas, cross-origin iframes, query strings in page and link addresses, and nothing at all when the browser has Do Not Track or Global Privacy Control turned on.

Does it record every visit?

By default it records around errors only: the browser keeps the last minute in memory and uploads it when an error or failed request is captured, then keeps recording the rest of that visit. You can also record a fraction of whole sessions with sampleRate.

Who can watch a replay?

Members of your workspace only. Replays have no public links and are deleted after your plan’s replay retention period.

Which plans include it?

Every plan, including Free. Paid plans keep more replays for longer. Saving a replay as a journey needs a plan with journeys (Starter, Business or Team).

Turn on replay in one attribute

Add the SDK, set data-replay, and the next error comes with its replay. No card needed.