Auto-blur - Jam Documenation
Auto-blur
Auto-blur hides sensitive content in real time during Recording Link sessions. Blurred content never reaches Jam’s servers.
How it works
The Jam.js snippet automatically detects and blurs sensitive content during recording sessions. When a customer records:
- Sensitive elements are blurred in real time. If an end-user needs to access blurred content, they can pause the recording.
- Only the blurred version is captured. Sensitive data never reaches Jam’s servers.
- The final Jam shows blurred content exactly as during recording. Console logs show
<redacted>.
What gets blurred: only the elements you want
Applies to: Jams requested via Intercom or Recording Link
By default, Jam recognizes the same privacy selectors used by FullStory, Hotjar, LogRocket, Sentry, and others. If you’re already using these tools, your existing privacy setup works automatically with Jam.
Setup
Blurred content is only supported on sites with verified Jam.js installations. Follow the Recording Links setup guide before proceeding.
Blurring is enabled by default once the snippet is installed.
Quickstart
Want to blur something?
Use data attributes:
<span data-jam-blur>{ccNumber}</span>
Or meta tag:
<meta name="jam:blur" content=".secret-stuff" />
Or SDK:
jam.initialize({ blurSelectors: ".secret-stuff" });
Want to unblur something?
<span class="cc-number" data-jam-blur="no">{ccNumber}</span>
What gets blurred automatically
Standard selectors
- Jam:
[data-jam-blur] - rrweb:
.rr-block,.rr-mask,.rr-ignore - Standard HTML autocomplete attributes:
cc-number,cc-exp,cc-csc,tel,email - Common name/id patterns for SSN, bank accounts, credit cards, photo IDs, driver’s license
Session replay tools
- FullStory:
.fs-exclude,.fs-mask,.fs-block,.fs-unmask(unblur) - Hotjar:
[data-hj-suppress],[data-hj-masked] - LogRocket:
[data-private] - Microsoft Clarity:
[data-clarity-mask],[data-clarity-unmask](unblur) - Sentry:
.sentry-block,.sentry-mask,[data-sentry-block],[data-sentry-mask] - OpenReplay:
[data-openreplay-obscured],[data-openreplay-hidden] - Highlight.io:
.highlight-block,.highlight-mask,.highlight-ignore - ContentSquare:
[data-cs-mask],[data-cs-encrypt],[data-cs-capture](unblur) - Matomo:
[data-matomo-mask]
Analytics tools
- Heap:
[data-heap-redact-text],[data-heap-redact-attributes],[data-heap-ignore],.heap-ignore - Amplitude:
[data-amp-mask],[data-amp-unmask](unblur)
Add custom selectors
Using SDK
import * as jam from "@jam.dev/recording-links/sdk";
jam.initialize({ blurSelectors: ".my-custom-blur-class" });
// or array
jam.initialize({ blurSelectors: [".blur-class-1", ".blur-class-2"] });
// or function
jam.initialize({ blurSelectors: () => `.my-${Math.ceil(Math.random() * 100)}-blur-class` });
Using script tag with meta tags
<meta name="jam:blur" content=".my-custom-blur-class" />
Opt out of blurring for specific elements
Use [data-jam-blur="no"]:
<div class="rr-block" data-jam-blur="no">Blurred in rrweb, but not in Jam</div>
Test before you ship
- Create a Recording Link using your verified recording URL.
- Start a test recording by clicking your own link and starting recording.
- Visit pages with sensitive content and confirm the behavior.
Limitations
- Content in iframes cannot be selectively blurred
- Flashes of unblurred content may occur during captured pageloads
- When browser window is resized during recording, blurred content may briefly become visible.