Docs

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.

On this page