VLC Redesign
An unofficial, modern desktop media player built from the VLC redesign by Juxtopposed. For Windows, macOS and Linux · plays almost anything thanks to built-in FFmpeg.
⬇️ Download · Download page · Design video
Note
This is an unofficial fan project. It is not made by, affiliated with, or endorsed by VideoLAN, the makers of the real VLC. "VLC" and the cone logo are trademarks of VideoLAN.
🎨 Design credits: Juxtopposed
The entire design of this app comes from Juxtopposed: the library, the player, the onboarding, the settings window, the menus and the audio/video panels.
- 📺 Video: I Redesigned VLC After 25 Years by Juxtopposed
- 🎨 Figma: VLC Redesign (Community)
This repository turns that design into a working app. All credit for the design goes to Juxtopposed. Go watch the video! 🙌
⬇️ Download
Open the latest release and pick the file for your system:
| Operating system | File |
|---|---|
| 🪟 Windows 10 / 11 | VLC-Redesign-Setup-<version>-x64.exe (installer) or VLC-Redesign-Portable-<version>.exe |
| 🪟 Microsoft Store package | VLC-Redesign-Store-<version>-x64.appx |
| 🍎 macOS (Apple Silicon / Intel) | VLC-Redesign-<version>-mac-arm64.dmg / …-mac-x64.dmg |
| 🐧 Debian, Ubuntu, Linux Mint, Chrome OS | vlc-redesign-<version>-amd64.deb |
| 🐧 Fedora, openSUSE, Red Hat | vlc-redesign-<version>-x86_64.rpm |
| 🐧 Arch Linux, Manjaro | vlc-redesign-<version>-x64.pacman |
| 🐧 Any Linux (Gentoo, Slackware, …) | vlc-redesign-<version>-x86_64.AppImage or .tar.gz |
Or use the download page, which detects your system automatically.
🌍 The app is available in English, Dutch, German, French, Spanish, Italian and Portuguese. You pick your language on first launch and can change it any time in Settings.
Installing on Linux
sudo apt install ./vlc-redesign-*-amd64.deb # Debian, Ubuntu, Mint, Chrome OS sudo dnf install ./vlc-redesign-*-x86_64.rpm # Fedora, Red Hat sudo zypper install ./vlc-redesign-*-x86_64.rpm # openSUSE sudo pacman -U ./vlc-redesign-*-x64.pacman # Arch, Manjaro chmod +x vlc-redesign-*.AppImage && ./vlc-redesign-*.AppImage # any distribution
Chrome OS: turn on Settings → About ChromeOS → Developers → Linux development environment, then open the .deb file from the Files app.
First launch on Windows or macOS
The app is not code-signed (that requires a paid certificate), so your system shows a warning the first time:
- Windows: if the blue SmartScreen dialog appears, click More info → Run anyway. Windows releases are being set up for code signing via SignPath (see the code signing policy); even signed, a new release can trigger SmartScreen until it has built up reputation.
- macOS: right-click the app → Open → Open. Or in Terminal:
xattr -dr com.apple.quarantine "/Applications/VLC Redesign.app"
✨ Features
- Plays almost anything. MP4, MKV, AVI, MOV, WMV, FLV, WebM, MP3, FLAC, AC3/DTS and more, plus old game and cutscene formats like TGV, Bink and Smacker. Files you open yourself are always tried, whatever the extension. Anything Chromium can't play natively is converted on the fly by the built-in FFmpeg.
- DVDs: open a DVD
.isoimage or a DVD folder (VIDEO_TS). A disc with several titles (episodes, extras) is added as Title 1, Title 2, … in disc order and plays them one after another (titles that repeat the same video, like "episode with intro" next to "episode" or a "play all" title, are listed once); DVD menus themselves are not shown. Copy-protected (CSS-encrypted) retail DVDs are not supported. - MIDI:
.mid,.midi,.karand.rmifiles play with a built-in General MIDI SoundFont (FluidR3 Mono), with no extra download, and start right away while the rest is rendered. Pick your own.sf2/.sf3SoundFont under Settings → Audio → MIDI. - Built-in updates. The app checks GitHub for new releases and shows a notification. On Windows (installer) and Linux (AppImage) it downloads and installs the update itself; elsewhere it fetches the right file for you. You can also check manually under Settings → ⓘ About, which also shows the version, credits and licenses.
- Instant seek preview. Hover the timeline to see a thumbnail; a storyboard of frames is generated in the background so the preview follows your mouse without delay.
- 7 languages: English, Nederlands, Deutsch, Français, Español, Italiano and Português, switchable instantly without restarting.
- Onboarding on first launch: choose your language, pick a media folder, choose a theme and accent color (with live preview), make VLC Redesign your default player, and learn the key shortcuts.
- Default player: Settings → General → Default player (also in the welcome screen). On Windows it opens Default apps right on VLC Redesign (the installer registers it there), on Linux it sets itself as default for all its file types, on macOS it explains the Finder steps.
- Library with videos, music, network streams, playlists and recently played. Browse folders with breadcrumbs (Videos ▸ Shows ▸ The Wand ▸ S01), "continue watching", and watched items dimmed.
- Playlists: play
.m3u,.m3u8,.xspfand.plsfiles by opening or dragging them, or keep them with Playlists → Import playlist…, an All media playlist with everything, and a list view with title, artist/album and duration columns you can sort by. - Player with a timeline preview (hover the seek bar to see that moment), mini player, queue, resume where you left off, repeat/shuffle, playback speed, picture-in-picture, fullscreen and hide-UI mode.
- Made for watching: while a video plays, the sidebar tucks away so the video gets the full width, and the window resizes to the video's shape (up to 70% of the screen, like VLC). Both can be turned off in Settings → Interface. There you can also hide individual player controls (e.g. keep only the timeline), make the volume bar a cone like classic VLC, and turn on rounded window corners.
- Hold for 2× speed: hold Shift+Space, or hold the mouse button on the video, to play at double speed until you let go.
- A-B repeat: press A to set the start, A again to set the end and loop that part, and A once more to stop (also in the right-click menu under Playback). The looped part is shown on the timeline.
- Chapters and bookmarks: chapters embedded in a file (MKV, MP4, DVD) show as marks on the timeline, with the chapter name above the preview. Add your own bookmarks with Ctrl+B, jump between chapters and bookmarks with Shift+N / Shift+P, and manage, import or export them (OGM chapter files, FFmpeg metadata, Matroska XML, CUE and "1:23 Title" lists) via Ctrl+Shift+B.
- Subtitles: embedded and external
.srt/.ass/.vttfiles load automatically. You can set the delay, speed, duration, font, color, outline and background. - Subtitle fonts: pick any font installed on your computer, or add your own
.ttf/.otf/.wofffiles in Settings → Subtitles. - Online subtitles: search and download subtitles from OpenSubtitles.com without leaving the player (right-click → Subtitle → Search online…). Results that fit your exact file are marked. Searching works right away; downloading needs a free OpenSubtitles.com account (20 downloads per day), which you can log in with inside the app.
- Music with lyrics: album covers in the player and as square tiles in the library. A
.lrcfile next to a song is loaded automatically and shown full-screen, scrolling along with the song (click a line to jump there); for videos.lrcfiles work as subtitles. The music player background can be a blurred cover, a gradient from the cover's colors or black, with adjustable dimming and cover size; press Y to switch between cover and lyrics. Hovering the timeline shows the lyric line at that moment. The full-screen lyrics have their own text size (Settings → Subtitles → Lyrics). - Surround sound: 5.1 and 7.1 audio (Dolby Digital, DTS, TrueHD/Atmos core, AAC, FLAC …) keeps its channels, also when the file is converted and with the audio effects on (Settings → Audio → Speakers). Bitstream passthrough to a receiver is not possible in Chromium; the audio is decoded and sent as multichannel PCM.
- Audio: multiple audio tracks, a 10-band equalizer with 18 presets, compressor, spatial audio (reverb), stereo widener and volume boost up to 200%.
- Video: brightness, contrast, saturation, hue, gamma, sharpen, film grain, negative, posterize, grayscale, sepia, pixel cropping, rotate, zoom and mirror.
- Themes: light, dark, AMOLED black or system, with 9 accent colors, and an interface size from 75% to 150% (Settings → General, or Ctrl + / Ctrl − / Ctrl 0).
- Recording (R) and snapshots (Shift+S).
- Your own keys: every keyboard shortcut can be changed under Settings → Controls, and the media keys (play/pause, next, previous, stop) work too, also from the Windows media overlay, Linux (MPRIS) and headsets.
- Settings: right-click menu with submenus, quick settings in the player, and a full settings window with search (Ctrl+P).
Keyboard shortcuts
| Key | Action | Key | Action |
|---|---|---|---|
Space |
Play / pause | F |
Fullscreen |
← → |
Seek | ↑ ↓ |
Volume |
< > / P N |
Previous / next | Q |
Queue |
, . |
Previous / next frame | L |
Library / player |
V |
Cycle subtitle track | B |
Cycle audio track |
Shift+S |
Snapshot | R |
Record |
S |
Stop | M |
Mute |
[ ] = |
Slower / faster / normal | G H |
Subtitle delay |
Ctrl+O |
Open files | Ctrl+N |
Network stream |
Ctrl+P |
Settings | Ctrl+\ |
Hide interface |
Shift+N Shift+P |
Next / previous chapter or bookmark | Ctrl+B |
Add bookmark |
Ctrl+Shift+B |
Chapters and bookmarks | A |
A-B repeat (A, B, off) |
Shift+Space (hold) |
2× speed while held | ||
F1 |
All shortcuts | Ctrl+Q |
Quit |
🖼️ Screenshots
| Onboarding | Player with quick settings |
|---|---|
![]() |
![]() |
| Settings | Light mode |
![]() |
![]() |
🛠️ Building from source
Requires Node.js 20 or newer.
cd app npm install npm start # run the development version npm run dist:win # Windows: installer + portable (on Windows) npm run dist:store # Microsoft Store package (on Windows) npm run dist:mac # macOS (on a Mac) npm run dist:linux # Linux: AppImage, deb, rpm, pacman, tar.gz (on Linux)
Slim FFmpeg
Like VLC, the release builds don't ship a general-purpose FFmpeg. app/build/ffmpeg/build.sh compiles FFmpeg (with libdvdread/libdvdnav for DVDs) from source with --disable-everything, then switches on all decoders, demuxers and parsers (so it still plays almost anything) but only the few encoders, muxers and filters the app uses (H.264/AAC for live conversion, JPEG thumbnails, WebVTT subtitles). That brings the FFmpeg binary from ±80 MB down to a fraction of that. The release workflow builds it automatically; to build it yourself:
bash app/build/ffmpeg/docker.sh win-x64 # or linux-x64 (needs Docker) bash app/build/ffmpeg/build.sh mac-arm64 # or mac-x64 (on a Mac, with nasm + pkg-config)
The result lands in app/build/ffmpeg/out/<target>/. Copy it over app/node_modules/ffmpeg-static/ffmpeg[.exe] before running electron-builder. During development the full ffmpeg-static binary is used.
Making a release
The workflow .github/workflows/build.yml builds the app on GitHub's servers for Windows, macOS and Linux, and creates a release with a download table automatically:
# first set the version in app/package.json, e.g. "version": "1.16.1"
git tag v1.16.1
git push origin v1.16.1You can also run the workflow manually (Actions → Build & Release → Run workflow). The files then appear under Artifacts.
Download page (GitHub Pages)
The page in docs/ is published at https://stanotermans.github.io/vlcmediaplayerv2/. To enable it, go to Settings → Pages → Deploy from a branch → main / /docs. It always shows the latest release.
BSD
Electron has no official builds for BSD. On FreeBSD (and OpenBSD) you can run the app with the system's Electron port; it then uses the system's FFmpeg:
pkg install electron36 ffmpeg node npm # the port's version number may differ: pkg search electron cd app && npm install --ignore-scripts --omit=dev electron36 .
To use your own FFmpeg, set VLCX_FFMPEG=/path/to/ffmpeg.
Project structure
app/
main.js Electron main process: window, local media server, FFmpeg transcoding, file dialogs
midi-render.mjs Renders MIDI files to audio with a SoundFont (runs in a separate process)
assets/ Built-in SoundFont (FluidR3 Mono) and its license
preload.js Secure bridge between the main process and the UI
src/
index.html UI layout
style.css Design (light/dark, accent color)
settings.js Preferences and theme
ui.js Building blocks: sliders, toggles, menus, dialogs
effects.js Audio effects (Web Audio) and video filters
panels.js Quick settings, settings window and dialogs
onboarding.js Welcome screen (language, media folder, theme, shortcuts)
i18n.js Translation system
lang/*.js Translations (nl, de, fr, es, it, pt; English is built in)
app.js Library, player, subtitles, keyboard shortcuts
build/icon.png App icon (generated by build/make-icon.js)
build/ffmpeg/ Recipe for the slim FFmpeg used in releases
docs/ Download page for GitHub Pages
❓ Why not iOS, Android, …?
The app runs on Electron, which only supports Windows, macOS and Linux. iOS, Apple TV and Android would need a separate native app. Windows Phone has been discontinued, and NetBSD, Solaris, QNX and OS/2 have no Electron or Chromium.
🤝 Community
- Contributing guide: bug reports, ideas, translations and code
- Code of Conduct
- Security policy: report vulnerabilities privately
- Code signing policy: free code signing provided by SignPath.io, certificate by SignPath Foundation
- Accessibility: what's supported, known limitations and how to report barriers
📄 License
- Code: MIT © Stan Otermans
- Design: © Juxtopposed, used with attribution based on the publicly shared Figma community file.
- Includes FFmpeg with x264, licensed under the GPL. Release builds use the slim build from
app/build/ffmpeg/build.sh(source: the FFmpeg and x264 versions pinned there); development uses ffmpeg-static. - MIDI playback uses SpessaSynth (Apache-2.0) and the FluidR3 Mono General MIDI SoundFont (MIT, see
app/assets/FluidR3Mono_License.md). - "VLC" and the cone logo are trademarks of VideoLAN. This project is not affiliated with VideoLAN.



