- Confirm multiple audio tracks exist before changing mpv settings.
- Test aid, alang, key bindings, profiles, scripts, and stream formats.
- Use clean commands and logs to isolate the exact failure.
- Confirm the Symptom With a Minimal Clean mpv Command
- Check Options, Bindings, Profiles, and Scripts
- Check Track Flags, Files, Streams, and External Components
- Use Logs and Runtime Information to Find the Exact Cause
- Run a Clean Temporary Test Before Making Permanent Changes
- Quick Fix Checklist
- Frequently Asked Questions
When mpv multiple audio tracks are not switching, the cause is usually narrower than it first appears. mpv may not be detecting more than one audio track, a custom input binding may have replaced the default cycling command, the aid option may be pinning one track, or a profile or script may be changing the selection after playback begins. With online media, playlists, and network streams, the additional languages may also exist as separate stream variants rather than tracks available in the opened media.
The safest approach is to confirm what mpv sees, reproduce the behavior without your configuration, and then restore custom settings one layer at a time. This guide covers local files, external audio, stream URLs, yt-dlp-backed playback, language preferences, track flags, audio output, hardware decoding, and diagnostic logging. After each successful test, stop changing unrelated options. A working minimal test tells you where the problem is and prevents unnecessary changes to shaders, HDR settings, subtitle configuration, or operating system drivers.

Start with free Canva bundles
Browse the freebies page to claim ready-to-use Canva bundles, then get 25% off your first premium bundle after you sign up.
Free to claim. Canva-ready. Instant access.
1. Confirm the Symptom With a Minimal Clean mpv Command
Begin with a media file that you know contains at least two audio tracks. A single-language file is not a useful test, even if a website or filename suggests that alternate audio exists.
Open a terminal, PowerShell window, or Command Prompt and run mpv with configuration loading disabled:
mpv --no-config "path/to/test-file.mkv"On Windows, use a correctly quoted Windows path:
mpv --no-config "C:\Videos\test-file.mkv"During playback, press the # key to cycle through available audio tracks. Depending on the keyboard layout, producing # may require Shift or another modifier. Also try g-a, which opens mpv's interactive audio-track selection menu in versions and configurations that provide the default menu binding. Press g and then a as a sequence, rather than holding both keys simultaneously.
Success means that mpv reports a different audio track on its on-screen display and the audible language or soundtrack changes. Once that works under --no-config, stop investigating codecs, GPU drivers, and the media file. The file and mpv's basic track selection are working, so the fault is almost certainly in a configuration file, input binding, profile, or script.
1.1 Check whether mpv detects multiple tracks
Use mpv's track list before assuming that cycling is broken. Launch the file from a terminal and inspect the startup output. mpv normally prints detected video, audio, and subtitle streams. You can also display the console or use the built-in statistics and track interfaces available in your installation.
For a direct property check through mpv's command interface, the relevant property is track-list. If you use JSON IPC, request that property and inspect entries whose type is audio. Each entry can include an ID, language, title, selection state, default flag, and forced flag.
If the track list contains only one audio entry, pressing # cannot select a second embedded track. At that point, investigate the file, URL, external audio file, or stream manifest instead of editing keyboard bindings.
1.2 Select a known audio ID directly
If mpv lists multiple audio tracks, note their IDs and select one explicitly:
mpv --no-config --aid=2 "path/to/test-file.mkv"Replace 2 with an audio ID shown by mpv. Track IDs are not guaranteed to be consecutive, and an audio track's ID is not necessarily its visible position in a player's menu.
Success means the requested track is marked selected and its audio is heard. If direct selection works but cycling does not, focus on the key binding or menu behavior. If direct selection immediately reverts, look for a script, profile, or runtime IPC controller that changes aid.
2. Check Options, Bindings, Profiles, and Scripts
Once the clean test succeeds, repeat it without --no-config. If the problem returns, inspect the active configuration incrementally rather than deleting the entire config directory.
2.1 Inspect the aid option
The aid option controls the selected audio track. Common forms include an explicit track ID, auto, and no. An explicit value can force one ID whenever a file loads, while aid=no disables audio selection.
Search mpv.conf, included configuration files, and profiles for entries such as:
aid=1
aid=noTemporarily comment out a fixed aid line or change it to:
aid=autoDo not place command-line prefixes such as -- in ordinary mpv.conf option lines. Use aid=auto in the file and --aid=auto on the command line.
Success means mpv chooses an initial track automatically and still permits manual selection afterward. If this resolves the issue, leave unrelated video, HDR, subtitle, and audio-output options unchanged.
2.2 Use alang as a preference, not a lock
The alang option supplies preferred audio languages for automatic selection. For example:
alang=eng,jpnThis tells mpv to prefer English, then Japanese, when language metadata is available. It does not create missing tracks, and it should not prevent manual cycling after playback starts. Language tags may be absent, inaccurate, or represented differently in poorly authored files.
Test without the preference if mpv repeatedly starts on an unexpected track:
mpv --no-config --alang= "path/to/test-file.mkv"If manual cycling works but automatic selection is wrong, correct the preference order or the media metadata. Do not treat alang as a substitute for checking actual track IDs.
2.3 Restore the audio-cycle input binding
Custom input.conf files can replace or shadow default bindings. Scripts can also claim keys before the expected command runs. The command needed for track cycling is:
cycle audioBecause # has special meaning in configuration syntax and varies across keyboard layouts, consult mpv's key-name handling when assigning that physical key. A safer diagnostic is to bind an unused function key temporarily:
F8 cycle audioSave that line in input.conf, restart mpv, and press F8. Success means the selected audio ID changes and mpv displays the new track. If F8 works while # does not, the problem is key recognition or a binding conflict, not audio decoding.
If g-a does not open the audio menu, test with --no-config. A customized g binding, a script-defined menu, or an older custom input file may prevent the sequence from reaching its default command. The cycling command remains a valid fallback even when a menu is unavailable.
2.4 Check profiles and conditional configuration
Profiles can activate according to protocol, filename, extension, resolution, or other properties. A file may therefore work in a basic test but fail only for URLs, HDR videos, playlists, or a particular directory.
Search for profile blocks containing aid, alang, audio-file, audio-files, or script options that select tracks. Use mpv's --show-profile option to inspect a named profile:
mpv --show-profile=profile-nameCompare the displayed options with your expectations. If a conditional profile is suspected, temporarily disable only that profile or its audio-related line. Success means the same media now retains the manually selected track.
2.5 Test scripts and IPC controllers separately
Lua and JavaScript extensions can implement track menus, remember prior selections, or automatically choose tracks by language and title. External applications connected through IPC can also set the aid property after startup.
Run the file with --no-config. If that works, temporarily move only the suspected script out of the scripts directory or disable its autoload behavior. Avoid deleting the entire configuration directory. Also close front ends, remote controls, or automation tools that connect to mpv's IPC socket or named pipe.
Success means a manual track choice remains selected for the rest of playback. Re-enable scripts one at a time until the selection begins changing again.

