- Test conditional profiles safely with a temporary mpv configuration
- Fix property timing, string comparisons, syntax, and conflicting settings
- Use show-profile, logs, track inspection, and clean playback tests
- Confirm the Symptom With a Minimal Clean mpv Test
- Check the Conditional Profile Directly
- Check the Option Applied by the Profile
- Rule Out Paths, Permissions, External Tools, and Platform Limits
- Use mpv Diagnostics Instead of Guessing
- Run a Clean Temporary Test Before Changing More Options
- Quick Fix Checklist
- Frequently Asked Questions
When an mpv conditional auto profile does not trigger, the problem usually falls into one of four categories: mpv is reading a different configuration file than expected, the profile-cond expression is invalid or never becomes true, the condition references the wrong property, or another option, profile, or script overrides the result. The fastest solution is not to change every playback setting. First prove that a tiny conditional profile works, then inspect the real condition and add complexity back one piece at a time. The steps below apply to Windows, Linux, and macOS, including setups used for local files, subtitles, HDR video, online URLs, playlists, network streams, hardware decoding, shaders, scripts, yt-dlp, IPC, and high-bitrate media.

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 Test
Before editing your main configuration, confirm that the issue is specifically a conditional profile failure. A profile may actually be applying while its visible effect is overridden later, unsupported by the selected output, or irrelevant to the current file.
1.1 Start mpv without the normal configuration
Open a terminal or command prompt and play a known local file with configuration loading disabled:
mpv --no-config "path/to/test-video.mkv"
On Windows, use a quoted path such as:
mpv.exe --no-config "C:\Videos\test-video.mkv"
This establishes a clean playback baseline. It does not test your profile because --no-config prevents the normal configuration from loading. It tells you whether a broader mpv, media-file, output-driver, or operating-system problem exists.
Success means the test file opens and plays normally. If it does not, fix that underlying mpv player issue before diagnosing auto profiles. A conditional profile cannot repair an unreadable file, unavailable output driver, missing external tool, or inaccessible stream.
1.2 Create a temporary configuration directory
Create a new temporary folder and place an mpv.conf file inside it. Do not delete or rename your normal configuration folder. Point mpv at the temporary folder with --config-dir.
Use this minimal configuration:
[conditional-test]
profile-cond=width >= 1
osd-playing-msg=CONDITIONAL PROFILE APPLIED
Then run:
mpv --config-dir="path/to/temporary-config" "path/to/test-video.mkv"
Use a real video file with a decoded video track. The width property is unavailable until mpv knows the video dimensions, so the condition may become true after the file is loaded rather than during initial program startup.
Success means the on-screen message says CONDITIONAL PROFILE APPLIED. Stop changing global settings at this point. You have proved that your mpv build can evaluate a conditional profile and that the temporary config is being read.
If the message does not appear, run the same test from a terminal with verbose logging, check the temporary folder path, and verify that the file is actually named mpv.conf rather than mpv.conf.txt.
2. Check the Conditional Profile Directly
A conditional profile consists of a named profile section, a profile-cond expression, and one or more options to apply. Diagnose these parts separately.
2.1 Verify the profile-cond syntax
A basic conditional profile has this shape:
[large-video]
profile-cond=width >= 3840
deband=yes
The condition is an expression evaluated by mpv. It is not written as a shell command, JSON object, or traditional INI comparison. Common mistakes include using a single equals sign for comparison, adding shell-style brackets, misspelling a property, or omitting quotes around strings.
For equality comparisons, use ==:
profile-cond=video_format == "hevc"
For inequality, use ~= rather than !=:
profile-cond=video_format ~= "h264"
Keep the first test simple. Replace a complicated expression temporarily with a condition such as width >= 1. If that works, the profile mechanism is healthy and the original expression is the problem.
2.2 Use the correct property name
mpv options and mpv properties are related, but they are not interchangeable. An option controls behavior, while a property reports or changes current player state. A condition must use a property that exists in the context where mpv evaluates it.
For example, width and height describe the current video dimensions. They are suitable for resolution-based profiles after video parameters become available. A filename condition should inspect a filename or path-related property, not a video-format property. An audio-only file may never provide meaningful video dimensions.
Property names containing characters that cannot be used directly in an expression may require property-access syntax supported by mpv's conditional-profile evaluator. Check the property list for your installed mpv version instead of guessing a converted name. Property availability and naming are more important than whether an option with a similar name exists.
2.3 Account for property timing
Conditional profiles are evaluated against dynamic player properties. Some properties exist when mpv starts, while others appear only after opening a file, selecting tracks, probing the media, initializing decoding, or creating an output.
This timing matters for:
- Video dimensions, pixel format, codec, frame rate, and HDR metadata
- Audio codec, channel layout, sample rate, and selected audio track
- Subtitle selection and subtitle-track metadata
- Stream metadata supplied after a network connection opens
- Properties derived from playlists, redirects, or yt-dlp results
If a condition handles a potentially unavailable property, guard against a missing value before comparing it. A simple existence check followed by a comparison is safer than assuming the property is immediately populated. The exact expression should match the property type documented by mpv.
Success means the profile begins applying when the relevant media information becomes available. Once the expected option is active, stop changing unrelated startup or output settings.
2.4 Treat strings as exact values
String comparisons are case-sensitive and must use quoted string literals. Do not assume that a displayed label, file extension, codec family, or track title exactly matches the property's internal value.
First inspect the actual value. Then compare it directly:
profile-cond=video_format == "hevc"
Filename matching needs extra care because dots and other characters can have special meaning in pattern operations. Windows paths also contain backslashes, which can interact with configuration or expression escaping. When troubleshooting, test a straightforward equality or simple suffix condition before introducing a complex pattern.
For protocol or URL conditions, determine whether the property contains the original URL, a redirected URL, a local path, or a resolved media URL. yt-dlp may transform an input page URL into one or more direct media streams, so the value visible later in playback may not resemble the original command-line argument.
3. Check the Option Applied by the Profile
A true condition does not guarantee a visible result. The option inside the profile may be unsupported, overridden, delayed, or unrelated to the active track.
3.1 Test with an observable harmless option
Temporarily add an obvious indicator such as:
osd-playing-msg=AUTO PROFILE APPLIED
If the message appears but the intended behavior does not, the condition is working. Focus on the option being applied rather than rewriting profile-cond.
You can also choose an option whose current value is easy to inspect through the console or IPC. Avoid using a subtle shader, color-management adjustment, or decoder preference as the only initial signal because its effect can depend on the renderer and media.
3.2 Look for later overrides
mpv settings may come from command-line arguments, mpv.conf, file-specific configurations, named profiles, scripts, input bindings, and runtime IPC commands. A conditional profile can apply correctly and then appear ineffective because another source changes the same option.
Check for duplicate assignments in:
- The global
mpv.conffile - Profiles included later in the configuration
- Command-line options used by a launcher or desktop shortcut
- File-specific configuration files, if enabled
- Lua or JavaScript scripts that observe file-loading events
input.confbindings that cycle or reset the option- Front ends that send options through IPC
Temporarily remove only the suspected duplicate option, not the entire configuration folder. Success means the profile's value remains active after loading completes.
3.3 Check profile restoration behavior
Conditional profiles can stop matching as properties change between files or playback states. If a profile modifies an option while one file is active, restoration behavior determines what happens when the condition becomes false. Review profile-restore in the manual for the mpv version you are running.
This is especially relevant when navigating a playlist containing mixed resolutions, switching tracks, or moving between audio-only and video entries. A profile that appears correct for the first item but wrong for the next may have a restoration or competing-profile issue rather than a condition that never triggers.
3.4 Match the setting to the active media path
Confirm that the affected component is actually active:
- A subtitle option needs a loaded or selected subtitle track where applicable
- An audio-track condition needs an active audio track with the expected metadata
- A video-output or shader setting needs video output and a compatible rendering path
- A hardware-decoding setting still depends on codec, profile, bit depth, driver, and hardware support
- An HDR-related setting requires relevant video metadata and an output path that handles it
- A screenshot setting may depend on a writable destination and a supported image format
- A yt-dlp-related option matters only when mpv invokes yt-dlp for the input
Inspect the track list and current properties instead of inferring them from the filename. A file named “HDR” may not contain usable HDR metadata, and a file with an audio-language label may expose a different track language code.
4. Rule Out Paths, Permissions, External Tools, and Platform Limits
Operating-system problems rarely change whether a simple numeric condition is true, but they can prevent the profile's intended action from succeeding.
4.1 Confirm the active configuration location
mpv uses platform-specific configuration locations, and portable installations or launchers can select different directories. A common reason for mpv auto profile not triggering is editing a valid configuration file that the running instance never reads.
Run mpv from a terminal and review startup output. Use a deliberate syntax error only in a temporary test file if necessary, never in the main config. A safer method is to add an unmistakable startup option or point mpv explicitly to a temporary directory with --config-dir.
On Windows, verify file extensions in Explorer. On Linux and macOS, check filename case and ownership. Ensure the user launching mpv can read the config, scripts, shaders, and included files.
4.2 Check shell quoting separately from config syntax
A condition entered in mpv.conf is parsed differently from an option passed through PowerShell, Command Prompt, Bash, Zsh, a desktop launcher, or another application. Quotes may be removed or interpreted by the shell before mpv sees them.
When testing a complicated string condition, put it in a temporary mpv.conf rather than squeezing it into a command line. This removes one layer of quoting. If the config-file version works, the earlier problem was likely shell escaping rather than mpv's evaluator.
4.3 Verify external dependencies and network access
If the profile activates only for online media, separate profile matching from stream acquisition. Test the URL without your configuration, confirm network access, and verify that mpv can locate the intended yt-dlp executable when one is required. Do not download random replacement binaries or codec packs.
For network streams, redirects and manifests may change the properties visible after loading. Authentication, expiration, unavailable formats, TLS errors, or blocked access can prevent mpv from reaching the stage where media properties exist.
For screenshot profiles, verify that the target directory exists and is writable. For shader profiles, verify that the shader path is correct and readable. For hardware decoding, test software decoding as a diagnostic step. If software decoding works but the profile's hardware path fails, investigate the GPU driver, codec support, display server, and selected video output.

