---
title: 'Audio Master'
description: 'Normalize loudness (LUFS) and trim leading silence. Video pass-through, audio re-encoded.'
updated: 2026-07-09
---

# Audio Master

**Node type:** `utility:audio_master`  
**Category:** `Editing`

## Description

Normalizes the loudness of a video's audio track (EBU R128 loudness normalization) and optionally trims leading silence. The video stream passes through untouched; only the audio is re-encoded.

## Canvas ports

These appear as port handles on the left side of the node.

| ID      | Label     | Details              |
| ------- | --------- | -------------------- |
| `video` | **Video** | `VIDEO` _(required)_ |

## Sidebar config

These render as form fields in the right-side config panel when the node is selected.

| ID            | Label              | Details                                                                           |
| ------------- | ------------------ | --------------------------------------------------------------------------------- |
| `preset`      | **Preset**         | `TEXT` · default `tiktok`. Named loudness preset applied by the mastering service |
| `trimSilence` | **Trim Silence**   | `BOOLEAN` · default `true`. Cut leading silence before normalizing                |
| `lufs`        | **Target LUFS**    | `NUMBER` · optional. Overrides the preset's integrated loudness target            |
| `truePeakDb`  | **True Peak (dB)** | `NUMBER` · optional. Overrides the preset's true-peak ceiling                     |
| `lra`         | **Loudness Range** | `NUMBER` · optional. Overrides the preset's loudness range target                 |

`lufs`, `truePeakDb`, and `lra` are passed through to the mastering service only when set; leave them empty to use the preset defaults.

## Outputs

| ID      | Label              | Type    |
| ------- | ------------------ | ------- |
| `video` | **Mastered Video** | `VIDEO` |

The result also carries `preset` (the preset that was applied) and `appliedFilter` (the ffmpeg filter string used), useful for debugging.

It also carries the MEASURED result: `targetLufs`, `achievedLufs`, `achievedTruePeakDb`, `truePeakOk`, `converged` (within 0.5 LU of the target), `correctionDb`, `trimApplied`, `trimmedSeconds`, and `trimSkippedReason` when the trim was skipped.

## How it hits the target

1. The source is measured. A source with no measurable audio is refused; the node never returns a silent file.
2. Leading silence is trimmed ONLY for an audio-only source. A source with video is never trimmed (`trimSkippedReason` says so): the video is copied untouched, so cutting the audio head would slide every word early against the picture. For audio-only sources the threshold is 16 dB under the measured loudness but never above -50 dB (true silence, so a quiet intro survives), and the trim is skipped when it would remove more than 3 s or leave under 0.5 s. `trimmedSeconds` reports what was removed.
3. The audio is normalized with the measured values, then a true-peak limiter (oversampled) keeps it under the ceiling.
4. The delivered file is measured. If it is more than 0.3 LU off, one gain correction is folded in ahead of the limiter and it is measured again.

Audio is written at 48 kHz AAC 192k. This changes the output of existing nodes too: they used to come out at whatever rate loudnorm left (often 96 kHz) with no limiter.

## Notes

- The `video` input accepts a bare URL string or a `{ url }` / `{ videoUrl }` / `{ video }` object.

---

_Auto-generated from the Wireflow node registry._

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
