Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time




Tweet JSDelivr Build Status Size Donate

This is a media player that uses all the goods of HTML5 video/audio elements to play the most popular media in MP4/MP3, HLS and M(PEG)-DASH, and also has the ability to play VMAP, VAST and VPAID ads.


  • Supports IE11+ (Win8) and all modern browsers.
  • No dependencies, since it is written in Typescript.
  • Runs a simple but yet powerful algorithm to check the browser's autoplay capabilities across browsers.
  • Supports for local and remote captions for both video and audio, even without including the crossorigin attribute.
  • Enhance your player adding your own buttons. Check here for more details.
  • Provides the ability to use a single VAST/VPAID source or a VAST/VPAID playlist from several different sources (including URLs and valid XML strings).
  • Can play ads in infinite loop, desired for ads that are in a heavy text page.
  • Always responsive by default, for both video/audio tags; for video, fill and fit modes are available to either scale and crop media relative to its parent container, or to attempt to make the media fit its parent container (including black bars), respectively.

Migrating from older version to new ones

To learn more details about how to migrate from 1.x.x version to 2.x.x, or any breaking changes in newer versions, visit the Migration document.

Getting Started

The standard template to start using OpenPlayerJS is show in the following snippet.

        <link rel="stylesheet" href="">
        <video class="op-player__media" id="player" controls playsinline>
            <source src="/path/to/video.mp4" type="video/mp4">
            <track kind="subtitles" src="/path/to/video.vtt" srclang="en" label="English">
        <script src=""></script>
            // Check the `API and events` link below for more options
            const player = new OpenPlayerJS('player');

Usage and API Guides

If you want to unleash the power of OpenPlayerJS, learn more about OpenPlayerJS by checking the following links.

Code Samples

In 2.x.x, the demo folder is now removed in favor of code samples.

If you need a reference on how to use OpenPlayerJS in some of the most common scenarios, check the following links:

  1. No configuration (only DOM classes)
  2. Minimal configuration
  3. Using fill mode
  4. Using fit mode
  5. Using Ads (linear and non-linear samples)
  6. 🆕 - Updating Ads and clickable Ad element
  7. Removing controls and using preload="none"
  8. Add source after initialization (useful for AJAX)
  9. Fully customized audio player
  10. Playing HLS streaming with DRM (Encryption)
  11. M(PEG)-DASH with Ads
  12. Basic playlist (video and audio)
  13. Ads playlist (multiple URLs)
  14. Retrieve data from audio streaming (HLS)
  15. YouTube video (using plugin)
  16. Seamless transitions using custom control
  17. OpenPlayerJS with React
  18. OpenPlayerJS with Next.js
  19. OpenPlayerJS with Vue.js
  20. Using Levels and setting width/height
  21. Trigger Ad manually
  22. Use FLV source (only modern browsers and Android, not iOS)
  23. Using hls.js p2p plugin

Built With


See also the list of contributors who participated in this project.


This project is licensed under the MIT License - see the file for details.