Workload · Protecting paid video

How to protect video from download and re-sharing when people pay to watch

You cannot make a video impossible to copy, but you can protect video from download well enough that copying stops being worth the trouble: make links expire, keep the player on your own sites, check who paid, and add DRM only when a contract or the value of the content calls for it. Each of those stops a different kind of copying, and none of them stops a phone pointed at the screen. This page sorts out which ones your video needs.

The short version
  1. Hiding the download button changes the controls, not who can reach the video
  2. In our view, expiring links and a paywall cover most paid video
  3. DRM needs Apple and Google agreements in your own name, and it switches off WebRTC and low-latency HLS
  4. Nothing fully stops a screen recording, so plan for a leak as well

Who is copying your video, and how?

Name what you actually expect first, because a forwarded link and a determined copier call for very different tools. This table is our own summary of the usual moves and what answers each one.

What someone doesWhat answers itWhat is left over
Pastes the video address into a group chatExpiring signed links, bound to one viewer if you wantThe link works for whoever holds it until it expires, unless it is bound
Copies your embed code onto their own pageA website ruleThe video itself: the rule is about pages, not files
Watches from a country you hold no rights forA country ruleA VPN can make a viewer look as if they are somewhere else; check what your contract says about VPNs.
Shares a login with friendsA paywall with a sensible device allowancePeople sitting on one sofa
Saves the stream with a download toolDRM, which keeps the video encrypted up to a licensed playerScreen capture
Records the screenPartly blocked by DRM on some devicesSound, other devices, capture hardware
Films the screen with a phoneNothingAlways possible

The tricks that do not protect anything

Turning off right-click and hiding the download button only tidy the page. A browser has to receive the video to show it, so these tricks leave the video exactly as reachable as it was. The nodownload value of controlsList is a good example: MDN describes it as helping the browser choose which of its own controls to show, and warns that it does not work in some widely used browsers.

The address behind the player matters far more. Our stream addresses are standard HLS and DASH, which is why other players and apps can use them, and a library video is an ordinary MP4 served from its link. So our advice for a paid library is to assume that anyone holding a working link can save the file, and to put your effort into who holds one and for how long.

Which level does your video need?

Match the protection to what a leak would cost you. These are our suggestions as starting points, not rules, and a contract with a rights owner beats anything in this table.

What you sellStart withAdd this when
Public video limited to one region by a rights dealCountry and website rulesYour rights deal asks for more
Online course or members librarySigned links, plus a paywall or your own loginA link keeps turning up in public: bind links to viewers
One-night ticketed eventPaywall or ticket-site signed links, website ruleThe ticket value would justify the DRM paperwork
Licensed films, sport or anything with a DRM clauseDRM, with all of the aboveThe contract names a hardware security level: check your players meet it

If you are building a course, our guide to hosting video for online courses covers the library side of the job.

Signed links: your first real lock

A signed link carries a token that runs out, so a copied address stops working by itself and nobody has to chase it. In a Primcast video library you turn this on for the whole library, and Copy link becomes Get link. On a live stream, your own site can hand each viewer a link that expires.

  • Bind a link to one viewer's address when you want a forwarded link to fail for everyone else. As we read it, moving from Wi-Fi to mobile data normally changes that address, so a bound link may stop for a viewer on the move. Test this on a phone first.
  • Cancel everything with one button. Invalidate stops every link handed out so far, while new links keep working, so you can give paying viewers a fresh one.
  • Test your longest video. Before you settle on how long links should last, play your longest file start to finish on a link close to its end, with a pause in the middle.

A signed link controls access. It does not reach into a copy someone already saved while their link was valid.

Fences around the player: websites, countries, addresses

On a live channel you can allow or refuse countries, limit playback to your own sites and block IP addresses or ranges, and the plan tables on our video streaming page show these rules, along with signed links, on every plan. A copied embed then refuses to play on the other person's page, and viewers who appear to be in a refused country are turned away.

Treat these as fences for rights and tidy embeds, not as protection for the video itself, and pair the website rule with signed links.

Checking who paid

The Cue Player has a paywall that checks each viewer's purchase before the picture starts and stops the stream minutes after a refund, so a refunded ticket does not go on watching. You can also keep your current ticketing site and let it issue signed links.

Viewers can watch on as many devices as you allow, so that number is your answer to shared logins. Pick the smallest figure that still covers an honest household: phone, laptop and TV. Too low, and your support inbox pays for it.

When DRM earns its paperwork

DRM is worth it when a contract requires it or when one leaked copy would cost more than the setup. With it on, the video stays encrypted all the way to the viewer, and only a browser holding a licence can show it. Browsers do this through a W3C standard, Encrypted Media Extensions, which does not itself define a DRM system; a separate decryption module handles each one.

