Configuration Guide: VinylKit
You can check the installed version at any time with:
# Bash / PowerShell
vinylkit --version
VinylKit settings are stored in a TOML file. You can view your current configuration (including version) at any time with:
# Bash / PowerShell
vinylkit config show
To update a setting, use the set command:
# Bash / PowerShell
vinylkit config set <KEY> <VALUE>
[!TIP]
Runvinylkit config set -hto see all valid keys and examples directly in your terminal.
General Settings
library_root
The final destination for your organized music library.
Bash:
- Example:
vinylkit config set library_root ~/Music/VinylLibrary
PowerShell:
- Example:
vinylkit config set library_root "D:\Music\VinylLibrary"
recordings_root
The "Inbox" folder where you put fresh vinyl rips. If set, commands like scan and tag will default to this path if no other path is provided.
Bash:
- Example:
vinylkit config set recordings_root ~/Recordings/Vinyl
PowerShell:
- Example:
vinylkit config set recordings_root "C:\Temp\RecordedVinyl"
auto_move
Automatically move files to your library after successful tagging and renaming without asking for confirmation. Works well with --batch for fully hands-free processing. When this config setting is true, the --auto-move CLI flag is not needed.
- Default:
false - Example:
vinylkit config set auto_move true - With batch:
vinylkit tag --batch --auto-move - Rename only:
vinylkit tag --batch --no-move(tag and rename in place, skip library move)
--batch (CLI flag)
Batch mode for the tag command. Iterates subfolders of the given path, extracts Discogs IDs from folder names (bracket suffix like Album [12345], bare numeric like 67890, or URL-style prefix like 50224-Breeder-New-York), and tags each folder automatically. Combine with --interactive to interactively search for folders without IDs. Cannot be combined with --id, --search, --artist, or --album.
- Type: Flag (no value)
- Example:
vinylkit tag --batch --auto-move - With dry-run:
vinylkit tag --batch --dry-run
--no-move (CLI flag)
Rename files in place using the naming pattern but skip moving them to the library root. Mutually exclusive with --auto-move. When used without --batch, files are renamed in place within the source folder. When used with --batch, renames each subfolder to match the naming pattern.
- Type: Flag (no value)
- Example:
vinylkit tag --batch --no-move - Single release:
vinylkit tag --id 19983 --no-move
--delete-source (CLI flag)
Delete the source folder after all files have been successfully moved to the library. Only takes effect when files are actually moved (i.e. combined with --rename). If any files remain in the folder after the move, the folder is left intact.
- Type: Flag (no value)
- Example:
vinylkit tag --id 53088 --rename --auto-move --delete-source - With library-root:
vinylkit tag ./my-rips --id 53088 --rename --auto-move --library-root ~/Music --delete-source
Metadata & Tagging
naming_pattern
The template used to generate folder and file paths.
- Default:
{artist}/{year} - {album}/{track_number} - {title} - Placeholders:
{artist},{track_artist},{title},{full_title},{album},{year},{id}/{discogs_id},{track_number},{label},{catalogue_number},{side},{genre},{style},{country}. - Example:
vinylkit config set naming_pattern "{artist}/{year} - {album} [{label}]/{track_number} - {title}"
tag_mode
Controls how VinylKit writes metadata to files.
replace: (Default) Clears all existing tags and writes fresh data from Discogs.merge: Preserves existing tags and only adds/updates the fields provided by Discogs.- Example:
vinylkit config set tag_mode merge
track_numbering
Controls how track numbers are written to files. Essential for software like Roon.
numeric: (Default) Converts vinyl positions (A1, B1) to sequential numbers (1, 2, 3...). Recommended for Roon.original: Keeps the original Discogs position (e.g., "A1").per_side: Resets the count for each side (A1->1, B1->1). Best used withdisc_mapping per_side.- Example:
vinylkit config set track_numbering original
normalize_discogs_duplicates
Controls whether VinylKit automatically strips the Discogs disambiguation suffix (e.g., (2), (15)) from artist, label, and company names.
true: (Default) Automatically "clense" names to their natural form. Highly recommended for cleaner file paths and tags.false: Preserve the raw names exactly as they appear in the Discogs database.- Example:
vinylkit config set normalize_discogs_duplicates false
disc_mapping
Controls how vinyl sides are mapped to the DISCNUMBER tag.
physical: (Default) Intelligently groups sides. Pairs of sides (A/B, C/D) are mapped to Discs 1, 2, etc. Also respects numeric prefixes (e.g., "1A" maps to Disc 1). Best for multi-LP sets.single: All tracks are on Disc 1.per_side: Each vinyl side is treated as a separate disc (Side A=1, B=2...).original: Always disc 1 (Discogs format_quantity support is not yet implemented).- Example:
vinylkit config set disc_mapping single
info_filename
The name of the professional release information file generated in each album folder.
- Default:
release_info.txt - Example:
vinylkit config set info_filename "00_metadata.txt"
skip_tags
A comma-separated list of canonical tag names to exclude from being written to audio files. Useful for omitting metadata you don't want (e.g., Discogs-specific fields, genre, artwork embedding). See the Tag Mapping Reference for the full list of canonical names.
- Default: (empty — all tags are written)
- Example:
vinylkit config set skip_tags "genre,style,discogs_notes" - Clear:
vinylkit config set skip_tags "none"
Artwork Management
image_handling
Controls where the primary album cover is placed.
both: (Default) Embeds the image in the audio files AND saves it as a file.embed: Only embeds the image inside the audio files.save: Only saves the image as a standalone file.none: Disables artwork processing.- Example:
vinylkit config set image_handling embed
artwork_filename
The filename used for the primary cover image.
- Default:
folder.jpg - Example:
vinylkit config set artwork_filename "cover.jpg"
collect_all_artwork
Whether to download all images associated with a Discogs release.
true: Download all images (primary + secondary).false: (Default) Only download the primary cover.- Example:
vinylkit config set collect_all_artwork true
artwork_subdir
The name of the subdirectory where secondary images are stored if collect_all_artwork is enabled.
- Default:
Artwork - Example:
vinylkit config set artwork_subdir "Scans"
Safety & Backups
backup_enabled
Automatically creates a copy of your audio files before modification.
true: Enable backups.false: (Default) Disable backups.- Example:
vinylkit config set backup_enabled true
backup_dir
The directory where backups are stored. Required if backup_enabled is true.
Bash:
- Example:
vinylkit config set backup_dir ~/Backups/VinylKit
PowerShell:
- Example:
vinylkit config set backup_dir "C:\Backups\VinylKit"
Search & Discovery
search_page_size
Controls how many results are shown per page during interactive search.
- Default:
5 - Example:
vinylkit config set search_page_size 10
default_format
The default media format filter(s) applied to all searches. Multiple formats can be provided as a comma-separated list. Set to none to disable filtering.
- Default:
Vinyl - Example:
vinylkit config set default_format "Vinyl, CD"
Cache
Discogs API responses are cached locally as JSON files in the platform cache directory. This avoids redundant API calls when you re-tag or re-process a release you've already fetched.
| Platform | Default Cache Path |
|---|---|
| Windows | %LOCALAPPDATA%\vinylkit\vinylkit\Cache |
| macOS | ~/Library/Caches/vinylkit |
| Linux | ~/.cache/vinylkit |
cache_enabled
Controls whether Discogs API responses are cached locally.
- Default:
true - Example:
vinylkit config set cache_enabled false
cache list
Lists all cached releases with their Discogs ID, artist, album, and age.
- Example:
vinylkit cache list
cache clear
Deletes cached Discogs API responses. Prompts for confirmation by default (destructive operation).
--yes/-y: Skip the confirmation prompt.--id <INTEGER>: Clear only the cached response for a single Discogs Release ID instead of all cached releases. Bypasses the confirmation prompt since it targets a single release.
Examples:
# Interactive confirmation (default)
vinylkit cache clear
# Skip confirmation
vinylkit cache clear --yes
vinylkit cache clear -y
# Clear a single release
vinylkit cache clear --id 19983
# Clear a single release without confirmation
vinylkit cache clear --id 53088
Library Migration
These settings apply to the vinylkit migrate command.
delete_after_migration
Automatically delete the source folders after a successful migration.
- Default:
false - Example:
vinylkit config set delete_after_migration true
replace_artwork_on_migration
Whether to replace existing embedded artwork in audio files during migration with fresh images from Discogs. Artwork files (e.g. folder.jpg) are always saved per the image_handling config regardless of this setting.
- Default:
true - Example:
vinylkit config set replace_artwork_on_migration false
replace_tags_on_migration
Whether to clear and re-write audio tags from Discogs metadata during migration. When false, audio files are copied/moved without any tag modifications. Discogs data is still fetched for path generation, and supplementary files (release_info.txt, artwork files) are still written.
- Default:
true - Example:
vinylkit config set replace_tags_on_migration false
Logging
VinylKit uses dual-sink logging: a clean console sink for user-facing messages and a detailed rotating file sink for diagnostics. Per-file operations (tagging, moving, artwork saving) are logged at DEBUG and only appear in the log file. Command-level summaries and release separators are logged at INFO and appear in the console.
log_level
The minimum log level displayed in the console.
- Default:
INFO - Allowed:
DEBUG,INFO,WARNING,ERROR - Example:
vinylkit config set log_level DEBUG
log_to_file
Enable or disable the rotating log file.
- Default:
true - Example:
vinylkit config set log_to_file false
log_file
Custom path for the log file. When not set, VinylKit uses the platform default provided by platformdirs:
| Platform | Default Path |
|---|---|
| Windows | %LOCALAPPDATA%\vinylkit\vinylkit\Logs\vinylkit.log |
| macOS | ~/Library/Logs/vinylkit/vinylkit.log |
| Linux | ~/.local/state/vinylkit/log/vinylkit.log |
Bash:
- Example:
vinylkit config set log_file ~/logs/vinylkit.log
PowerShell:
- Example:
vinylkit config set log_file "D:\Logs\vinylkit.log"
log_rotation
Controls when the log file is rotated. Accepts size-based (e.g. "5 MB", "100 MB") or time-based (e.g. "1 day", "1 week") specifications.
- Default:
5 MB - Example:
vinylkit config set log_rotation "10 MB"
log_retention
Number of rotated log files to keep before the oldest is deleted.
- Default:
5 - Example:
vinylkit config set log_retention 3
Authentication
See the Authentication Guide for a detailed walkthrough of these settings.
auth_mode
Controls which authentication method VinylKit uses.
- Default:
auto - Allowed:
auto,token,oauth,key_secret,none - Example:
vinylkit config set auth_mode token
consumer_key / consumer_secret
Discogs Developer Application credentials. Required for OAuth login.
- Example:
vinylkit config set consumer_key "YOUR_KEY"
discogs_token
Personal access token from Discogs. The simplest auth method for most users.
- Example:
vinylkit config set discogs_token "YOUR_TOKEN"
discogs_secret
OAuth token secret, automatically set by vinylkit auth login. Can also be set manually when migrating credentials from another machine.
- Example:
vinylkit config set discogs_secret "YOUR_SECRET"