Settings
Where Snipdeck stores its settings and data, and the settings.json keys you can edit to change its behavior.
Snipdeck keeps its configuration in a plain JSON file that is created automatically the first time you run the app. There is no settings window yet, so you change behavior by editing this file and restarting Snipdeck. This page documents where everything lives and which keys you can safely change.
How settings work
On first run, Snipdeck writes a settings.json with sensible defaults. To change a setting:
- Quit Snipdeck (right-click the tray icon and exit).
- Open
settings.jsonin any text editor (see File locations below). - Edit a value, keeping it valid JSON, and save.
- Start Snipdeck again. Settings are read once at startup.
A few settings are also written back by the app itself — for example, your last-used translate target and your chosen UI language are persisted when you change them from the toolbar or the translate popup. Editing those by hand works too; just expect Snipdeck to overwrite them when you change them in the UI.
Note: Snipdeck only reads
settings.jsonat startup. Changes you make while it is running have no effect until you restart, and may be overwritten on exit.
Warning:
settings.jsonmust remain valid JSON. If the file is missing or cannot be parsed, Snipdeck silently falls back to the built-in defaults rather than refusing to start. Unknown keys are ignored, and any key you omit falls back to its default.
File locations
Snipdeck splits its files between your roaming config folder, your local app-data folder, and your Pictures folder.
| Path | Contents |
|---|---|
%APPDATA%\Snipdeck\settings.json | Your user settings (the keys documented below). |
%LOCALAPPDATA%\Snipdeck\snips.db | The gallery database (SQLite, with full-text search index). |
%LOCALAPPDATA%\Snipdeck\state.json | Window/session state. |
%LOCALAPPDATA%\Snipdeck\cache\images\ | Full-resolution snip images. |
%LOCALAPPDATA%\Snipdeck\cache\thumbs\ | Gallery thumbnails. |
%USERPROFILE%\Pictures\Snipdeck\ | Default folder for the Save action. |
Note:
%APPDATA%is your roaming config directory (typicallyC:\Users\<you>\AppData\Roaming) and%LOCALAPPDATA%is your local app-data directory (typicallyC:\Users\<you>\AppData\Local). Paste either into the File Explorer address bar to jump straight there.
Tip: The
cache\folder andsnips.dbtogether hold every snip you have captured. Back them up (or move them between machines) as a set — the database references images by their location in the cache.
If you used a much older build of Snipdeck, its files may live under a Snipper folder instead. Snipdeck migrates that folder to Snipdeck automatically on startup, so you normally never see it.
settings.json keys
Below are the keys you are most likely to want to change. Each is optional in the file — if you delete a key, Snipdeck uses the default shown.
| Key | Default | Meaning |
|---|---|---|
language | "auto" | UI language. "auto" follows your OS locale; otherwise a supported code such as "en", "de", or "zh-CN". See Languages. |
dark_theme | true | true for the dark shell, false for the light shell. |
upload_service | "catbox" | Which image host the Upload action uses: "catbox" or "imgur". Any unrecognized value falls back to catbox. |
imgur_client_id | "" | Your Imgur Client-ID. Required only when upload_service is "imgur". |
translate_target | "en" | Default target language for OCR + Translate. Updated when you pick a language in the translate popup. |
translate_favs | ["en","es","fr","de","it","pt","ru","ar"] | Favorite languages shown as quick-pick pills in the translate popup. Editable from the popup; never empty. |
default_format | "png" | Pre-filled file extension for the Save dialog: "png", "jpg", or "bmp". This only governs the default extension offered when saving; it does not restrict the formats Snipdeck can open. |
save_dir | (Pictures\Snipdeck) | Default folder for the Save action. A path string; defaults to your Pictures\Snipdeck folder. |
include_border_on_save | false | When true, the capture border is baked into saved image files. |
include_border_on_clipboard | false | When true, the capture border is baked into images copied to the clipboard. |
freeze_screen_during_snip | false | When true, the selection drag happens over a frozen snapshot of the screen (freeze-first). |
floating_in_taskbar | false | When true, floating snips appear as their own taskbar entries. |
border_color_active | [r,g,b] | RGB color of the border on the active/focused snip. |
border_color_inactive | [r,g,b] | RGB color of the border on inactive snips. |
selection_tint | [r,g,b,a] | RGBA tint used to dim the screen outside the current selection. |
Values are case-sensitive and must match the strings above exactly. Language codes use the same form Snipdeck shows in the toolbar globe menu (for example zh-CN, not zh_cn).
Tip:
translate_targetandtranslate_favsare the easiest to manage from the app itself: open OCR + Translate, pick or star a language, and Snipdeck writes the change back tosettings.jsonfor you. See OCR + translate.
Global hotkeys
The five global hotkeys are also stored in settings.json as plain strings and can be hand-edited. Each value is a key combination such as "CtrlShift+A".
| Key | Default | Action |
|---|---|---|
hotkey_snip | "CtrlShift+A" | Start a new floating snip. |
hotkey_snip_clip | "CtrlShift+C" | Snip and copy it to the clipboard. |
hotkey_clip_only | "CtrlShift+X" | Snip to the clipboard only (not saved to the gallery). |
hotkey_toggle_visibility | "WinAlt+H" | Show or hide all floating snips at once. |
hotkey_gallery | "CtrlShift+G" | Open the gallery / main window. |
Other keys
settings.json also contains an internal migration flag that is managed by the app. Apart from that flag, every key in the file — including the save directory, capture-border colors, the selection-dim tint, the border-baking toggles, the freeze-first toggle, the taskbar toggle, and the hotkeys above — is hand-editable and documented in the tables on this page.
Upload services
The Upload action (from a snip’s Share menu) sends the image to a public image host so you can paste a link. Uploads are always opt-in and confirmed by an explicit consent dialog before anything leaves your machine — see Privacy & security.
Snipdeck supports two hosts, selected with the upload_service key:
| Service | Account / key needed | Notes |
|---|---|---|
| catbox.moe (default) | None | No account or key. Anonymous uploads, however, cannot be deleted by you afterwards. |
| Imgur | A free Client-ID | Set upload_service to "imgur" and paste your Client-ID into imgur_client_id. |
In every case the image is unlisted, but anyone who has the link can open it, and it is not encrypted. Do not upload sensitive content to a public-by-link host.
Setting up Imgur
To use Imgur instead of catbox.moe:
- Sign in at imgur.com and go to Settings → Applications → Register an application.
- Choose OAuth 2 authorization without a callback URL and register. You do not need a login or Client-Secret for anonymous uploads — only the Client-ID.
- Copy the Client-ID Imgur gives you.
- In
settings.json, set:
{
"upload_service": "imgur",
"imgur_client_id": "YOUR_CLIENT_ID_HERE"
}
- Save the file and restart Snipdeck.
Note: If
upload_serviceis"imgur"butimgur_client_idis empty, Imgur uploads cannot authenticate. Either fill in the Client-ID or switchupload_serviceback to"catbox".
Example settings.json
A minimal file that uses the light theme, German UI, and Imgur uploads might look like this:
{
"language": "de",
"dark_theme": false,
"upload_service": "imgur",
"imgur_client_id": "abc123def456",
"translate_target": "de",
"translate_favs": ["de", "en", "fr", "tr"],
"default_format": "jpg"
}
Any key you leave out simply uses its default, so you only need to list the settings you actually want to change.
See also
- Sharing & export — the Upload, Mail, and Share actions that use these settings.
- Languages — supported UI language codes and how
languageis detected. - OCR + translate — how
translate_targetandtranslate_favsare used. - Privacy & security — what stays local and the upload consent dialog.