SystemWhere it playsWhat you have to arrange
Apple FairPlaySafari on Mac, iPhone and iPadYour Apple Developer Program Account Holder requests approval. Apple says it approves teams that provide a streaming service to consumers, and not third-party accounts acting for content owners.
Google WidevineChrome, Edge, Firefox and AndroidA licence agreement with Google, with the credentials added in your control panel. Google's overview says devices never contact its licence service directly: requests go through a partner's proxy, which checks them first.
Microsoft PlayReadyEdge, Xbox and smart TVs, on CueYour own PlayReady licence service. Cue passes each licence request to it.

Two costs catch people out. The agreements are in your name, Apple says it will not approve a third party acting for you, and your launch date depends on them. And a DRM stream plays over standard HLS and DASH, with WebRTC and low-latency HLS off, so a show that needs sub-second interaction with its audience has to choose.

Vendors also grade the players. Microsoft separates SL2000, protected by software or hardware, from SL3000, which relies on the processor's Trusted Execution Environment, and a licence server can give each a different resolution or catalogue. A 2017 Chrome developer post describes Widevine L1 as doing the processing inside that trusted environment, and L3 as the level all Android devices had to support. If a contract mentions levels like these, ask how it treats software-only players before you sign.

Where you run it matters too. Cue on your own server lists FairPlay and Widevine on your own agreements, with the keys handed out by your server, plus PlayReady. It also offers a simpler middle step, AES-128 encrypted HLS with keys that change as the stream runs. The HLS specification, RFC 8216, has the player fetch each key from an address and says that delivery should be protected, for example with HTTPS and a session token. As we read it, this blocks casual file-grabbing but not a paying viewer's own tools.

Our player page says you switch FairPlay, Widevine or both on for a stream and add your credentials in your control panel. The comparison tables for our hosted plans have no DRM row, though, so they do not show which plans include it, and our pages describe DRM for streams rather than library files. Ask on live chat which applies to your plan before you start the Apple paperwork.

Screen recording: the honest answer

Nothing stops screen recording completely. Whatever reaches a screen can be filmed with a phone, and DRM cannot change that.

DRM does help on some devices. Apple's technical note from the iOS 11 era says FairPlay video is left out of iOS screen recordings and QuickTime capture, with that part of the app blacked out, but that the protection covers only the picture and not the sound. If you build your own Android app, its developer can set the FLAG_SECURE window flag, which keeps the window out of screenshots and off non-secure displays. Neither helps with a phone pointed at a monitor.

So plan for the leak as well. Library files play exactly as you export them, so a logo or a short ownership line placed in your edit stays in every recording. It is the same for every viewer, so it says whose video it is, not who copied it; our pages do not list per-viewer watermarks. If a copy does appear, the site hosting it will usually have a copyright complaint process, and for anything serious you should ask a lawyer, since this page is general information and not legal advice.

Try to break it before your viewers do

Run this drill once before you sell, because a setting that looks on is not the same as one you have seen work.

  1. Open a signed link in a private window, wait for it to expire, then reload. It should stop playing.
  2. Paste your embed code into a test page on a domain outside your rule. The stream should refuse to play.
  3. Ask someone in a refused country to open the player. It should not play for them.
  4. Buy a ticket on a test account, refund it and watch the stream stop within minutes.
  5. Before any customer holds a link, press Invalidate, because it cancels every link so far. Old links should fail and a new one should play.
  6. On a DRM stream, play in Safari and in Chrome, on a phone as well as a computer, since FairPlay and Widevine are set up separately.
  7. On Cue, which can let viewers download a video or play it as a plain MP4, make sure that is off for anything you sell.

Questions people ask

Can I completely stop people from saving my videos?
No. If a device can show a video, its owner can capture it somehow, even if only by filming the screen. You can only make the easy routes harder.
Do I need DRM for an online course?
Usually not at the start. Signed links with a paywall or your own login deal with the easiest leak, a forwarded link. Consider DRM if a licence requires it or if your lessons keep appearing elsewhere, and remember that our pages describe DRM for streams rather than for library files.
Is a signed URL the same thing as DRM?
No. A signed link decides whether a request is allowed to play, then stops working when it expires. DRM keeps the video encrypted up to a licensed player. The first limits access and the second limits what can be done with the video once access is granted, so high-value content can use both.
What should I do first if a paid link leaks?
On a library with signed links, press Invalidate: every link handed out so far stops, and new ones keep working. Then find out how it spread, and consider binding links to single viewers from then on. On a live stream, the viewer list shows who is watching, from which country and in which player.

Keep your paid video on your own site

See how the player handles DRM, website and country rules, signed links and the paywall in one embed.

Protect my paid stream

Read next