3. Check Track Flags, Files, Streams, and External Components
3.1 Understand disabled and default track flags
A default flag is a preference hint stored in the container. It can influence automatic selection, but it does not guarantee that a player will choose that track under every language configuration. A disabled or unsupported stream may be listed but unavailable for normal playback.
Inspect the startup track list for labels such as default, the selected marker, language, title, and codec. If one audio stream is commentary, descriptive audio, or an unsupported format, its title can explain why switching appears ineffective.
Two tracks can also contain identical audio. In that case, the selection indicator changes even though the sound does not. Treat the changed selected ID as success, then verify with a file whose tracks are audibly distinct.
3.2 Separate selection problems from audio-output problems
Audio backends and output devices usually do not control which embedded track is selected. However, they can make a successful switch sound like failure. For example, one track may use a channel layout or encoded format that the chosen output path cannot handle correctly.
Watch whether mpv's selected audio ID changes. If it does, track switching is working. Then test a conventional stereo output path or a different system output device. Review terminal messages for decoder initialization, passthrough, channel-map, or audio-device errors.
Stop editing bindings once the selected ID changes. At that stage, troubleshoot the audio decoder, passthrough configuration, selected device, PipeWire or PulseAudio route on Linux, CoreAudio device on macOS, or WASAPI device on Windows.
3.3 Treat hardware decoding and GPU options as secondary
Hardware decoding, shaders, HDR tone mapping, GPU drivers, and display servers primarily affect video. They are unlikely to prevent the aid property from changing. Test them only if switching tracks causes playback to freeze, seek, lose synchronization, or terminate.
For a temporary isolation test, disable hardware decoding:
mpv --no-config --hwdec=no "path/to/test-file.mkv"If audio selection works both with and without hardware decoding, leave your GPU configuration alone. Screenshot options and subtitle styling are similarly unrelated unless a script ties those features to custom key sequences or profiles.
3.4 Verify online URLs and yt-dlp behavior
For online playback, mpv may use yt-dlp to resolve a webpage into one or more media URLs. Alternate languages on a website are not always delivered as multiple audio tracks inside one selected format. They may be separate formats, separate manifests, or separate page choices.
Check the track list after the URL has been resolved. If mpv exposes only one audio entry, cycling cannot reach a language that was never included in the selected stream. Update yt-dlp through its official distribution method, confirm that mpv can locate it, and inspect format-selection options in your config. Do not download replacement binaries from random sites.
Also test the resolved content without custom ytdl-format rules. A format expression that selects one video-plus-audio combination may intentionally produce only one audio stream. Success means the opened media's track list contains multiple selectable audio entries. If it does not, the limitation is upstream or format-specific rather than an mpv input problem.
3.5 Check network streams and playlists
HLS, DASH, RTSP, and other network sources can change available tracks over time. Some servers expose languages as separate playlist URLs. Others publish incomplete metadata or deny access to variants based on authentication, region, headers, or expiring tokens.
Open the exact stream URL from a terminal and inspect its detected tracks. Ensure shell characters in URLs are quoted, especially &, ?, and semicolons. In many shells, an unquoted ampersand changes command execution and truncates the URL passed to mpv.
If a local multitrack file works but the stream does not list alternate audio, your mpv binding is already proven. Stop changing local configuration and investigate the manifest, access permissions, network response, or source service.
3.6 Confirm external audio file paths and permissions
If the alternate audio is stored in a separate file, it must be loaded successfully before mpv can select it. Check the path, filename matching, read permissions, sandbox restrictions, and removable or network-drive availability.
Pass the external track explicitly for testing:
mpv --no-config --audio-file="path/to/alternate-audio.mka" "path/to/video.mkv"Success means the external audio appears in the track list and can be selected. If it does not appear, fix the path or access problem before changing aid or key bindings.
4. Use Logs and Runtime Information to Find the Exact Cause
Terminal output is more useful than repeatedly changing options. Start mpv from a terminal so startup messages remain visible, then reproduce the failed switch once.
4.1 Increase relevant message levels
Use --msg-level to increase diagnostic detail for the components involved. A broad diagnostic run can use terminal verbosity, while a targeted run can raise messages for demuxing, audio decoding, input, or scripting according to the component names supported by the installed build.
For example, begin with:
mpv -v --no-config "path/to/test-file.mkv"Look for the detected track list, selected audio ID, input command execution, decoder errors, and script messages. The useful question is whether mpv received a cycle command and changed the selected track.
4.2 Save a reproducible log
Write diagnostics to a file when terminal output scrolls too quickly:
mpv -v --log-file=mpv-audio-test.log "path/to/test-file.mkv"Reproduce the issue, close mpv, and search the log for aid, audio, track, input, and script names. Logs can contain local paths, URLs, headers, and other sensitive information, so review and redact them before sharing.
4.3 Use the stats overlay without overinterpreting it
mpv's statistics overlay is useful for confirming playback state, codecs, synchronization, and performance. It may help distinguish an audio switch from an output or decoding failure. However, the startup track list, menu, on-screen selection message, and track-list property are more direct evidence for this particular symptom.
5. Run a Clean Temporary Test Before Making Permanent Changes
Use the following controlled sequence:
- Choose a known local file with two audibly different embedded audio tracks.
- Run
mpv --no-config "file.mkv". - Check that two audio entries appear in the track list.
- Press
#, tryg-a, or select a known ID with--aid. - Repeat without
--no-config. - If the failure returns, test a temporary F8 binding for
cycle audio. - Disable only the relevant profile, script, or fixed audio option.
- Reintroduce custom components one at a time.
This sequence separates media limitations from mpv configuration problems. Stop as soon as the selected audio ID changes reliably and the intended audio plays. Changing unrelated video renderers, HDR parameters, screenshot templates, subtitle fonts, or GPU drivers after success only introduces new variables.
6. Quick Fix Checklist
- Confirm that mpv's track list actually contains at least two audio entries.
- Test the same local file with
--no-config. - Press
#and verify that your keyboard produces the expected key. - Try
g-ato open the audio-track menu where supported. - Select a listed track directly with
--aid=ID. - Remove or change fixed
aidsettings toaid=auto. - Use
alangonly to define automatic language preferences. - Temporarily bind
F8 cycle audioininput.conf. - Inspect active profiles with
--show-profile=NAME. - Disable suspected track-selection scripts or IPC controllers individually.
- Quote file paths and URLs correctly in your shell.
- Confirm external audio paths are readable and listed by mpv.
- For online media, verify that yt-dlp's selected format exposes multiple audio tracks.
- Use
-vand--log-fileto capture the failed action. - Stop changing settings when the selected audio ID and audible track both change.
7. Frequently Asked Questions
7.1 Why does the # key not cycle audio in mpv?
Your keyboard layout may require a modifier to generate #, or a custom input.conf or script may have replaced the binding. Test with --no-config, then temporarily bind F8 cycle audio. If F8 works, audio selection is healthy and only the original key mapping needs correction.
7.2 What does g-a do in mpv?
In configurations that include mpv's relevant default menu bindings, pressing g followed by a opens an audio-track selection menu. Custom bindings or scripts can alter this behavior. If the menu is unavailable, use cycle audio or select a track through aid.
7.3 What is the difference between aid and alang?
aid identifies the audio track selected for playback. alang provides an ordered list of preferred languages for automatic selection. Use aid when testing a specific detected track and alang when choosing which language mpv should prefer at startup.
7.4 Why does mpv show two audio tracks but they sound identical?
The tracks may contain the same program audio, or the distinction may be subtle, such as a different codec, channel layout, commentary mix, or audio description. Watch the selected track ID. If it changes, cycling works. Test with a file containing clearly different languages before troubleshooting further.
7.5 Why does track switching work for local files but not online URLs?
The online service or selected format may provide only one audio stream. yt-dlp format rules can also choose a single audio variant. Inspect mpv's track list after URL resolution. If only one audio entry exists, the issue is stream availability or format selection, not the # binding.
7.6 Should I delete my entire mpv configuration folder?
No. First use --no-config, which provides a clean temporary test without destroying settings. If that succeeds, inspect aid, alang, input.conf, profiles, scripts, and IPC tools individually. Keep backups before editing and change one item at a time.