- Test a public Twitch VOD with mpv's configuration disabled.
- Verify yt-dlp extraction, available formats, cookies, and network access.
- Isolate config, hardware decoding, audio, scripts, and output failures.
- Confirm the Symptom With a Minimal Clean mpv Command
- Check Twitch Extraction and Quality Selection
- Check mpv Configuration, Profiles, Scripts, and Tracks
- Check Rendering, Hardware Decoding, Audio, and the Operating System
- Use Logs and Runtime Information to Find the Exact Failure
- Run a Clean Temporary Test Before Making Permanent Changes
- Quick Fix Checklist
- Frequently Asked Questions
When an mpv Twitch stream is not playing, the failure usually occurs before mpv receives playable media. mpv relies on an external URL extractor, typically yt-dlp, to interpret Twitch page URLs and obtain the underlying stream. Problems can also come from an outdated extractor, an unavailable quality format, restricted content, shell quoting, network access, custom scripts, hardware decoding, or conflicting mpv configuration. The safest troubleshooting method is to begin with a public Twitch VOD and a clean command, inspect the terminal output, and then restore custom options one layer at a time.

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
Start by separating Twitch extraction problems from ordinary mpv playback problems. Confirm that mpv can play a known-good local video file. If local files also fail, Twitch is probably not the primary issue. Investigate mpv's video output, audio output, hardware decoder, GPU driver, or installation before testing online URLs.
Next, choose a public Twitch VOD that plays in a private browser window without signing in. A public VOD is a better diagnostic target than a live channel because it removes temporary offline status, live latency, and changing stream availability from the test.
1.1 Run mpv without your normal configuration
Open Command Prompt, PowerShell, Terminal, or a Linux shell and run a clean test using the VOD's full HTTPS URL:
mpv --no-config "https://www.twitch.tv/videos/VIDEO_ID"
On Windows, use mpv.exe if the executable is not available through PATH. Keep the URL inside quotes. In PowerShell, Bash, and Zsh, quoting prevents characters in URLs from being interpreted by the shell.
A successful test opens the VOD, produces audio and video, and shows ordinary playback information in the terminal. Stop changing settings if this command works. The result proves that mpv, the extractor, and basic network playback are functional. Your next task is to isolate a configuration, profile, script, or binding conflict rather than reinstalling software.
1.2 Interpret the first result
- If mpv reports that it cannot recognize or open the URL, check yt-dlp first.
- If extraction succeeds but no requested format exists, remove custom quality-selection rules.
- If video opens with a black screen, test software decoding and a different video output.
- If video plays without sound, inspect track selection and the audio backend.
- If playback starts but repeatedly stalls, investigate format bitrate, buffering, and network access.
- If only restricted streams fail, test cookies after confirming a public VOD works.
Do not change several unrelated settings after this first result. The earliest specific error usually identifies the correct troubleshooting branch.
2. Check Twitch Extraction and Quality Selection
mpv does not independently understand every Twitch page layout. For supported website URLs, it invokes a youtube-dl-compatible extractor. yt-dlp is the commonly maintained choice. If Twitch changes its site or API behavior, an old extractor can fail even though mpv still plays local files and direct media URLs correctly.
2.1 Confirm that mpv can find yt-dlp
Run the extractor directly:
yt-dlp --version
Then ask it to inspect the public VOD:
yt-dlp -F "https://www.twitch.tv/videos/VIDEO_ID"
The -F command lists formats without downloading the complete video. Success means yt-dlp recognizes the Twitch page and displays one or more available formats. If the shell cannot find yt-dlp, install or update it through its official release method or a trusted operating-system package manager. Avoid random repackaged binaries and codec bundles.
If yt-dlp works directly but mpv cannot use it, mpv may be running with a different PATH. This is common when mpv is launched from a desktop shortcut, Finder, or a graphical file manager. As a temporary diagnostic, provide the trusted executable's absolute path through mpv's script options:
mpv --no-config --script-opts=ytdl_hook-ytdl_path="/absolute/path/to/yt-dlp" "TWITCH_URL"
Windows paths should also be quoted. Success means the Twitch media begins playing and the terminal no longer reports that the extractor is missing. At that point, fix PATH or add the verified path to the appropriate mpv configuration instead of retaining multiple experimental copies.
2.2 Remove fragile quality rules
A custom ytdl-format expression can request a format Twitch does not offer for a particular stream or VOD. Test automatic selection first:
mpv --no-config --ytdl-format=best "TWITCH_URL"
If the highest quality is too demanding, inspect available formats with yt-dlp -F and choose an actual listed format. You can also use a conservative selector such as:
mpv --no-config --ytdl-format="best[height<=720]" "TWITCH_URL"
Format availability varies. Do not assume every Twitch broadcast offers 1080p, 60 fps, or transcoded lower-quality variants. Success means playback starts with the selected resolution and remains stable. Once it does, stop changing decoder or output settings unless the terminal shows a separate decoding problem.
2.3 Account for live-stream latency
A Twitch live channel can take longer to start than a local file because mpv must run the extractor, obtain a current playlist, and buffer media segments. A channel may also be offline while its page remains accessible. Test the channel in a browser, then give mpv a reasonable amount of time while watching terminal output.
Do not treat several seconds of startup delay as a failure if the log continues requesting playlist segments. Conversely, repeated HTTP errors, playlist refresh failures, or a process that exits indicate a real extraction or network problem. Test a public VOD before tuning latency. If the VOD works and only live playback fails, update yt-dlp and retest the live URL without a custom quality rule.
2.4 Use cookies only for content that requires them
Subscriber-only, mature-gated, age-restricted, or otherwise account-restricted content may require authenticated browser cookies. First prove that a public VOD works. Then consult yt-dlp's supported cookie options and use cookies only from an account authorized to view the content.
You can pass trusted yt-dlp arguments through mpv, but cookie syntax and browser access differ by operating system. A direct yt-dlp format-list test with the appropriate official cookie option is often easier to diagnose before adding it to mpv. Protect exported cookie files because they may contain active login credentials. Do not share them, commit them to a configuration repository, or use them to evade access controls.
Success means yt-dlp lists formats for the restricted URL and mpv plays content your account can legitimately access. If extraction still says the content is unavailable, stop adjusting mpv's renderer because authorization occurs before rendering.
3. Check mpv Configuration, Profiles, Scripts, and Tracks
If --no-config works but normal mpv does not, the cause is inside your custom environment. Restore settings methodically rather than deleting the entire configuration folder.
3.1 Inspect relevant options
Review mpv.conf, platform-specific configuration files, and any included files. Search for options involving ytdl, network, cache, demuxer, audio, video, vo, ao, hwdec, profile, and script. Pay special attention to URL-specific profiles that may activate only for network playback.
Temporarily comment out one suspicious line, run the same public VOD, and record the result. If playback returns, restore the line and simplify its value rather than removing unrelated preferences. Success is reproducible playback after changing one identified option.
3.2 Check profiles and input bindings
Use the following command to display a named profile's contents:
mpv --show-profile=PROFILE_NAME
Check whether an automatically applied profile forces a nonexistent format, disables video or audio, selects a specific track, changes proxy behavior, or activates unstable shaders. Also inspect input.conf. A binding or script can replace URLs, change tracks, cycle video output, or run external commands without being obvious from the main configuration.
If Twitch works from the terminal but fails only when opened through a custom key, launcher, browser extension, or IPC client, compare the exact URL and arguments passed by that integration. Test the copied URL directly with the clean command. Success shows that the integration, not core mpv playback, requires correction.
3.3 Disable scripts without erasing them
User scripts can modify URL loading, quality selection, caching, tracks, shaders, and IPC behavior. The --no-config test normally avoids user configuration and scripts, making it a useful baseline. If needed, temporarily move one suspected script out of the scripts directory or disable its activating option, then repeat the identical URL.
Do not remove every configuration file at once. If moving one script restores playback, check that script's documentation and updates. Stop when you have found a repeatable cause.
3.4 Verify audio and video track selection
A Twitch stream may be loading even when a forced track option makes it appear broken. Remove settings such as vid=no, aid=no, or hard-coded track IDs during testing. Press i for mpv's statistics overlay and inspect the terminal's track list. The console should identify selected video and audio streams after extraction.
If the timeline advances but the screen is blank, video output is the more likely problem. If video advances silently, test automatic audio-track selection and the default audio output. Subtitle settings rarely prevent Twitch extraction, but aggressive subtitle scripts or profiles can still interfere with URL startup, so exclude them through the clean test.

