HandForge stores its configuration in JSON files located in ~/.handforge/ (or %USERPROFILE%\.handforge\ on Windows).
settings.json- Application settingspresets.json- Custom conversion presetspatterns.json- Filename patterns for metadata parsingautoretry.json- Auto-retry rulesseen_files.json- Cache of processed files
Control how many files are converted simultaneously:
{
"parallel": 2
}Range: 1-32
Default: 2
Enable or disable dark theme:
{
"dark_theme": false
}Default: false
Prefer external cover art files over embedded covers:
{
"prefer_external_cover": false
}Default: false
Delete original file after successful conversion:
{
"delete_original": false
}Default: false
Minimize application to system tray when closing window:
{
"minimize_to_tray": true
}Default: true
Default output directory for converted files:
{
"output_dir": "~/HandForge_Output"
}Default: ~/HandForge_Output (Linux/macOS) or %USERPROFILE%\HandForge_Output (Windows)
Default video quality preset:
{
"default_video_quality": "medium"
}Options: "low", "medium", "high", "ultra"
Default: "medium"
Default video codec for conversions:
{
"default_video_codec": "libx264"
}Options: "libx264", "libx265", "libvpx-vp9"
Default: "libx264"
Default size reduction factor for video compression:
{
"default_reduction_factor": 7.0
}Range: 2.0-20.0
Default: 7.0
Enable two-pass encoding by default:
{
"default_two_pass": false
}Default: false
Set the interface language:
{
"language": null
}Options:
nullor not set = Auto-detect from system locale"en"= English"ru"= Russian"pt"= Portuguese"es"= Spanish"et"= Estonian"fr"= French"de"= German"ja"= Japanese"zh"= Chinese"ko"= Korean"id"= Indonesian
Default: null (auto-detect)
What to do when output file already exists:
{
"dup_handling": "Overwrite"
}Options: "Overwrite", "Skip", "Rename"
Default: "Overwrite"
Behavior when output file exists:
{
"on_exists": "overwrite"
}Options: "skip", "overwrite", "rename"
Default: "overwrite"
EBU R128 loudness normalization settings:
{
"normalize_lufs": false,
"target_lufs": -14.0
}Default: false (disabled), -14.0 LUFS
Thread count per codec:
{
"codec_threads": {
"mp3": 1,
"aac": 1,
"m4a": 1,
"flac": 1,
"wav": 1
}
}Exponential Weighted Moving Average for ETA smoothing:
{
"ewma_alpha": 0.3
}Range: 0.05-0.9
Default: 0.3
Automatic retry on errors:
{
"auto_retry_enabled": true,
"auto_retry_patterns": [
"Error while decoding",
"Invalid data found",
"could not find codec parameters"
]
}Custom conversion presets are stored in presets.json:
{
"MP3 192k": {
"format": "mp3",
"mode": "CBR",
"bitrate": "192",
"vbrq": "-"
},
"High Quality AAC": {
"format": "aac",
"mode": "CBR",
"bitrate": "256",
"vbrq": "-"
}
}format: Output format (mp3, aac, m4a, flac, wav, etc.)mode: Encoding mode (CBR, VBR, Lossless)bitrate: Bitrate in kbps (for CBR)vbrq: VBR quality (0-9, or "-" for default)
Patterns for extracting metadata from filenames:
[
"{artist} - {title}",
"{track} - {artist} - {title}",
"{album} - {artist} - {title}"
]{artist}- Artist name{title}- Track title{album}- Album name{track}- Track number{year}- Year
HandForge remembers window position and size:
{
"win_geom": "...",
"win_state": "..."
}These are automatically managed by the application.
To reset all settings to factory defaults:
- Open HandForge
- Go to Settings → Reset to Factory
- Confirm the reset
- Restart the application
Or manually delete the ~/.handforge/ directory.
Settings can be exported via the UI:
- Settings → Export Presets (JSON)
- Settings → Export Patterns (JSON)
Import previously exported settings:
- Settings → Import Presets (JSON)
- Settings → Import Patterns (JSON)
For advanced users, you can directly edit the JSON files in ~/.handforge/. Make sure to:
- Close HandForge before editing
- Use valid JSON syntax
- Back up your settings first
Need help? See Troubleshooting or FAQ.