// open-source video fingerprinting defense

Encrypted video traffic still leaks what you're watching.

Dodge reshapes the chunk-by-chunk download pattern of streaming video so that observers — coffee shop neighbors, network admins, ISPs — can't see an identifying fingerprint. To give you a high-quality, private viewing experience.

v5.2.0 · 2026-04-30
3 components · dash.js module · browser extension · defense generator
// how the attack works, and what we do about it
01 / OBSERVATION

Videos arrive in chunks.

Constant duration, variable size. The size depends on the visual complexity of the content.

When you watch online video, your browser doesn't download the file all at once. It fetches a stream of segments — small pieces a few seconds long.

Every segment has the same duration, but not the same size. For example, action scenes are large, and still scenes are small.

fig 01 · segment size over timeunits: KB
900 600 300 0 t → action still action
02 / IDENTIFICATION

That pattern is a fingerprint.

Encryption (HTTPS) hides what's inside segments, but not how big they are. VPNs and Tor don't change this.

Different videos produce different sequences of sizes, and these differences are significant enough to identify a specific title from a known catalog.

Anyone watching your network — a coffee shop neighbor, a campus admin, your ISP — can use videos' patterns to identify what you're watching.

fig 02 · three titles · same network observer distinct identities
title_A title_B title_C → encryption hides bytes; size and timing remain visible
03 / DEFENSE

Dodge rewrites the trail.

Reshape the sequence (change download sizes, add fake chunks) until it no longer matches a specific title.

A Dodge defense reshapes the download sequence so the visible traffic no longer identifies a specific title. This can be done in many different ways, and with different goals and viewing experience trade-offs.

Want to watch videos that haven't been published alongside a defense, or verify that your content provider has set up Dodge correctly? Download the browser extension to swap out undefended players and start defending.

fig 03 · before / aftershape ≠ identity
in: real → apply defense → out: shaped player tcp / tls network observer video server
// for viewers

Watch privately.

Install the browser extension to swap out undefended players for Dodge, apply ready-made defenses, and verify them.

Install →
// for builders

Defend your video catalog.

Use the dash.js module, generate defenses using our tools or your own tools that follow the extended manifest spec.

Tools and spec →
// known limitations

What we know — and don't.

Traffic analysis defense is a young research area. A poorly designed defense can leak as much as no defense at all, and we'll continue learning about what works as more people deploy. Dodge is engineered to be safe-by-default: with a well-thought-out defense, your traffic should be no easier to identify than without one — usually much harder.

We publish our research, source code, and limitations openly. If you're a content provider thinking about deployment, we'd like to help.