Skip to content

Using Presets

Presets allow you to save and reuse common configurations for different use cases. Instead of specifying the same options every time, you can create a preset file and reference it with --preset.

Overview

A preset is a JSON file containing a set of ffmpeg-normalize options. When you use --preset <name>, the options from the preset file are applied to your command. Any options you specify on the command line take precedence over the preset values.

Presets are stored in a platform-specific configuration directory.

Linux/macOS

By default:

~/.config/ffmpeg-normalize/presets/

If you have XDG_CONFIG_HOME set:

$XDG_CONFIG_HOME/ffmpeg-normalize/presets/

Windows

%APPDATA%\ffmpeg-normalize\presets\

Built-in Presets

ffmpeg-normalize comes with three built-in presets:

podcast

Optimized for podcast audio normalization using the AES recommended standard.

  • Normalization type: EBU R128
  • Target level: -16 LUFS
  • Loudness range target: 7.0 LUFS
  • True peak: -2.0 dBTP

music

Optimized for music album normalization. Preserves relative loudness between tracks using RMS-based normalization in batch mode for consistent loudness across albums.

  • Normalization type: RMS
  • Target level: -20.0 dB
  • Batch mode: enabled (preserves relative loudness between tracks)

streaming-video

Optimized for video streaming platforms with the standard loudness level for video content.

  • Normalization type: EBU R128
  • Target level: -14.0 LUFS
  • Loudness range target: 7.0 LUFS
  • True peak: -2.0 dBTP

Using Presets

To see all available presets:

ffmpeg-normalize --list-presets

To apply a preset to your files:

ffmpeg-normalize input.mp3 --preset podcast

This will automatically apply all options defined in the podcast preset to your command.

CLI options take precedence over preset values. For example, to use the podcast preset but with a different output codec:

ffmpeg-normalize input.mp3 --preset podcast --audio-codec libmp3lame

The --audio-codec option will then override the preset's codec choice.

Creating Custom Presets

You can create your own presets by creating a JSON file in your presets directory. A preset file is a simple JSON object with option names as keys and their values:

{
  "normalization-type": "ebu",
  "target-level": -23.0,
  "loudness-range-target": 7.0,
  "true-peak": -2.0,
  "audio-codec": "aac",
  "audio-bitrate": "192k",
  "progress": true
}

Use the long form of option names (with hyphens) in presets. Examples:

  • normalization-type (not -nt)
  • target-level (not -t)
  • audio-codec (not -c:a)
  • audio-bitrate (not -b:a)
  • sample-rate (not -ar)
  • audio-channels (not -ac)
  • loudness-range-target (not -lrt)
  • true-peak (not -tp)

Boolean options should be true in the JSON:

{
  "progress": true,
  "batch": true
}

Note: It's not required to include options that are false because they are the default.

Example: Custom Voice Preset

Create a file ~/.config/ffmpeg-normalize/presets/voice.json:

{
  "normalization-type": "ebu",
  "target-level": -18.0,
  "loudness-range-target": 4.0,
  "true-peak": -3.0,
  "audio-codec": "libopus",
  "audio-bitrate": "96k",
  "audio-channels": 1,
  "progress": true,
  "verbose": true
}

Then use it:

ffmpeg-normalize voice_recording.wav --preset voice

Example: Custom Streaming Audio Preset

Create a file ~/.config/ffmpeg-normalize/presets/streaming-audio.json:

{
  "normalization-type": "ebu",
  "target-level": -14.0,
  "loudness-range-target": 7.0,
  "true-peak": -2.0,
  "audio-codec": "aac",
  "audio-bitrate": "192k",
  "progress": true
}

This preset normalizes audio to the streaming video standard and encodes it as AAC at 192 kbps.