
In simple English
This tool records what a person does on your website. It saves clicks, typing and page changes into a small data file. You can play back these actions later like a video. It helps you see bugs that your users face. It is free to use on your own servers.
What it is
A TypeScript library that records the Document Object Model (the tree of elements that makes up a web page) and user actions into serializable data. It includes packages for recording, replaying and playing back sessions with a graphical user interface.
What it is good for
Solo builders who want to watch how users navigate their web application, debug hard-to-recreate bug reports, or build their own session replay feature without paying for third-party cloud services.
- Records exact DOM mutations and user interactions as lightweight data instead of heavy video.
- Includes a ready-to-use player interface with pause, fast-forward and timeline scrubbing.
- Used as the underlying engine by many major open-source and commercial monitoring platforms.
- Requires writing custom JavaScript to capture recordings and send them to your server.
- Privacy risks if sensitive user data like passwords or credit cards are accidentally recorded.
- Large recording files can consume significant storage if your app has heavy user activity.
Paid session replay services or guessing user actions from bug reports
A Node.js backend to store the recorded session events in a database
- PostHog/posthog40k stars
An all-in-one product analytics suite that includes session replay powered by rrweb.
- openreplay/openreplay13k stars
An open-source session replay tool for developers to troubleshoot web apps.
- SVG-Edit/svgedit7.8k stars
A vector drawing editor that runs in a browser and can be embedded in a web page.
- viliusle/miniPaint3.5k stars
A layered image editor that runs in a browser, with no upload and nothing installed.
- johanmattssonm/birdfont561 stars
A free desktop editor for drawing a typeface and exporting it as an installable font file.
npm install @rrweb/record @rrweb/replay