hls.js is a widely used JavaScript library that implements HLS playback on top of MSE, enabling HLS in browsers (Chrome, Firefox, Edge) that do not support it natively. Since HLS is otherwise only native to Safari, hls.js is what makes HLS a truly cross-browser format on the web.
It handles manifest parsing, ABR, buffering, and error recovery, and integrates with EME for DRM. Many platforms standardize on HLS for all devices and use hls.js for desktop and Android browsers while letting Safari and iOS use native HLS - a common pattern that simplifies packaging to a single protocol while still covering every browser.


The handbook · 7 volumes
Fora Soft Video Engineering Handbook
hls.js makes HLS play in Chrome, Firefox, and Edge through MSE, and its ABR and buffer settings decide start time and stalls on the web. We wrote seven volumes covering the video stack; for hls.js start with Volume 3 on players, ABR algorithms, and stall recovery, then Volume 1 on codecs, with HLS itself in Volume 2. Written by Nikolay Sapunov, CEO at Fora Soft.
Web player built on hls.js stalling or starting slowly?
We will review your hls.js configuration and playback data and send a tuning plan for ABR, buffering, and errors. 250+ video products shipped since 2005.