How it works
Session replay captures everything users see and do:- DOM snapshots: Full page state at each moment
- Mouse movements and clicks: See exactly where users interact
- Console logs and errors: Debug issues with full technical context
- Network requests: View API calls and response times
- Performance data: Identify slow loads and rendering issues
Replays are privacy-safe by default. PostHog automatically masks text inputs, images, and sensitive data.
Setting up replay
Session replay starts recording once you enable it:Configure privacy settings
Control what gets recorded:
maskAllInputs: Mask password and text inputsmaskTextSelector: CSS selector for elements to maskblockSelector: Fully block elements from recording
Watching replays
Access replays from multiple entry points:- From replay list
- From insights
- From user profiles
- Navigate to Session replay in the sidebar
- Filter by date, duration, or user properties
- Click any session to watch
- Use playback controls (play, pause, skip, speed)
Replay features
Console logs
See JavaScript console output during the session:- Errors: Red console errors with stack traces
- Warnings: Yellow warnings from the browser
- Info/debug: Custom log messages from your code
- Network errors: Failed API calls and HTTP errors
Network panel
Inspect network activity during the session:- Request URL and method
- Response status and timing
- Request/response headers
- Payload data (if not sensitive)
You can configure which network requests to capture. By default, PostHog captures headers but not request bodies.
Performance tracking
Replay includes performance metrics:- Page load time: Time to interactive
- DOM events: When elements render
- Resource timing: Script and image load times
- Frame rate: Identify laggy interactions
Event timeline
See custom events alongside the replay:- Every event you track appears on the timeline
- Click events to jump to that moment
- Understand event sequence and timing
- Verify events fire at the right moment
Privacy controls
Protect sensitive information in replays:Mask text and inputs
Mask text and inputs
Automatically hide sensitive text:
Allow specific elements
Allow specific elements
Unmask specific elements you want to see:
Block entire sections
Block entire sections
Completely prevent recording of sensitive areas:
Common workflows
Debug user-reported issues
When users report problems, filter replays by their email or user ID. Watch their session to see the exact error.
Analyze funnel drop-offs
Click a funnel drop-off point and watch replays of users who left. Find common patterns or confusion points.
Validate new features
After launching a feature, watch replays of users trying it for the first time. See if they understand the UI.
Improve onboarding
Filter for new users’ first sessions. Watch where they get stuck or confused in your onboarding flow.
Playlists
Organize replays into playlists for team review:Create a playlist
- Go to Session replay → Playlists
- Click New playlist
- Name it (e.g., “Checkout issues”, “Mobile UX problems”)
Filtering replays
Find specific sessions quickly:- By user properties: Email, name, plan tier, signup date
- By events: Sessions containing specific events
- By duration: Only sessions longer than X seconds
- By console errors: Sessions with JavaScript errors
- By date range: Last 7 days, last month, custom range
Combine filters to narrow down. For example: “sessions with checkout_started event” + “contains console error” + “from mobile users”.
Replay settings
Configure replay behavior in Settings → Replay:- Recording rate: Sample percentage to record (10%, 50%, 100%)
- Minimum duration: Only save sessions longer than X seconds
- Retention: How long to keep replays (30, 60, 90 days)
- Capture performance: Include performance metrics
- Canvas recording: Record canvas elements (increases file size)
Mobile replay
PostHog supports mobile session replay for iOS and Android:- Screen recordings (wireframe mode for privacy)
- Touch interactions and gestures
- Network requests
- App logs and crashes
Performance impact
Session replay is optimized for minimal performance impact:- Async recording: Doesn’t block the main thread
- Compression: Replays are compressed before sending
- Batching: Network requests are batched
- Sampling: Record only a percentage of sessions
Typical impact is less than 5% CPU and minimal memory overhead. Test with your specific app to verify.
Best practices
Start with 100% sampling, then optimize
Start with 100% sampling, then optimize
Begin by recording all sessions to ensure you capture issues. Once you understand volume, reduce to 20-50% sampling.
Create playlists for common issues
Create playlists for common issues
Build playlists for recurring patterns: rage clicks, error flows, confusion points. Share with your team weekly.
Combine with analytics
Combine with analytics
Don’t just watch random replays. Use analytics to find problematic cohorts, then watch their replays to understand why.
Review privacy settings with legal
Review privacy settings with legal
Ensure your masking configuration complies with GDPR, CCPA, and your privacy policy. Err on the side of masking more.