VLC Audio Output Guide: Choose the Right Device & Mode

Beginner Last updated: Applies to: All platforms · VLC 3.0.x

VLC plays audio through the device Windows, macOS or Linux reports as the default — which is not always the device you actually want. This guide explains where VLC decides what to play through, how to switch devices without leaving the player, and how to enable bitstream passthrough for receivers and soundbars.

Step 1 — Switch the output device on the fly

  1. Start playback, then click the speaker icon in the main toolbar (Audio menu > Audio Device on older versions).

    A list of available output devices opens.

  2. Pick the device you want — e.g. "Speakers (Realtek)" vs "Headphones (USB)" vs the HDMI output of your graphics card.

    VLC re-routes audio instantly, without restarting.

  3. If the device you need is missing, close VLC, plug the device in, and reopen VLC — audio devices are enumerated at startup.

    The device appears in the list.

NoteThe on-the-fly device menu only appears with the default audio output module. If you switched modules in the past, use Preferences > Audio > Output instead.

Step 2 — Choose the right output module (troubleshooting)

PlatformModuleWhen to use it
WindowsDirectSound (default)Works with everything; safe choice for USB headsets and Bluetooth
WindowsWASAPIExclusive-mode support; better latency, but can block other apps from playing sound
WindowsMMDeviceFallback when DirectSound/WASAPI fail; rarely needed
macOSCoreAudio (default)Handles AirPods, HDMI and aggregate devices automatically
LinuxPulseAudio (default)Desktop sound server; per-app routing
LinuxALSADirect hardware access; use when PulseAudio misbehaves

Step 3 — Enable bitstream passthrough for a receiver/soundbar

  1. Go to Tools > Preferences and click "All" (Show settings) at the bottom-left.

    The full settings tree appears.

  2. Open Audio > Output modules and select the DirectX (Windows) / CoreAudio (macOS) / PulseAudio (Linux) module.

    The module is selected.

  3. Tick "Enable passthrough" (or "Use S/PDIF when available").

    Dolby Digital and DTS bitstreams are sent to your receiver.

  4. Under Audio > Output modules > DirectX, tick "Use hardware float" only if you hear crackling — most systems do not need it.

    Playback stays clean.

  5. Save and restart VLC, then play a file with an AC-3 or DTS track.

    Your receiver shows "Dolby Digital" or "DTS" instead of "PCM".

NotePassthrough only works when the source file actually contains an AC-3/DTS track and your receiver is connected over HDMI, optical or coaxial. MP3/AAC files are always decoded to PCM by VLC.

Troubleshooting common output problems

  • No sound after switching devices? — Set the device again in the Audio menu; per-file device selection is remembered per track.
  • Headphones and speakers play at once? — This is Windows audio routing, not VLC. Disable the unused device in Sound > Playback, or use WASAPI exclusive mode.
  • Volume is very low on one device? — Tools > Effects and Filters > Audio tab > increase "Volume" or enable the Compressor.
  • HDMI audio missing from the list? — The HDMI output must be active and set as a playback device in the OS first; see our HDMI no-sound fix for the full checklist.

Frequently asked questions

How do I make VLC remember a specific audio device?
VLC plays through the OS default device. To force a specific one, select it in the Audio menu during playback and it stays until you change it or VLC restarts.
What is audio passthrough in VLC?
Passthrough sends the compressed Dolby Digital/DTS bitstream untouched to your receiver or soundbar, which decodes it. Enable it under Preferences > Audio > Output modules > "Enable passthrough".
Why does VLC show multiple identical devices?
Each audio driver exposes several endpoints (e.g. HDMI 1/2, optical, analog). Try them in order — the one that produces sound is the active endpoint.
Does VLC support Dolby Atmos?
VLC 3.0 decodes and outputs the base Dolby Digital Plus layer of Atmos streams; the Atmos object metadata is passed through only when your hardware decodes it.