4. Check Rendering, Hardware Decoding, Audio, and the Operating System
Once the log confirms that mpv received a playable Twitch stream, focus on rendering and output. These checks are relevant when extraction succeeds but playback is black, frozen, silent, or unstable.
4.1 Test without hardware decoding
Run:
mpv --no-config --hwdec=no "TWITCH_URL"
If software decoding works, your mpv Twitch stream not playing fix is likely related to the selected hardware-decoding API, GPU driver, codec support, or display environment. Update the GPU driver through the hardware vendor or operating system, then test mpv's documented automatic hardware-decoding mode. Do not install an untrusted codec pack. mpv includes its normal decoding stack and Twitch playback does not generally require third-party codec bundles.
Success means stable video appears with --hwdec=no. Stop changing extraction settings because yt-dlp has already completed its job.
4.2 Test the default video output and remove shaders
Custom GPU contexts, HDR conversion options, ICC profiles, interpolation, and shader chains can expose driver or display-server problems. Test the default output with no configuration. Linux users should note whether mpv is running under Wayland or X11, particularly if behavior differs between a terminal session and a desktop launcher.
If a clean test works, reintroduce shaders, HDR options, and video-output settings individually. A Twitch stream may use a resolution or frame rate that triggers a path your local test file did not. Success means both the image and frame timing remain stable after the necessary options are restored.
4.3 Isolate audio backend failures
If the VOD displays video but mpv exits or stalls around audio initialization, test with audio disabled:
mpv --no-config --no-audio "TWITCH_URL"
If video then plays, inspect the default audio device and backend. On Linux, confirm that the active PipeWire or PulseAudio environment is accessible. On Windows and macOS, check whether the selected output device still exists and whether another application has exclusive control where applicable.
Success with --no-audio isolates the issue but is not the final solution. Restore audio after selecting an available device or removing a stale forced ao setting.
4.4 Check network access and buffering
Firewalls, DNS filters, proxies, VPNs, security software, and captive portals can permit the Twitch webpage while blocking playlist or media hosts. Compare yt-dlp's direct format-list result with mpv's segment requests. If possible, test the same public VOD on another trusted network.
For high-bitrate streams, lower the quality before increasing cache values. A 720p format that plays continuously is more useful evidence than a maximum-quality format that repeatedly exhausts the buffer. If lower quality works, monitor whether the connection can sustain the higher stream bitrate. Cache tuning can absorb short fluctuations, but it cannot fix persistent bandwidth loss or blocked requests.
Success means the terminal shows continuous media retrieval and playback proceeds without repeated buffering pauses. Once stable, avoid adding oversized cache settings without a demonstrated need.
5. Use Logs and Runtime Information to Find the Exact Failure
Terminal output is central to mpv troubleshooting. Launching mpv by double-clicking can hide the error that distinguishes a missing extractor from an unavailable stream or failed renderer.
5.1 Create a focused diagnostic log
Run a clean test with more detail and a log file:
mpv --no-config --msg-level=all=v --log-file=mpv-twitch.log "TWITCH_URL"
Review the first meaningful failure, especially lines involving ytdl_hook, yt-dlp, HTTP status codes, formats, demuxing, video output, audio output, or hardware decoding. Later errors may simply be consequences of the first one.
Before sharing a log, remove account identifiers, local paths, cookies, authorization headers, signed media URLs, and other secrets. A Twitch media URL may contain temporary tokens even when the original page URL looks harmless.
5.2 Use the stats overlay and track list
During playback, press i to open mpv's statistics overlay. It can help confirm the selected format, decoder, dropped frames, synchronization, cache behavior, and output path. The terminal also reports available tracks after the stream is opened.
If the stats overlay appears and time advances, extraction and demuxing have largely succeeded. Focus on image, audio, frame-dropping, or synchronization issues. If mpv never reaches a track list, remain focused on yt-dlp, URL validity, permissions, authentication, or network access.
6. Run a Clean Temporary Test Before Making Permanent Changes
A controlled test prevents a common mistake: changing the extractor, cache, hardware decoder, shader stack, and audio output simultaneously. That can make playback return without revealing which change mattered.
- Confirm mpv plays a local video with audio and video.
- Select a public Twitch VOD that works without a login.
- Run the VOD with
mpv --no-config. - If extraction fails, run
yt-dlp -Fon the same URL. - If extraction succeeds, test
--hwdec=noonly when rendering fails. - If playback buffers, select a lower available quality before tuning cache options.
- If restricted content alone fails, test authorized cookies separately.
- Restore your configuration, profiles, scripts, shaders, and bindings one group at a time.
Keep the URL and test conditions consistent. Success means you can reproduce both the failure and the fix by changing one variable. At that point, make the smallest permanent edit and stop troubleshooting.
7. Quick Fix Checklist
- Test a public Twitch VOD instead of beginning with a live or restricted stream.
- Run
mpv --no-config "TWITCH_URL"from a visible terminal. - Confirm
yt-dlp --versionandyt-dlp -F "TWITCH_URL"work. - Update yt-dlp through its official method or a trusted package manager.
- Remove custom
ytdl-formatrules and test automatic format selection. - Use a lower available quality if high-bitrate playback repeatedly buffers.
- Check PATH when mpv cannot find yt-dlp from a graphical launcher.
- Use cookies only for content your account is authorized to access.
- Test
--hwdec=noif extraction succeeds but video is black or frozen. - Test
--no-audioonly to isolate an audio-backend failure. - Inspect profiles, scripts, input bindings, track options, shaders, and HDR settings individually.
- Create a sanitized log with
--msg-leveland--log-file. - Stop changing settings as soon as one controlled fix produces stable playback.
8. Frequently Asked Questions
8.1 Does mpv need yt-dlp to play Twitch?
For normal Twitch webpage URLs, mpv commonly relies on its ytdl hook and an external supported extractor such as yt-dlp. A direct media URL may not require extraction, but Twitch media URLs are temporary and should not be treated as permanent configuration values. If local files play while Twitch pages do not, verify yt-dlp recognition and PATH first.
8.2 Why does a Twitch stream work in my browser but not in mpv?
The browser and mpv do not use the same playback path. The browser handles Twitch's website logic, authentication, and player integration. mpv asks an extractor to resolve the page and then plays the resulting media. An outdated extractor, unavailable format, missing cookies, blocked media host, or launcher PATH difference can therefore affect only mpv.
8.3 How can I reduce Twitch live-stream buffering?
First choose a lower format that yt-dlp confirms is available. This reduces sustained bandwidth and decoding requirements. Then check for VPN, proxy, Wi-Fi, DNS, or firewall problems. Cache adjustments may help short network fluctuations, but they do not solve insufficient continuous bandwidth. Stable lower-quality playback is the clearest sign that bitrate is involved.
8.4 Why does only the highest Twitch quality fail?
The source format may have a higher bitrate or frame rate than the network, decoder, or GPU path can sustain. It may also expose a hardware-decoding or shader issue. Test an available 720p format, then test the source format with --hwdec=no. If lower quality is stable, stop changing yt-dlp unless its format list is incorrect.
8.5 Can cookies fix subscriber-only or restricted Twitch content?
Cookies can allow yt-dlp to use an authenticated session for content the account is permitted to view. They cannot make deleted, unavailable, region-blocked, or unauthorized content playable. Test a public VOD first, follow yt-dlp's official cookie guidance, and protect cookie data as a sensitive credential.
8.6 Why do Twitch screenshots fail even though playback works?
If video is visible but a screenshot command fails, Twitch extraction is no longer the main problem. Check the configured screenshot directory, filename template, write permissions, free space, and input binding. Test mpv's default screenshot behavior without configuration. Success means an image file is created in a writable location, after which you can restore the custom path carefully.