# What Loudness Normalization Standards Does video-use Use? EBU‑R128 Defaults Explained

> video-use adheres to EBU R128 loudness normalization standards. Learn about its defaults for integrated loudness true peak and loudness range for optimal audio.

- Repository: [Browser Use/video-use](https://github.com/browser-use/video-use)
- Tags: deep-dive
- Published: 2026-08-06

---

**video-use automatically normalizes all processed audio to the EBU‑R128 standard with targets of ‑14 LUFS integrated loudness, ‑1 dBTP true‑peak ceiling, and approximately 11 LUFS loudness range.**

The `browser-use/video-use` open‑source tool applies broadcast‑grade loudness normalization during its rendering pipeline, ensuring exported videos meet professional streaming and social‑platform requirements without manual audio mastering. This article examines the specific EBU‑R128 parameters hard‑coded into the tool and how to control them from the command line.

---

## EBU‑R128 Target Values in video-use

According to the source code in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), `video-use` enforces the following three EBU‑R128 metrics on every rendered video:

| Metric | Target Value | Purpose |
|--------|--------------|---------|
| **Integrated loudness** | ‑14 LUFS | Overall perceived loudness of the entire program |
| **True‑peak ceiling** | ‑1 dBTP | Maximum instantaneous level to prevent inter‑sample clipping |
| **Loudness Range (LRA)** | ~11 LUFS | Dynamic range suited for social‑media consumption |

These values align with the **EBU‑R128** specification (European Broadcasting Union Recommendation R128), the industry standard for loudness normalization in television and streaming. The ‑14 LUFS target specifically matches the "social‑ready" profile used by major platforms including YouTube, Spotify, and Apple Music for uploaded content.

---

## Where the Defaults Are Defined

The rendering helper module [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) contains the implementation of `video-use`'s loudness pipeline.

### Loudness Measurement Function

The core measurement logic resides at **line 397** of [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) in the `measure_loudness()` function. This function analyzes the source audio and returns integrated loudness, true‑peak level, and loudness range before any gain is applied.

```python
from pathlib import Path
from helpers.render import measure_loudness

# Inspect source audio without rendering

info = measure_loudness(Path("input.mp4"))
print(info)

# Output example: {'integrated': '-13.9 LUFS', 'true_peak': '-0.9 dBTP', 'lra': '10.8 LUFS'}

```

### CLI Flag for Disabling Normalization

At **line 602**, the tool defines the `--skip-loudness-normalization` argument for users who want to bypass automatic processing:

```bash

# Default behavior: normalization applied

video-use render input.mp4 -o output.mp4

# Console output: "loudness normalization → social-ready (-14 LUFS / -1 dBTP / LRA 11)"

# Disable normalization for already-mastered audio

video-use render input.mp4 -o output.mp4 --skip-loudness-normalization

```

### Confirmation Output

When normalization succeeds, the tool prints confirmation at **line 650**, displaying the exact targets applied so users can verify compliance.

---

## Comparing video-use Loudness to Platform Standards

Different streaming services specify slightly different loudness targets. Here's how `video-use` defaults compare:

- **YouTube Music / Spotify / Apple Podcasts**: ‑14 LUFS — **matches video-use exactly**
- **Apple Music**: ‑16 LUFS — slightly quieter than video-use default
- **Amazon Music**: ‑14 to ‑16 LUFS — overlaps video-use range
- **Twitch**: ‑14 LUFS — **matches video-use exactly**

The tool's **‑14 LUFS / ‑1 dBTP** profile prioritizes compatibility with the widest range of social and streaming platforms, accepting a small trade‑off with Apple's slightly stricter requirement.

---

## Practical Command‑Line Examples

### Standard Social‑Ready Render

```bash
video-use render project/raw.mov -o final/social.mp4

# Audio automatically normalized to EBU‑R128 social target

```

### Preserve Original Audio Levels

```bash
video-use render project/mastered.mov -o final/archive.mp4 --skip-loudness-normalization

# Bypasses all loudness processing; use when audio is already broadcast‑compliant

```

### Batch Processing with Loudness Verification

```bash
for f in sources/*.mov; do
    video-use render "$f" -o "exports/$(basename "$f" .mov).mp4"
done 2>&1 | grep "loudness normalization"

# Filter logs to confirm normalization applied to each file

```

---

## Summary

- `video-use` implements **EBU‑R128 loudness normalization** as a non‑optional default in its rendering pipeline.
- Fixed targets: **‑14 LUFS** integrated loudness, **‑1 dBTP** true‑peak ceiling, **~11 LUFS** loudness range.
- Core logic lives in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py) with `measure_loudness()` at line 397 and the skip flag defined at line 602.
- Use `--skip-loudness-normalization` to disable processing for pre‑mastered audio tracks.
- These defaults ensure cross‑platform compatibility without additional audio engineering.

---

## Frequently Asked Questions

### Does video-use support custom loudness targets like ‑16 LUFS or ‑23 LUFS?

No. According to the source code in [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), the EBU‑R128 targets are hard‑coded constants. The tool offers only a binary choice: apply the default ‑14 LUFS profile or skip normalization entirely with `--skip-loudness-normalization`. Users requiring ‑23 LUFS (standard for broadcast television) or ‑16 LUFS (Apple Music) must process audio externally and then use the skip flag.

### Why does video-use use ‑14 LUFS instead of ‑16 LUFS?

The **‑14 LUFS** target prioritizes "social‑ready" content. This value aligns with YouTube, Spotify, and Twitch specifications, covering the majority of user workflows. The developers selected this compromise to maximize platform compatibility without exposing complexity. The ~11 LUFS loudness range additionally prevents over‑compression that would reduce engagement on mobile devices.

### Is loudness normalization applied to all output formats equally?

Yes. The normalization pipeline runs before final encoding, so the same ‑14 LUFS / ‑1 dBTP corrections apply regardless of whether you output MP4, WebM, or MOV containers. The gain adjustment happens at the audio sample level, making it codec‑agnostic.

### How can I verify that normalization actually occurred?

Two methods: (1) Check the console output for the confirmation string printed at line 650 of [`helpers/render.py`](https://github.com/browser-use/video-use/blob/main/helpers/render.py), which reads `loudness normalization → social-ready (-14 LUFS / -1 dBTP / LRA 11)`. (2) Analyze the rendered file with external loudness meters such as `ffmpeg -af loudnorm=print_format=json -f null -` or dedicated tools like `ebur128` or Adobe Audition's loudness radar.