# Audio loudness normalizer

- Human page: https://happytails.ai/en/media-tools/audio-loudness-normalizer/
- Markdown: https://happytails.ai/en/media-tools/audio-loudness-normalizer.md
- Structured JSON: https://happytails.ai/agents/en/media-tools/audio-loudness-normalizer/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `audio-loudness-normalizer` |
| Category | media-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Runs locally in your browser. Normalizes one recording up to 5 minutes and 256 MiB.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

Accepted browser files: `.wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*`. Choose one file.

Browser file-input limit: 268435456 bytes in total. HTTP limits can differ.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `target` | Target loudness (LUFS) | number | "-16" | min=-40 max=-5 step=0.5 |
| `ceiling` | Peak ceiling (dB) | number | "-1" | min=-9 max=0 step=0.1 |
| `mode` | Peak mode | select | "true" | Allowed: true, sample |
| `encoding` | WAV sample format | select | "match" | Allowed: match, pcm16, pcm24, float32 |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

One recording up to 256 MiB and 5 minutes; target -40 to -5 LUFS, ceiling -9 to 0 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose and a JSON report with loudness and peaks before and after.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "audio-loudness-normalizer",
  "category": "media-tools",
  "built": true,
  "requirements": "One recording up to 256 MiB and 5 minutes; target -40 to -5 LUFS, ceiling -9 to 0 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose and a JSON report with loudness and peaks before and after.",
  "implementation": {
    "fields": [
      {
        "key": "target",
        "label": "Target loudness (LUFS)",
        "value": "-16",
        "type": "number",
        "min": -40,
        "max": -5,
        "step": 0.5
      },
      {
        "key": "ceiling",
        "label": "Peak ceiling (dB)",
        "value": "-1",
        "type": "number",
        "min": -9,
        "max": 0,
        "step": 0.1
      },
      {
        "key": "mode",
        "label": "Peak mode",
        "value": "true",
        "type": "select",
        "values": [
          "true",
          "sample"
        ],
        "labels": {
          "true": "Estimated true peak",
          "sample": "Sample peak"
        }
      },
      {
        "key": "encoding",
        "label": "WAV sample format",
        "value": "match",
        "type": "select",
        "values": [
          "match",
          "pcm16",
          "pcm24",
          "float32"
        ],
        "labels": {
          "match": "Same as source",
          "pcm16": "16-bit PCM",
          "pcm24": "24-bit PCM",
          "float32": "32-bit float"
        }
      }
    ],
    "registrationFamily": "audio-dsp-dynamics-filters",
    "presentation": "metrics",
    "files": true,
    "accept": ".wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*",
    "maxFileBytes": 268435456,
    "input": false,
    "inputErrorCode": "AUDIO_DSP_DYNAMICS_FILTERS_TOO_LONG",
    "note": "Runs locally in your browser. Normalizes one recording up to 5 minutes and 256 MiB.",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Audio file",
      "placeholder": "Choose a recording",
      "help": "Set a loudness target, then check the measured result. Peak limiting can prevent reaching the target. Up to 1,000,000 characters. Review the settings before running.",
      "helpParts": [
        "Set a loudness target, then check the measured result. Peak limiting can prevent reaching the target.",
        "Up to 1,000,000 characters.",
        "Review the settings before running."
      ],
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Adjust a recording toward a target loudness in LUFS, control its peaks, and check the measured loudness after processing.

### How to use Audio loudness normalizer

1. Choose the recording.
2. Enter the target loudness in LUFS and the peak ceiling.
3. Choose true peak or sample peak mode.
4. Normalize, check whether the target was reached and download the WAV.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

## Useful next steps

- [Audio limiter](https://happytails.ai/en/media-tools/audio-limiter/) ([Markdown](https://happytails.ai/en/media-tools/audio-limiter.md))

- [Increase audio volume](https://happytails.ai/en/media-tools/increase-audio-volume/) ([Markdown](https://happytails.ai/en/media-tools/increase-audio-volume.md))

- [Audio dynamics compressor](https://happytails.ai/en/media-tools/audio-dynamics-compressor/) ([Markdown](https://happytails.ai/en/media-tools/audio-dynamics-compressor.md))

One recording up to 256 MiB and 5 minutes; target -40 to -5 LUFS, ceiling -9 to 0 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose and a JSON report with loudness and peaks before and after.

## Measurement

Integrated loudness is measured using K-weighting, 400 ms blocks, and absolute and relative gates from ITU-R BS.1770-4. The gain stage turns the whole file up or down by the difference to your target. This stage preserves relative dynamics; any subsequent peak limiting can change them.

### When limiting is needed

If the gain would push the peaks above the ceiling, a look-ahead limiter holds them down. The report says whether the limiter was applied and whether the result is within 0.5 LU of the target. Common targets are -16 LUFS for podcasts and -14 LUFS for music streaming, but check the current guidance of the service you publish to.

### Silent files

A recording that is silent or almost silent has no measurable loudness, so it cannot be normalized.
