Open-source project
videolan/vlc avatar
videolan/vlc

VLC ships two licenses, two build systems, and its real repository is on GitLab

VLC media player - plays everything, runs anywhere. Code here: https://code.videolan.org/videolan/vlc

20,447 stars6,438 forksCGPL-2.0

At a glance

What is it?
The VLC media player repository is a C codebase with a Rust workspace, an autotools build next to a Meson build, an LGPL engine wrapped in a GPL player, and a mirror on GitHub. Every interesting decision in this project sits in one of those seams.
Who is it for?
Take libVLC under its LGPL terms when you need an embeddable engine for playback, streaming, or conversion, and accept that platform coverage is uneven. Take the player itself under GPL terms, and expect the de facto GPLv3 case on platforms where dependency licenses decide for you.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • videolan/vlc20,447 ★ · +724
Star history
Repository2026-09-212026-11-13
videolan/vlc19.7k20.4k

724 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

GitHub is a mirror; merge requests happen on code.videolan.org

The repository description redirects you before you read anything else: Code here: https://code.videolan.org/videolan/vlc. Contributions are taken through Merge Requests on that GitLab repository, and the bugtracker link points at code.videolan.org/videolan/vlc/-/issues rather than at GitHub issues. That matters procedurally as well as technically, because the file states that CI and discussions should be resolved before a Merge Request can be merged. A change therefore has to pass the GitLab pipeline and settle its review conversation there, which a fork opened on GitHub cannot do by itself. For a reader trying to judge how a contribution lands, the signal is that the project runs a review and continuous integration gate and says so plainly, and that the pull request model on this mirror is not the working model. The three destinations are separate by design: downloads for every platform are served from www.videolan.org, bugs and merge requests from code.videolan.org, and this repository mirrors the source.

There is no install command, only download pages and a bootstrap script

This project hands out binaries rather than a copy and paste line. Every platform in the list has its own download page, and the addresses are in the file:

text
[Windows]: https://www.videolan.org/vlc/download-windows.html
[macOS]: https://www.videolan.org/vlc/download-macosx.html
[GNU/Linux]: https://www.videolan.org/vlc/#download
[BSD]: https://www.videolan.org/vlc/download-freebsd.html
[Android]: https://www.videolan.org/vlc/download-android.html
[iOS]: https://www.videolan.org/vlc/download-ios.html

If you want the source instead, the file listing at the bottom of the repository describes an INSTALL file as Installation and building instructions, and a bootstrap script sits at the top level next to configure.ac and Makefile.am, which is what an autotools tree looks like before it is configured. The support section adds a hacking guide and a developer corner in the wiki for the rest. So there are three acquisition routes, a per platform binary, a bootstrap step feeding whichever of the two build systems you chose, and documentation hosted off repository, and no single installation command for a desktop user.

The player is GPL and the engine is LGPL, which decides who can embed

Two licenses sit inside one project. VLC is released under the GPLv2 or later license, with a footnote that on some platforms it is de facto GPLv3 because of the licenses of its dependencies. libVLC, the embeddable engine, is released under LGPLv2 or later, and the file spells out the purpose: this allows embedding the engine in third party applications while letting them be licensed under other licenses. The consequence is a clean dividing line for anyone shipping a product. Wrap the engine and your own licensing stays intact, subject to the LGPL terms. Ship the player and you are distributing under GPL terms, and on the platforms where dependencies pull GPLv3 in, you inherit a stronger obligation than the headline license suggests. You can see the same split in the tree, where COPYING holds the GPL text and COPYING.LIB holds the LGPL text.

Autotools and Meson both configure the same source tree

The top level carries two complete build systems at once. The autotools side is Makefile.am, configure.ac, bootstrap, an autotools/ directory, an m4/ directory, and buildsystem/. The Meson side is meson.build, meson_options.txt, and config.h.meson, the last being the configuration header Meson generates. The two systems read the same modules/, lib/, src/, include/, po/, share/, and test/ directories, and the remaining top level entries like compat/ for operating systems missing essential functionality, contrib/, doc/, extras/, and bin/ sit beside both. The file does not say which one a contributor is expected to use, and the repository also has an INSTALL file described as installation and building instructions. So a reader has to pick a path before compiling anything, and anyone patching the build has to know which of the two describes the change. There is also a make-alias script at the root, which suggests the Makefile path carries the shortcuts, and a po/ directory of translations that whichever build you choose has to pick up.

