Skip to content
Dozor
Open source · MIT

Watch how your users actually use your product

Dozor records real browser sessions with rrweb and lets you replay them in pixel-perfect detail. Self-hosted, framework-agnostic, free forever.

What it does

Built on rrweb, designed for teams who want to understand their users without shipping their data to a third-party vendor.

Pixel-perfect session replay
Every DOM mutation, mouse move, and input event captured and reconstructed in a sandboxed iframe. Scrub, skip idle time, jump by page — the replay player treats long sessions as first-class.
Tracked users and traits
Link sessions to your end users through a simple `identify()` call. Traits, activity timelines, and per-user session history — all derived from your own SDK payloads.
Slices for long sessions
Sessions automatically split on navigation or idle gaps, each slice independently replayable. No more scrubbing through a 40-minute tab that was open in the background.
Your data, your database
No third-party processors, no hidden telemetry. Point the SDK at your own dashboard, host on your own Postgres, own every byte.

Install in under a minute

Two packages on npm — pick the one that matches your stack. Full setup guides live in the SDK repo.

  1. 1Create a project in the dashboard and copy the public key.
  2. 2Install the SDK package that matches your stack.
  3. 3Wrap your app (React) or call `init()` (vanilla) with the public key.
$ npm install @kharko/dozor
import { Dozor } from "@kharko/dozor";

Dozor.init({
  apiKey: "dp_...",
  endpoint: "https://kharko-dozor.vercel.app/api/ingest",
});

Thank the author

Dozor is an open-source personal project. There are no paid tiers, no enterprise upsell, no plan to monetise. If it helped you and you want to say thanks, here are two ways.

🇺🇦 Ukraine — Monobank (UAH)
One-tap donation via Monobank link. Works from any card, any country, no sign-up needed.
Europe — bank transfer (EUR)
SEPA transfer to the author's EUR account. Use these details in your bank's transfer form.
  • IBANGB84CLJU00997180803000
  • BICCLJUGB21
  • ReceiverZAMNYUS MYKOLA

Other ways to say thanks — or want to send from a different rail? Get in touch.