Discover / Video & YouTube
Video.js
by videojsJavaScript
Open source web video player library supporting HTML5 and streaming formats.
Maturity: stable because 16y old, v8.23.9 released 38d ago. Derived from release and commit history, not a rating.
- Stars
- 40k
- Forks
- 7.5k
- Downloads / mo
- —
- Last commit
- 2026-06-29
- License
- NOASSERTION
- Open issues
- 669
Market and trust evidence
Edition not yet matchedNo exact skills.sh identity match is available for this repository. Repository adoption and freshness remain visible above; install momentum is not inferred.
Trust analysis is a screening signal, not a security warranty. Read the ranking and trust methodology.
In practice
Written by AI from this repository’s README · high confidenceA web developer needs consistent video playback and controls across browsers, devices and streaming formats.
Use it when
Use it when you want a ready made player UI that handles HLS and DASH out of the box and can be extended with plugins.
Not the right pick when
Overkill if you only need a plain HTML5 video element with default browser controls and no format or UI extensions.
Capabilities
- plays common web media formats including HLS and DASH
- works on desktop, mobile, tablets and web based Smart TVs
- free CDN hosted build available
- automatic player setup via data-setup attribute
- manual initialization through the videojs function
- plugin ecosystem for customization
Cost: Free and open source
Install
Derived from the published package name in the repository, not from a model.
Video walkthroughs
Third-party YouTube uploads matched to this tool by title, channel and repository name on 2026-08-03. Not made, reviewed or endorsed by SkillPilot. View counts and publish months are as of the match date and the month is approximate. Nothing loads from YouTube until you press play.
What the repository ships
Detected from the actual files in the repository root.
Latest release v8.23.9
Published 2026-06-26
8.23.9 (2026-06-19)
Bug Fixes
- audio-tracks: missing AD icon in Safari (#9153) (c625b0b)
- player: strip stale layout class when breakpoints() is re-set (#9205) (0054c0b)
- track-button: properly remove event listeners on dispose to prevent leaks and runtime errors (#9101) (00440ee)
- types: 'Cannot find name Player' error in type generation (#9162) (69ea0e0)
Chores
Tags
README
[![Video.js logo][logo]][vjs]
Video.js - Web Video Player & Framework
[![NPM][npm-icon]][npm-link]
Update: Big changes coming in Video.js 10, early 2026! Read the discussion.
Video.js is a full featured, open source video player for all web-based platforms.
Right out of the box, Video.js supports all common media formats used on the web including streaming formats like HLS and DASH. It works on desktops, mobile devices, tablets, and web-based Smart TVs. It can be further extended and customized by a robust ecosystem of [plugins][plugins].
Video.js was started in May 2010 and since then:
- Millions of websites have used VideoJS over time (source [Builtwith][builtwith])
- Billions of end-users every month of just the CDN-hosted copy (source Fastly stats)
- 900+ amazing contributors to the video.js core
- Hundreds of plugins
Table of Contents
- Quick Start
- Contributing
- Code of Conduct
- License
- Sponsorship
[Quick Start][getting-started]
Thanks to the awesome folks over at [Fastly][fastly], there's a free, CDN hosted version of Video.js that anyone can use. Add these tags to your document's <head>:
<link href="//vjs.zencdn.net/8.23.9/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/8.23.9/video.min.js"></script>
Alternatively, you can include Video.js by getting it from npm, downloading it from GitHub releases or by including it via unpkg or another JavaScript CDN, like CDNjs.
<!-- unpkg : use the latest version of Video.js -->
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
<!-- unpkg : use a specific version of Video.js (change the version numbers as necessary) -->
<link href="https://unpkg.com/video.js@8.23.9/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js@8.23.9/dist/video.min.js"></script>
<!-- cdnjs : use a specific version of Video.js (change the version numbers as necessary) -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/8.23.9/video-js.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/8.23.9/video.min.js"></script>
Next, using Video.js is as simple as creating a <video> element, but with an additional data-setup attribute. At a minimum, this attribute must have a value of '{}', but it can include any Video.js [options][options] - just make sure it contains valid JSON!
<video
id="my-player"
class="video-js"
controls
preload="auto"
poster="//vjs.zencdn.net/v/oceans.png"
data-setup='{}'>
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4"></source>
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm"></source>
<source src="//vjs.zencdn.net/v/oceans.ogv" type="video/ogg"></source>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank">
supports HTML5 video
</a>
</p>
</video>
When the page loads, Video.js will find this element and automatically setup a player in its place.
If you don't want to use automatic setup, you can leave off the data-setup attribute and initialize a <video> element manually using the videojs function:
var player = videojs('my-player');
The videojs function also accepts an options object and a callback to be invoked when the player is ready:
var options = {};
var player = videojs('my-player', options, function onPlayerReady() {
videojs.log('Your player is ready!');
// In this context, `this` is the player that was created by Video.js.
this.play();
// How about an event listener?
this.on('ended', function() {
videojs.log('Awww...over so soon?!');
});
});
If you're ready to dive in, the [Getting Started][getting-started] page and [documentation][docs] are the best places to go for more information. If you get stuck, head over to our [Slack][slack-link]!
[Contributing][contributing]
Video.js is a free and open source library, and we appreciate any help you're willing to give - whether it's fixing bugs, improving documentation, or suggesting new features. Check out the [contributing guide][contributing] for more! Contributions and project decisions are overseen by the
Video.js Technical Steering Committee (TSC).
By submitting a pull request, you agree that your contribution is provided under the
Apache 2.0 License and may be included in future releases. No contributor license agreement (CLA) has ever been required for contributions to Video.js. See the [Developer's Certificate of Origin 1.1
](https://github.com/videojs/admin/blob/main/CONTRIBUTING.md#developers-certificate-of-origin-11).
[Code of Conduct][coc]
Please note that this project is released with a [Contributor Code of Conduct][coc]. By participating in this project you agree to abide by its terms.
[License][license]
Video.js is [licensed][license] under the Apache License, Version 2.0. "Video.js" is a registered trademark of [Brightcove, Inc][bc].
Sponsorship
Project development is sponsored by the role of Corporate Shepherd, held by various companies throughout the project history:
- 2010-2012: Zencoder Inc.
- 2013-2025: [Brightcove Inc.][bc]
- 2025-present: [Mux Inc.][mux]
Video.js uses [BrowserStack][browserstack] for compatibility testing.
The free CDN-hosted copy of the libray is sponsored by [Fastly][fastly].
Website hosting is sponsored by [Netlify][netlify]
[bc]: https://www.brightcove.com/
[browserstack]: https://browserstack.com
[builtwith]: https://trends.builtwith.com/media/VideoJS
[contributing]: https://github.com/videojs/admin/blob/main/CONTRIBUTING.md
[docs]: https://docs.videojs.com
[fastly]: https://www.fastly.com/
[getting-started]: https://videojs.com/getting-started/
[license]: LICENSE
[logo]: https://videojs.com/logo-white.png
[mux]: https://www.mux.com/
[netlify]: https://www.netlify.com
[npm-icon]: https://nodei.co/npm/video.js.png?downloads=true&downloadRank=true
[npm-link]: https://nodei.co/npm/video.js/
[options]: https://videojs.com/guides/options/
[plugins]: https://videojs.com/plugins/
[slack-link]: https://slack.videojs.com
[vjs]: https://videojs.com
[coc]: https://github.com/videojs/admin/blob/main/CODE_OF_CONDUCT.md