Social DRM (viewer watermark)
Overlay each viewer's identity on private playback as an anti-piracy deterrent.
Social DRM prints the viewer's own details: name, email, account id, you choose: over a private video while it plays. The text drifts to different positions so it can't simply be cropped out, which discourages viewers from re-sharing a screen recording. It's included for every subscriber at no extra cost; the only requirement is the integration below.
Styling (font, colors, motion) is configured in the dashboard. This guide covers the single integration step: adding the viewer's lines to the playback token.
Prerequisites
Social DRM rides on the private video flow. Complete Private videos first: enable token access, create a signing key, and mark the video private. You are already minting a signed playback token; social DRM just adds one claim to it.
Add the drm claim
Include a drm object with a lines array (1-3 strings) in the token your
backend signs. Each entry becomes one line of the overlay, top to bottom.
{
"sub": "<video-id>",
"exp": 1717070400,
"drm": {
"lines": ["Maria Silva", "maria@acme.com"]
}
}import jwt from "jsonwebtoken"
const token = jwt.sign(
{ sub: videoId, drm: { lines: [viewer.name, viewer.email] } },
signingKeySecret,
{ algorithm: "HS256", keyid: signingKeyId, expiresIn: "5m" }
)- Provide 1-3 lines. Extra lines are ignored; empty lines are dropped.
- Keep each line short (~40-50 characters) so the block stays elegant: longer text wraps and scales down, but identifying data is never cut off.
- The lines are yours: include whatever identifies the viewer. Moviie renders them for that playback only and does not store them.
Present the token
Exactly as for any private video: pass the same token, no extra parameters:
<iframe
src="https://watch.moviie.ai/embed/EMBED_ID?token=THE_JWT"
allow="autoplay; fullscreen; picture-in-picture"
allowfullscreen
></iframe>When the token carries drm.lines, the player shows the watermark. When it does
not, playback is exactly as before: nothing extra is loaded.
Mobile / native players
The native player (React Native / Expo SDK) shows the same watermark from the
same token. Pass the signed token: including the drm.lines claim: to the
player when you start playback, exactly as you pass it for any private video on
mobile. No mobile-specific configuration is required; the overlay renders with
the same motion and styling as on the web.
What the viewer sees
The lines appear in a small, semi-transparent block that moves to new positions every few seconds, stays readable from phones to fullscreen TVs, and honors the viewer's reduced-motion setting. The look: font, background, text color, and speed: comes from the DRM definition you choose in the dashboard, or a tasteful default if you choose none.
Good to know
- Social DRM is a deterrent, not encryption. A determined, technical viewer can remove the on-screen overlay with browser tools; it raises the bar for the large majority of casual re-sharing. For protection burned directly into the video, ask support about the premium option.
- Because the lines travel in the token, you control exactly who sees what: rotate them per session, just like the token itself.