The Rust workspace is five crates and deliberately excludes contrib

Alongside the C code there is a Cargo workspace defined in Cargo.toml. Its members are four crates under src/rust, vlcrs-core, vlcrs-macros, vlcrs-messages, and vlcrs-utils, plus modules/logger/telegraf-rs, the telemetry logger living inside the module tree. The resolver is set to 2, contrib is listed under exclude, and the workspace package version is 4.0.0 with the license LGPL-2.1-or-later, which lines up with the libVLC side rather than the GPL player side. vlcrs-core and vlcrs-macros are declared as path dependencies, so they resolve inside the checkout instead of from a registry. A rust-toolchain.toml at the root pins the compiler. Two consequences follow: a cargo command run at the root will not cover the third party code under contrib, and building the Rust side has its own toolchain requirement that the C build does not impose.

The mobile apps are not in this repository

The platform list is long and specific: Windows from 7 and later, including UWP platforms and all versions of Windows 10, macOS 10.10 and later, GNU/Linux and affiliated, BSD and affiliated, Android 4.2 and later including Android TV and Android Auto, iOS 9 and later including AppleTV and iPadOS, plus Haiku, OS/2, and a few others. The Nota Bene under that list says the Android app and the iOS app are located in different repositories than the main one, and those repositories are written in Kotlin/Java and Swift, with a separate C# project for libVLCSharp. The consequence for anyone reasoning about a platform is direct: a bug you reproduce in the Android or iOS app may not belong here, because the app code is not here.

Volunteers maintain a list that includes Haiku and OS/2

The maintenance statement is blunt: VLC is maintained by a community of people, and VideoLAN is not paying any of them. The community is described as developers, helpers, maintainers, designers, and writers. The list of tasks the project needs help with covers coding, packaging for Windows, macOS, and Linux distributions, technical writing for the documentation, design, support, and community management and communication, and IRC is offered on the #videolan channel on Libera.chat. Set that against the platform list and the sentence that follows it, not all platforms receive the same amount of care, due to our limited resources. The consequence is that platform coverage is uneven by the project's own account.

libVLC is the part third party code is meant to use

For embedders, the file describes libVLC as an engine for third party applications and frameworks that can provide playback, streaming, and conversion of multimedia files and streams, running on the same platforms as VLC and sometimes on more. Bindings exist for other languages, including C++, Python, and C#, and the tree has a bindings/ directory for them, while the C# binding lives in its own libVLCSharp repository alongside the Android and iOS ones. The support section adds a documentation trail: a developer corner, a hacking guide, a wiki, forums, and a bugtracker. What this file does not give an embedder is an API reference or a version compatibility statement, so the practical starting point is the engine's license terms plus whatever the wiki documents, not a contract stated in the repository.

Editorial conclusion

Take libVLC under its LGPL terms when you need an embeddable engine for playback, streaming, or conversion, and accept that platform coverage is uneven. Take the player itself under GPL terms, and expect the de facto GPLv3 case on platforms where dependency licenses decide for you. Before starting, clone from code.videolan.org instead of GitHub, settle whether autotools or Meson is your build path, and read rust-toolchain.toml, since the Rust workspace pins a toolchain the C build does not need.

Frequently asked questions

Is VideoLAN the same as VLC?

VLC is part of the VideoLAN project rather than the project itself. VideoLAN started at the university École Centrale Paris, which relicensed VLC under the GPLv2 license in February 2001, and the project describes itself as community maintained with volunteers doing the work.

Is VideoLAN VLC free?

VLC is released under the GPLv2 or later license and libVLC under LGPLv2 or later. The file adds that on some platforms VLC is de facto GPLv3 because of the licenses of its dependencies, so the effective terms depend on the platform.

What is VideoLAN used for?

VLC plays most multimedia files, discs, streams, and devices, and can also convert, encode, stream, and manipulate streams into numerous formats. The libVLC engine provides that playback, streaming, and conversion to third party applications.

is videolan official vlc

The repository description points at the canonical location with the words Code here: https://code.videolan.org/videolan/vlc. Merge requests and the bugtracker are both on that GitLab instance, not on GitHub.

Official sources

  1. Issues
  2. License: GPL-2.0
  3. Project website
  4. README
  5. videolan/vlc on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/videolan-vlc.svg)](https://hysenlabs.com/projects/videolan-vlc)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/videolan-vlc.svg)](https://hysenlabs.com/projects/videolan-vlc)

Was this useful?