DRM encryption, a watermark, and a per-viewer ID mark. Set up all three in Kinescope, step by step. About ten minutes.
Kinescope is a video platform for course creators, EdTech, and businesses. You upload your videos once, and Kinescope stores them, protects them from piracy, and plays them fast anywhere you embed them, with your own branding and no ads.
Think of it as a private, secure home for your course videos. An alternative to YouTube or Vimeo for when you need real control and protection.
Visit kinescope.com โOne download or one screen recording, and your paid course can end up for sale somewhere else. Most video players do nothing to stop it.
Kinescope gives you three layers of protection. Used together, they make copying your course hard and reselling it pointless. This guide sets up all three.
DRM encrypts your video. It cannot be downloaded, and screen recording gives a black screen. Kinescope uses Google Widevine and Apple FairPlay, the same DRM that Netflix and Apple rely on.
Go to kinescope.com and sign in. If you are new, create an account first.
A project keeps your course videos together. DRM is turned on per project, so this keeps things simple.
Drag your video files into the project and wait for processing to finish.
Go to the settings of the project you just created and find the encryption option.
This needs the Super plan. Confirm, and every video in the project is encrypted automatically, including new uploads. A full library usually finishes within a day.
Copy the embed code and paste it into your site or LMS. The video stays protected everywhere it plays.
DRM is part of the Super plan, from โฌ10 per month, and it needs an SSL certificate (HTTPS) on your site to play. Turn on domain restrictions too, so the video only plays on your own domains.
A static watermark puts your name or logo right on the video while it plays. It does not block copying, but wherever a copy ends up, your brand is on it.
Click a video in your project and stay on the General tab.
Scroll to the Player section and open Customize player.
Switch from Basic to Advanced. The watermark settings live there.
Toggle Enable watermark, then set how it looks: Type, Size, Display frequency, Opacity and Style. If you want a logo, upload it here.
The player turns the feature on and controls the look. The text itself comes from the link: add ?watermark=Your Name to the embed src. An uploaded logo shows on its own, no link change needed.
Set Type to Random so the mark moves around the frame and is hard to crop out, and keep Opacity light so paying students barely notice it.
This is the same watermark from Layer 2, but instead of a fixed text it shows each viewer's own email or ID, floating over the video. Two students watch, two different marks. If a copy ever shows up, you read the mark and you know exactly whose account it came from.
It even covers the one thing DRM cannot: someone filming the screen with a second camera. That copy still carries the viewer's ID, so the leaker is named.
Why does my LMS have to do part of this? Because Kinescope does not know your students, your LMS does. Kinescope just shows whatever value it receives in the video link. So your LMS has to drop the current student's email into that link, automatically, for each logged-in viewer. That one substitution is what makes the mark personal instead of the same for everyone.
LearnWorlds fills in the logged-in student's email with a built-in variable, usually without a developer. Here is the full flow.
Do Layer 2 above (Customize player, Advanced, Enable watermark). Until the watermark is enabled in the player, the value in the link is ignored and nothing shows.
Open the video, click Embed, and copy the code. It looks like this:
In the src, right after the video ID, add ?watermark={{USER.EMAIL}}. So the link becomes:
{{USER.EMAIL}} is a LearnWorlds variable. It fills in the email of whoever is watching.
In the LearnWorlds course builder, add an HTML / custom code element to the lesson and paste your iframe there. Use the custom code element, not the plain "Embed" activity, so the variable is read inside the link.
Publish, then open the lesson as a test student. You should see that student's email floating on the video. Different student, different mark.
If the video shows the literal text {{USER.EMAIL}} or the mark is empty, the variable was not read in that spot. Move the embed into an HTML element in the LearnWorlds Site Builder, or ask LearnWorlds support where custom variables render inside a lesson.
Prefer not to show a full email? Use {{USER.ID}} instead. You still map the ID back to the person, but students do not see each other's addresses.
If your course runs on WordPress, use a user shortcode instead of the LearnWorlds variable. The shortcode depends on your plugin:
WordPress gotchas: use the shortcode that matches your plugin (the LearnDash one will not work on MemberPress, and the other way round). Put the iframe in a Shortcode block or the classic editor, the Gutenberg "Custom HTML" block does not run shortcodes. Write the value without quotes inside the link as shown. Turn off page caching for logged-in users, or one student's email can get cached and shown to another. Then test as a logged-in student to confirm the email appears.
Honest note. The email travels inside the video link, so a very technical user could read or change it in their browser tools. Treat the per-viewer mark as a strong deterrent and a way to trace a leak, not as a hard lock. Its real job is on top of DRM: DRM stops the easy copy, the mark names whoever still tries.
Stops the easy copy: no downloads, no screen recording.
Keeps your brand on every frame of any copy.
Names the leaker if a copy ever escapes.
DRM stops the copy. The watermark keeps your brand on it. The per-viewer ID names whoever still tries. Together they make reselling your course more trouble than it is worth.
Set up all three layers on Kinescope and stop worrying about leaks.
Start at kinescope.com โ