Encrypted Media Extensions (EME)

EME is the W3C browser API that lets a web page play DRM-protected video through the HTML5 video element without plugins. The page's JavaScript coordinates the license handshake but never touches keys or decrypted frames, which stay inside the browser's Content Decryption Module.

What is EME?

Encrypted Media Extensions (EME) is the W3C browser API that lets a web page play DRM-protected video through the standard HTML5 video element, with no plugins such as Flash or Silverlight.

How EME Works

The page's JavaScript coordinates the handshake: it selects a key system such as com.widevine.alpha or com.apple.fps, creates a media-key session, and relays license request and response messages between the Content Decryption Module and the license server. Crucially, the JavaScript never sees the content keys or the decrypted video; those stay sealed inside the CDM. EME is why the same player code can drive Widevine in Chrome and FairPlay in Safari, simply by requesting a different key system.

Why EME Matters

  • Plugin-free DRM: Protected playback works natively in modern browsers.
  • One player, many DRMs: The abstraction lets a single web player support multiple key systems.
  • Security boundary: The page orchestrates but cannot extract keys, which is central to how browser DRM stays trustworthy.

For Developers

You rarely call EME directly; player libraries and hosted DRM SDKs wrap it. Understanding it helps when debugging why a key system is unavailable in a given browser, or why FairPlay requires a different code path than Widevine.