Video-Use Loudness Normalization Targets: -14 LUFS, -1 dBTP, and LRA 11 Explained
The video-use library normalizes audio to -14 LUFS integrated loudness, -1 dBTP true-peak, and 11 LU loudness range using FFmpeg's loudnorm filter.
These targets align with the industry-standard "social-ready" loudness curve used by major platforms including YouTube, Instagram, TikTok, X, and LinkedIn. The browser-use/video-use repository hardcodes these values in its rendering pipeline to ensure consistent audio levels across all exported videos.
Default Loudness Targets in video-use
The repository enforces a three-parameter loudness standard during the final render stage. These constants are defined in helpers/render.py and passed directly to FFmpeg's loudnorm filter.
Integrated Loudness (-14 LUFS)
Integrated loudness measures the average perceived loudness over the entire duration of the audio. The LOUDNORM_I constant is set to -14.0 LUFS (Loudness Units relative to Full Scale), matching the delivery specifications recommended for streaming platforms to ensure comfortable listening levels on mobile devices.
True Peak (-1 dBTP)
True peak represents the maximum level of the audio signal after digital-to-analog conversion. The LOUDNORM_TP constant targets -1.0 dBTP (decibels True Peak), preventing inter-sample clipping and distortion while maximizing headroom for platform transcoding.
Loudness Range (11 LU)
Loudness range (LRA) quantifies the variation in loudness throughout the content. The LOUDNORM_LRA constant is set to 11.0 LU, preserving natural dynamics for dialogue-driven content while compressing extreme variations that could fatigue listeners.
Where the Targets Are Defined in the Source Code
The normalization parameters are explicitly declared as module-level constants in the rendering pipeline. In helpers/render.py (lines 892-894), you will find:
# helpers/render.py – loudness normalisation targets
LOUDNORM_I = -14.0 # integrated LUFS
LOUDNORM_TP = -1.0 # true‑peak dBTP
LOUDNORM_LRA = 11.0 # loudness range LU
These values are immutable defaults that ensure every rendered video meets broadcast-ready specifications without requiring manual configuration.
How the Normalization Pipeline Works
The apply_loudnorm_two_pass function (implemented in helpers/render.py, lines 70-78) constructs the FFmpeg filter string using these constants. The function performs a two-pass analysis: first measuring the input audio characteristics, then applying the corrective gain to hit the targets.
The filter construction follows this pattern:
filter_str = (
f"loudnorm=I={LOUDNORM_I}:TP={LOUDNORM_TP}:LRA={LOUDNORM_LRA}"
# … additional measured‑input parameters for the two‑pass pass …
)
This approach ensures frame-accurate loudness correction while maintaining the original audio quality, utilizing FFmpeg's EBU R128-compliant loudness normalization algorithm.
Command-Line Usage Examples
You can control the loudness normalization behavior when running the render script from the terminal.
Standard Render with Default Normalization
To process an EDL (Edit Decision List) file with the default -14 LUFS / -1 dBTP targets:
python helpers/render.py my_edl.json -o final.mp4
The script automatically executes:
- Video segment extraction and concatenation
- Overlay and subtitle compositing
- Two-pass loudness normalization to the standard targets
Skip Normalization for Pre-Mastered Audio
If your source audio is already mastered to specification, bypass the loudnorm step to prevent double-processing:
python helpers/render.py my_edl.json -o final.mp4 --no-loudnorm
This flag copies the audio stream unchanged, preserving your existing loudness processing.
Fast Preview with Single-Pass Normalization
For quick dailies or preview builds where processing speed matters more than precision:
python helpers/render.py my_edl.json -o preview.mp4 --preview
Preview mode runs a single-pass approximation using the same target values (-14 LUFS, -1 dBTP, LRA 11), significantly reducing render time while maintaining roughly consistent loudness levels.
Summary
- video-use targets -14 LUFS integrated loudness, -1 dBTP true peak, and 11 LU loudness range as defined in
helpers/render.py. - These constants (
LOUDNORM_I,LOUDNORM_TP,LOUDNORM_LRA) are applied via FFmpeg'sloudnormfilter in theapply_loudnorm_two_passfunction. - The two-pass process ensures accurate loudness correction for social media delivery standards.
- Users can disable normalization with
--no-loudnormor use single-pass preview mode with--preview.
Frequently Asked Questions
What is the default integrated loudness target in video-use?
The default integrated loudness target is -14.0 LUFS, defined by the LOUDNORM_I constant in helpers/render.py. This value aligns with the loudness standards used by YouTube, Spotify, and other major streaming platforms to ensure consistent playback volume across different content types.
Can I disable loudness normalization in video-use?
Yes. Pass the --no-loudnorm flag when running helpers/render.py to bypass the audio processing step entirely. This preserves the original audio levels, which is useful when working with pre-mastered tracks or when you need to maintain specific dynamic range characteristics for theatrical delivery.
Why does video-use use -14 LUFS specifically?
The -14 LUFS target represents the modern consumer streaming standard that balances audibility on mobile devices with dynamic preservation. According to the video-use source code, this value ensures "social-ready" output compatible with platform-specific loudness normalization algorithms, preventing additional gain changes during upload to YouTube, Instagram, or TikTok.
What is the difference between LUFS and dBTP?
LUFS (Loudness Units relative to Full Scale) measures perceived loudness over time using the EBU R128 algorithm, accounting for human hearing sensitivity. dBTP (decibels True Peak) measures the absolute maximum signal level including inter-sample peaks that may occur during digital-to-analog conversion. video-use targets -14 LUFS for average loudness and -1 dBTP for peak limiting to prevent distortion.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →