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.


The handbook · 7 volumes
Fora Soft Video Engineering Handbook
MSE is what lets a web player switch bitrates at all, and its buffer limits and codec support vary by browser and smart TV. Our seven-volume handbook covers the whole video stack; for MSE start with Volume 3 on players, ABR and DRM, with Volume 2 on HLS, DASH and CMAF segments and Volume 1 on encoding. Written by Nikolay Sapunov, CEO at Fora Soft.
Web playback stalling on some browsers or smart TVs because of MSE buffer limits?
Send us your player and stream setup, and we will audit MSE buffering and codec support per platform and return a fix list. 250+ video products shipped since 2005.