5. Use mpv Diagnostics Instead of Guessing
mpv's terminal output and logs can distinguish a missing profile from an applied profile whose option fails later.
5.1 Inspect a named profile with show-profile
Use:
mpv --show-profile=profile-name
Replace profile-name with the exact text inside the profile's brackets. This prints the options associated with that named profile. It is useful for spotting misspelled profile names, unexpected inherited settings, or malformed option assignments.
--show-profile does not prove that a condition became true during playback. It shows what the profile contains. Combine it with playback logs or an observable test option.
5.2 Generate a focused log
Run a known test file with verbose terminal messages and a log file:
mpv --msg-level=all=v --log-file=mpv-profile-test.log "path/to/test-video.mkv"
Reproduce the problem once, close mpv normally, and search the log for the profile name, profile-cond, parse errors, unknown properties, unknown options, script messages, decoder selection, and output initialization.
Keep logs private if they contain local filenames, usernames, URLs, cookies, tokens, or network details. A successful diagnosis identifies either a condition evaluation problem or a later failure connected to the option being applied.
5.3 Inspect properties and tracks
Use mpv's console, IPC property queries, terminal status output, or a trusted script you already have installed to inspect the exact property used by the condition. For media-dependent rules, also inspect the track list.
The built-in stats overlay is useful for confirming active decoding and rendering information. It can help establish whether hardware decoding, a particular video format, or the expected output path is active. However, the overlay is not a complete conditional-profile debugger, so use it alongside logs and property inspection.
For subtitle and audio rules, verify the selected track rather than merely confirming that such a track exists. For playlist entries, repeat the inspection after changing entries because the relevant property values can change.
6. Run a Clean Temporary Test Before Changing More Options
Once the minimal condition works, rebuild the real profile in controlled stages.
- Copy only the profile header and one simple condition into the temporary
mpv.conf. - Add an on-screen confirmation option and test one known local file.
- Replace the simple condition with the real property comparison.
- Inspect the property's actual value if the profile stops applying.
- Add the intended option while keeping the confirmation message.
- Add compound conditions one clause at a time.
- Test one different file that should not match.
- Move the corrected profile into the normal config and check for overrides.
For a compound expression, validate each part independently before combining them. If a rule is intended for large HEVC video, first test the resolution condition alone, then the codec condition alone, and only then combine them. This reveals whether the failure is caused by a missing property, an unexpected string, or the logical expression.
Success has two parts: a matching file applies the intended option, and a nonmatching file does not. When both tests pass, stop modifying settings. Additional changes increase the chance of introducing a separate mpv troubleshooting problem.
7. Quick Fix Checklist
- Confirm that mpv reads the configuration file you edited
- Test with a temporary
--config-dirinstead of deleting your normal config - Replace the real condition temporarily with
width >= 1 - Use
==for equality and quote string values - Verify the property name in the manual for your installed version
- Allow for properties that appear only after media probing or track selection
- Inspect actual string values instead of guessing codec, language, or path labels
- Add an obvious on-screen message to prove that the profile applies
- Run
--show-profile=nameto inspect the named profile's contents - Create a verbose log with
--msg-level=all=vand--log-file - Check command-line options, scripts, IPC, and file-specific configs for overrides
- Verify active tracks, decoder state, video output, and external-tool availability
- Test matching and nonmatching files before restoring the full configuration
8. Frequently Asked Questions
8.1 Why does the profile work for local files but not URLs?
Online inputs may be redirected or resolved by yt-dlp into different media URLs. Properties based on filename, path, protocol, or metadata may therefore contain values different from the original URL. Confirm that the stream opens, inspect the property after loading, and simplify the condition before adding URL patterns.
8.2 Why does a resolution condition fail at mpv startup?
Video dimensions are media properties. They may not exist until mpv opens and probes a video track. Test with a known local video, keep the condition tolerant of unavailable values, and check whether it becomes true after loading. Audio-only input will not satisfy a video-width condition.
8.3 Does show-profile prove that the conditional profile triggered?
No. --show-profile displays the options contained in a named profile. It helps verify profile definition and inheritance, but it does not demonstrate that profile-cond evaluated to true during playback. Use an observable option, property inspection, or verbose logs for that confirmation.
8.4 Why does the log show the profile but the setting still looks unchanged?
The setting may be overridden later, unsupported by the active output path, or irrelevant to the selected track. Check command-line arguments, scripts, file-specific configuration, input bindings, and IPC clients. Then verify that the required subtitle, audio, video, decoder, renderer, or external tool is active.
8.5 Should I use no-config to fix the profile?
Use --no-config as a diagnostic baseline, not as the final profile test. It proves whether mpv can play the input without custom settings. To test a conditional profile cleanly, use a temporary directory with --config-dir and a minimal mpv.conf.
8.6 When should I stop troubleshooting?
Stop when a known matching file applies the intended option, a known nonmatching file does not, and the result remains correct in your normal configuration. Do not continue changing hardware decoding, output drivers, scripts, or operating-system settings after the conditional profile behaves correctly.