Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time


libebur128 is a library that implements the EBU R 128 standard for loudness normalisation.

All source code is licensed under the MIT license. See COPYING file for details.

See also loudness-scanner tool.


v1.2.6 released:

  • Fix dynamic linking on Windows.

v1.2.5 released:

  • Remove BUILD_STATIC_LIBS build option. Instead the CMake-supported BUILD_SHARED_LIBS option is now honored as expected.
  • Various code cleanups, warning fixes and documentation improvements
  • Fix issue related to filter state indexing with high channel enums (#77)
  • Introduce limits for number of channels and maximum supported samplerate to avoid integer overflows
  • Fix error return code of ebur128_set_channel. The actual behavior is now aligned to the documentation (#90).

v1.2.4 released:

  • Fix broken ebur128_loudness_global_multiple() function. Since v1.1.0 it calculated the relative threshold just from the last state given to it, resulting in wrong values.
  • More tests
  • Fix some minor build issues
  • Fix uninitialized memory in ebur128_init(), possibly resulting in wrong values

v1.2.3 released:

  • Fix uninitialized memory access during true peak scanning (bug #72)

v1.2.2 released (v1.2.1 was mistagged):

  • Fix a null pointer dereference when doing true peak scanning of 192kHz data

v1.2.0 released:

  • New functions for real time loudness/peak monitoring:
    • ebur128_loudness_window()
    • ebur128_set_max_window()
    • ebur128_set_max_history()
    • ebur128_prev_sample_peak()
    • ebur128_prev_true_peak()
  • New FIR resampler for true peak calculation, removing Speex dependency
  • Add true peak conformance tests
  • Bug fixes

v1.1.0 released:

  • Add ebur128_relative_threshold()
  • Add channel definitions from ITU R-REC-BS 1770-4 to channel enum
  • Fix some minor build issues

v1.0.3 released:

  • Fix build with recent speexdsp
  • Correct license file name
  • CMake option to disable static library
  • minimal-example.c: do not hard code program name in usage


  • Portable ANSI C code
  • Implements M, S and I modes
  • Implements loudness range measurement (EBU - TECH 3342)
  • True peak scanning
  • Supports all samplerates by recalculation of the filter coefficients


In the root folder, type:

mkdir build
cd build
cmake ..

If you want the git version, run simply:

git clone git://


Library usage should be pretty straightforward. All exported symbols are documented in the ebur128.h header file. For a usage example, see minimal-example.c in the tests folder.

On some operating systems, static libraries should be compiled as position independent code. You can enable that by turning on WITH_STATIC_PIC.