VLC is the universal media player. It plays everything — old codecs, weird containers, broken MKVs that bring other players to their knees. Here's how to deploy it silently for fresh machines, classroom rigs, and family PCs.
TL;DR
Open Terminal as Administrator:
winget install --id VideoLAN.VLC -e --silent --accept-package-agreements --accept-source-agreements
VLC installs to C:\Program Files\VideoLAN\VLC. ~15 seconds. Admin required.
What gets installed
| Field | Value |
|---|---|
| Package ID | VideoLAN.VLC |
| Publisher | VideoLAN |
| Installer type | NSIS (Nullsoft) |
| License | GPL-2.0 |
| Homepage | videolan.org/vlc |
| Default install path | C:\Program Files\VideoLAN\VLC |
The installer bundles:
- VLC desktop player
- libVLC media library
- VLC's enormous codec collection (FFmpeg + native decoders)
- Web browser plugins (optional — opt out by default in 2026)
- Mozilla NPAPI / Chrome extension hosts (legacy, mostly unused)
About 120 MB installed.
Customise with NSIS components
VLC's NSIS installer accepts /COMPONENTS= overrides:
winget install --id VideoLAN.VLC -e --override "/S /COMPONENTS=Mainpkg,gen,plugins,context,sse2,mmx,DiscoveryServices"
Common component values:
| Component | What it includes |
|---|---|
Mainpkg |
Core VLC (required) |
gen |
Generic plugins (codecs, demuxers) |
plugins |
Optional plugins (lua extensions) |
context |
Right-click "Play with VLC" menu |
desktop |
Desktop shortcut |
startmenu |
Start menu entries |
sse2 / mmx |
CPU optimisation paths |
DiscoveryServices |
UPnP / DLNA scan |
To install without the desktop shortcut (clean deployments):
winget install --id VideoLAN.VLC -e --override "/S /COMPONENTS=Mainpkg,gen,plugins,context,startmenu,sse2,mmx,DiscoveryServices"
VLC Beta / Nightly
For testing builds:
winget install --id VideoLAN.VLC.Nightly -e --silent
Runs alongside stable. Nightly tracks the head of VLC's development branch — useful for testing new format support before official releases.
File association behaviour
By default VLC associates with common video and audio formats (mp4, mkv, avi, mp3, flac, etc.). On Windows 10/11 this triggers a Default Apps prompt — annoying for silent deployments. Pre-associate via registry:
# Force VLC as default for .mkv files (per-user)
$vlcCmd = '"C:\Program Files\VideoLAN\VLC\vlc.exe" --started-from-file "%1"'
$ext = '.mkv'
$progId = 'VLC.mkv'
New-Item -Path "HKCU:\Software\Classes\$ext" -Force | Set-ItemProperty -Name "(default)" -Value $progId
New-Item -Path "HKCU:\Software\Classes\$progId\shell\open\command" -Force |
Set-ItemProperty -Name "(default)" -Value $vlcCmd
Repeat for each extension you want. Or use Windows 11 Settings → Apps → Default apps → VLC interactively (one-time cost on first launch).
Specify version
winget install --id VideoLAN.VLC -e --version 3.0.21 --silent
List versions:
winget show --id VideoLAN.VLC --versions
VLC moves slowly (one or two major versions per year). Pinning is rarely needed but available:
winget pin add --id VideoLAN.VLC --version "3.*"
VLC for HDR / Dolby Vision
Modern VLC handles HDR10 well out of the box. Dolby Vision support requires the VLC 4.x preview branch (VideoLAN.VLC.Nightly) as of 2026. If you watch a lot of UHD content:
winget install --id VideoLAN.VLC.Nightly -e --silent
Side-by-side with stable. Falls back gracefully when DV metadata is missing.
Default settings for kiosks / public-display use
For library kiosks, school media labs, or display-mode setups, drop a pre-configured vlcrc:
$rcPath = "$env:APPDATA\vlc\vlcrc"
New-Item -ItemType Directory -Path (Split-Path $rcPath) -Force | Out-Null
@'
fullscreen=1
qt-start-minimized=0
qt-minimal-view=1
no-snapshot-preview=1
no-qt-error-dialogs=1
no-network-checks=1
'@ | Out-File -Encoding utf8 $rcPath
VLC reads this on launch. Tweaks: full-screen by default, hides error popups (good for unattended displays), disables network update checks.
Verify
& "C:\Program Files\VideoLAN\VLC\vlc.exe" --version
# VLC media player 3.0.21 Vetinari
Or:
winget list --id VideoLAN.VLC
Upgrade silently
winget upgrade --id VideoLAN.VLC -e --silent --accept-package-agreements --accept-source-agreements
VLC has an in-app update checker but doesn't auto-update silently. winget upgrade is the clean way to keep it current.
Uninstall silently
winget uninstall --id VideoLAN.VLC --silent --disable-interactivity
VLC's NSIS uninstaller respects /S. To also wipe user settings, playlists, and the icon cache:
winget uninstall --id VideoLAN.VLC --silent
Remove-Item "$env:APPDATA\vlc" -Recurse -Force -ErrorAction SilentlyContinue
In a media-focused setup
# Build a media-rich PC
$apps = @(
"VideoLAN.VLC",
"Spotify.Spotify",
"HandBrake.HandBrake",
"Audacity.Audacity",
"OBSProject.OBSStudio"
)
foreach ($id in $apps) {
winget install --id $id -e --silent `
--accept-package-agreements --accept-source-agreements
}
Common errors
"VLC is already installed" — force-overlay:
winget install --id VideoLAN.VLC -e --silent --force
Subtitles not rendering / wrong encoding — VLC defaults to UTF-8. For old subtitle files in CP1252 or Shift-JIS, change in Tools → Preferences → Subtitles/OSD → Default encoding.
Hardware acceleration choppy / artifacts — disable in Tools → Preferences → Input/Codecs → Hardware-accelerated decoding → Disable. Then test.
0x80073D02 — VLC is in use — close VLC (might be minimised to system tray). Kill:
Get-Process vlc -ErrorAction SilentlyContinue | Stop-Process -Force
winget upgrade --id VideoLAN.VLC
See package in use fix.
MKV with VP9 / AV1 doesn't play — your VLC is older than the codec. Upgrade:
winget upgrade --id VideoLAN.VLC -e --silent --force
If still broken, try VLC Nightly.
See also
- VLC on winget.tech → — full package details
- How to install OBS Studio silently → — media-creation companion
- How to install Spotify silently → — audio companion
- Fresh Windows 11 setup → — full workflow
