Repository navigation
Settings File Logs and Command Line
ShadePlay guide › Advanced settings
Where ShadePlay keeps its settings and logs, every key in the settings file, and the command-line options.
Everything lives in %APPDATA%\ShadePlay (paste that into the File Explorer address bar):
| File or folder | What it is |
|---|---|
config.json |
Your settings. The advanced tray menu's Open settings file opens it in your text editor. |
config.json.bak |
The previous good version, kept at every save. |
config.json.corrupt |
A copy of a settings file that couldn't be read (see below). |
logs\shadeplay.log |
The tray app's log. |
logs\engine.log |
The recorder's log. |
logs\youtube.log, logs\encoder-test.log
|
The YouTube copy helper's and the encoder test's logs, when they have run. |
logs\update.log |
Update events, one line each with the time: failed checks, failed or postponed updates, automatic updates, and updates the installer didn't finish. Only the last 50 lines are kept. |
dumps\ |
Crash reports (engine-<date>-<time>.dmp and similar), only after a crash. The newest 5 of each kind are kept. |
youtube_copies.json |
The list of YouTube copies the helper made, so it can delete them later. |
A ShadePlay.exe run without Setup also unpacks its FFmpeg into %LOCALAPPDATA%\ShadePlay\ffmpeg
(Running ShadePlay.exe on its own).
- Each log except
update.logis rotated at 2 MB: the old part becomesshadeplay.1.logand so on, and 5 old parts are kept. - Read a log before you share it: file paths in it contain your Windows user name, and it names clips and games. Don't attach crash dumps to a public issue: they can hold pieces of what was in the program's memory.
- Power users can move the whole folder with the environment variable
SHADEPLAY_HOME, or per start with--data-dir.
- ShadePlay writes
config.jsonin one step (a temporary file, then a rename), so a crash or power cut never leaves half a file. The old version is kept asconfig.json.bak. - You can edit it while ShadePlay runs. ShadePlay notices the change and applies it within a few seconds, and an open settings window shows the new values.
- A value that is out of range or misspelled falls back to its default, with a line in
shadeplay.log. Unknown keys are ignored, with a line in the log. -
A file that isn't valid JSON is not used: ShadePlay keeps a copy as
config.json.corrupt, uses the previous settings fromconfig.json.bak(or the defaults), and shows⚠ The settings file has an error – the previous settings are used. Fix the file (the log names the line) or delete it; the fix is picked up by itself. ShadePlay doesn't overwrite your broken file until you change a setting. - The file can be UTF-8 (with or without a byte-order mark) or UTF-16, so Notepad and PowerShell both work.
- Keys you leave out get their default.
Values are JSON: numbers, true / false, and strings in quotes. Nested keys are written as video.fps here and as
"video": {"fps": 240} in the file.
| Key | Default | Values | In the window |
|---|---|---|---|
version |
2 |
written by ShadePlay | (file only) |
advanced_ui |
false |
true / false
|
Show advanced settings |
hotkey |
"F10" |
a key or combination, such as "Alt+F10" (The save hotkey) |
Save hotkey |
replay_seconds |
60 |
5 to 600 | Buffer length |
clips_dir |
"" |
a folder; empty = Videos\ShadePlay
|
Clips folder |
autostart |
true |
Start with Windows | |
sounds |
true |
Play sounds | |
notifications |
true |
Show notifications | |
faststart |
true |
Fast start | |
post_save_hook |
"" |
a command line | Run this command |
clip_info_files |
false |
true writes a .json file next to each clip (always written while post_save_hook is set) |
Write a clip info file (.json) next to each clip |
game_names |
{} |
program file name → clip name, such as {"overwatch.exe": "Overwatch 2"}
|
Clip names |
| Key | Default | Values | In the window |
|---|---|---|---|
video.codec |
"av1" |
"av1", "hevc", "h264"
|
Codec |
video.fps |
240 |
10 to 500 | Frame rate |
video.quality |
"default" |
"lite", "default", "high", "insane", "bitrate"
|
Quality |
video.bitrate_mbps |
150 |
5 to 2000; used only with "bitrate"
|
Fixed bitrate |
video.hdr_mode |
"auto" |
"auto" (HDR when Windows HDR is on), "sdr"
|
HDR |
video.ten_bit_sdr |
true |
10-bit SDR clips | |
video.draw_cursor |
true |
Record the mouse cursor | |
video.monitor |
"primary" |
"primary" or a Windows display name such as "\\\\.\\DISPLAY2"
|
Monitor |
video.gpu_priority |
"high" |
"high", "normal"
|
GPU priority |
video.preset |
0 |
0 (auto) or 1 (fastest) to 7 (best quality) | Encoder preset |
video.gop_seconds |
1 |
0.25 to 10 | Keyframe interval |
video.spatial_aq |
false |
Spatial AQ |
| Key | Default | Values | In the window |
|---|---|---|---|
audio.mix.enabled, audio.discord.enabled, audio.mic.enabled
|
true |
the track switches; Record my mic | |
audio.<track>.gain_db |
0 |
−60 to +24 | Gain (dB) |
audio.<track>.offset_ms |
0 |
−1000 to +1000 | Offset (ms) |
audio.<track>.bitrate_kbps |
Mix 320, Desktop, Game and Discord 256, Mic 160
|
32 to 512 | Bitrate (kb/s) |
audio.desktop_device |
"" |
a device ID; empty = the Windows default output | What you listen on / Desktop device |
audio.mic_device |
"" |
a device ID; empty = the Windows default microphone | Microphone |
audio.codec |
"aac" |
"aac", "opus", "flac"
|
Audio codec |
audio.discord_latency_ms |
-20 |
−1000 to +1000 | Latency correction |
audio.endpoint_denylist |
[] |
parts of device names | Never record |
audio.discord_exes |
["Discord.exe", "DiscordPTB.exe", "DiscordCanary.exe"] |
program file names | Discord programs |
<track> is mix, desktop, game, discord or mic.
| Key | Default | Values | What it does |
|---|---|---|---|
games.always |
[] |
program file names | Programs that always count as a game. |
games.never |
a list of shells, browsers, Discord, launchers, players and tools | program file names | Programs that never count as a game. A list with entries replaces the default list, so copy the default entries you want to keep. |
| Key | Default | Values | In the window |
|---|---|---|---|
youtube.enabled |
false |
Offer "Upload to YouTube" after each save | |
youtube.upload_file |
"original" |
"original", "copy"
|
What to upload |
youtube.title_template |
"{game} {date} {time}" |
up to 200 characters | Title |
youtube.copy_fps |
0 |
0 (keep the clip's) or 24 to 60 | Frame rate |
youtube.copy_codec |
"auto" |
"auto", "av1", "hevc"
|
Codec |
youtube.prepare_automatically |
false |
Prepare the copy right after each save | |
youtube.keep_days |
7 |
0 (keep) to 365 | Delete copies after |
youtube.copies_dir |
"" |
a full path; empty = YouTube uploads in the clips folder |
Copies folder |
| Key | Default | Values | In the window |
|---|---|---|---|
updates.check |
true |
Check for updates (asks GitHub once a day) | |
updates.auto |
false |
only the value true switches it on |
Install updates automatically |
updates.skip |
"" |
a version such as "0.2.0"; a newer version is offered again |
Skip this version |
ShadePlay also keeps three notes of its own there: updates.auto_asked (the bar's question about automatic updates
was answered), updates.auto_done (an automatic update it has just started) and updates.auto_failed (a version whose
automatic update failed, so it isn't tried automatically again). Leave them as they are.
ShadePlay always records, so these keys from older files are read and ignored: paused, audio.desktop.enabled,
audio.game.enabled and games.enabled.
Choose Exit in the tray menu, delete config.json, then start ShadePlay again. It starts with the defaults and
asks for the F10 check again, as on its first start.
ShadePlay.exe is in %LOCALAPPDATA%\Programs\ShadePlay (or wherever you put a copy that runs on its own). It is a
Windows program, so in a Command Prompt use
start /wait ShadePlay.exe ... when you need the command to wait for it.
For everyone:
| Option | What it does |
|---|---|
| (none) | Starts ShadePlay in the tray; if it is running already, shows the ShadePlay is running notification. |
--settings |
Opens the settings window of the running ShadePlay; starts ShadePlay first if it isn't running. |
--save |
Asks the running ShadePlay to save a clip. Does nothing if ShadePlay isn't running (exit code 1). |
--quit |
Asks the running ShadePlay to exit and waits until it has (clips being written are finished first). |
--encoder-test |
Tests the graphics card's encoders: Testing AMD and Intel graphics. |
--log-level debug|info|warn|error |
How much goes into the logs (default info). |
For testing a second copy next to the installed one:
| Option | What it does |
|---|---|
--instance-name NAME |
Its own name (letters, digits, _ and -, up to 32), so it doesn't talk to the installed copy. --quit, --save and --settings need the same name to reach it. |
--data-dir DIR |
Keeps its settings and logs in DIR. |
A copy started with either of them never touches Start with Windows and never installs updates automatically; one with
--instance-name doesn't check for updates at all. Developer options such as --selftest are in
Building ShadePlay. ShadePlay uses --engine, --youtube-copy, --autostart and
--uninstall-cleanup internally, and Setup starts it with --update-failed or --update-incomplete after an update
that didn't finish; don't use those yourself.
| Variable | What it does |
|---|---|
SHADEPLAY_HOME |
Moves the settings and logs folder. |
SHADEPLAY_OFFLINE=1 |
Blocks every network request: the update check and update downloads. |
SHADEPLAY_RUNTIME_DIR |
Where a ShadePlay.exe without FFmpeg DLLs next to it unpacks its built-in FFmpeg, instead of %LOCALAPPDATA%\ShadePlay\ffmpeg (for test copies; the uninstaller then cleans this folder instead). |
SHADEPLAY_NO_SHELL=1 |
ShadePlay opens no browser and no File Explorer window, doesn't use the clipboard and doesn't install updates automatically (for automated tests). |
SHADEPLAY_UPDATE_TEST=1 with SHADEPLAY_UPDATE_API=http://127.0.0.1:<port>/…
|
For developers: rehearses an update against a fake release on this PC. Both are needed, and only 127.0.0.1 is accepted; the update bar then ends with [update test mode]. Set them in one console only, never with setx (Building ShadePlay). |
Next: Graphics cards and encoders
See also: Advanced settings overview · Privacy · Feedback and bug reports
ShadePlay by baddo & Claude - Download - Report a problem or share feedback - Source - MIT License
1. Getting started
2. Your clips
3. Using ShadePlay
- The settings window
- The save hotkey
- Quality, frame rate and buffer length
- Sound and microphone
- The tray menu and notifications
- Start with Windows, updates and uninstalling
4. Advanced settings
- Advanced settings overview
- Video
- Audio
- Games and clip names
- Saving and the after-save command
- YouTube helper
- Status page
- Settings file, logs and command line
5. Your hardware
- Graphics cards and encoders
- Testing AMD and Intel graphics
- Monitors and displays
- Performance and memory
6. Help
7. Behind the scenes