Protecting your videos
What VideoKavach does to keep your lectures off Telegram — and, just as importantly, what it cannot do.
Read this part first
No video platform can make copying impossible. Anything a student can watch, they can point a phone at. What good protection does is remove the easy methods and make the remaining ones traceable back to the person who leaked it. Every layer below is built on that idea.
The layers
| Layer | What it stops | What it does not |
|---|---|---|
| Encrypted streaming | Downloading the file with a browser extension or a download manager | Screen recording |
| Identity watermark | Anonymous sharing — a leaked copy names the leaker | The leak itself, only who can be blamed for it |
| Domain allowlist | Your embed code working on someone else's website | A student who is legitimately logged in |
| Session cap | One login being streamed by a whole batch at once | Sequential sharing at different times |
| Device limit | An account being used across unlimited phones | Two people sharing one phone |
Encrypted streaming
Secure videos are split into short encrypted segments. The decryption key is fetched separately for each viewing session and only released to a viewer holding a valid playback token, so the file never exists as a single downloadable object.
VideoKavach also rejects requests from the tools people typically reach for first — yt-dlp, youtube-dl, ffmpeg, curl, wget and similar.
A determined attacker can work around this
User-agent blocking is a speed bump, not a wall — it can be spoofed by anyone who knows how. It stops casual copying, which is the majority of it. The watermark is what protects you against the rest.
Identity watermark
The student's email, phone or ID is drawn faintly over the picture and moves to a new position every five seconds, so it cannot be cropped out reliably. If a recording of your lecture surfaces in a group, the watermark tells you which account it came from.
It stays inside the picture area rather than the player frame. On a phone held upright, where the video occupies a band across the middle, the watermark sits in that band — so a crop to just the picture still carries it.
Adjusting it
Under Settings → Player branding, watermark opacity runs from 0 to 100%. Higher is harder to remove but more distracting.
Setting opacity to 0 turns it off
At 0% the watermark is not merely faint, it is absent, and leaked recordings become untraceable. Only use 0 for free content you do not mind being shared.
Making the watermark meaningful
A watermark is only useful if it carries a real identity. There are two ways to supply one, and they offer very different guarantees.
URL parameters
Add ?viewerId=…&email=…to the embed. Quick to set up, but a student can edit them to someone else's name.
Fine behind your own login, with domains locked.
Signed embed token
Your server signs the identity with your API key. It cannot be altered without invalidating the signature.
Use for paid content. How to sign one.
Domain allowlist
Restricts which websites may embed your videos. Set an account-wide default under Settings, and override it per video where needed.
1. List your domains
myinstitute.com,lms.myinstitute.com, or*.myinstitute.comfor every subdomain.2. Check your staging site too
Forgetting a test domain is the usual reason a video works live but not in preview.
Empty means unrestricted
An empty allowlist allows every domain. A video page will warn you when neither it nor your account has any domain set.
Concurrent session cap
Each student may stream from a limited number of places at once — three by default. When a fourth starts, the oldest session is dropped rather than the new one being refused, so a student who switched devices is never locked out of their own account.
This is what stops one login being passed around a batch to watch simultaneously.
Device limits and offline downloads
For institutes using the native app, students may register a limited number of devices. Downloaded videos stay encrypted on the device and carry the same watermark.
Device limits behave differently from session caps
Going over the device limit is refused outright instead of dropping the oldest device. Removing a device automatically would delete the lectures a student had downloaded for offline study — possibly right before an exam, on a train with no signal. Students free a slot themselves from the manage-devices screen.
Device budgets are counted per institute. A student buying courses from two institutes on the same app gets a full allowance from each.
A sensible starting configuration
- Upload paid content as Secure, never Public MP4.
- Set your domain allowlist in Settings on day one.
- Keep watermark opacity somewhere around 40–60%.
- Pass a real student identity — signed tokens for anything paid.
- Leave the session cap at its default unless students complain.