MSE (Media Source Extensions) is the W3C browser API that lets JavaScript feed media segments directly to the HTML5 video element, which is what makes adaptive streaming possible on the web. Without MSE the video element can only play a single progressive file; with MSE, player code (hls.js, dash.js, Shaka) fetches segments, appends them to a source buffer, and controls exactly what plays — enabling rendition switching, custom buffering, and live windows.

MSE handles the unencrypted media-pipeline side; its partner EME handles decryption for protected content. Together they replaced the old plugin era (Flash, Silverlight) with a native, standards-based stack: MSE moves the bytes, ABR logic decides which bytes, and EME unlocks them when DRM is involved.

MSE support and its quirks vary by browser and especially by device — some smart TVs and older platforms have limited or buggy MSE, and iPhone Safari historically restricted it — which is a major reason web player engineering involves so much per-platform handling and fallback to native HLS where MSE is weak.