Skip to content
audo

Free LUFS Loudness & Media Info API

POST https://audo.ai/api/try/media-info (tool analyze_audio) is a free cloud REST API that measures EBU R 128 integrated loudness (LUFS), true peak (dBTP), loudness range (LU), RMS noise floor (dB), sample peak, average RMS level, clipped samples, silent timestamp ranges, and container/codec details for any audio or video file up to 10 GB.

  • Cost: Always free ($0.00, 0 credits) for the entire file—up to 20 files a day per person without an API key or account.
  • Formats: Audio (WAV, MP3, M4A, AAC, FLAC, OGG, Opus, WebM, AIFF) and video (MP4, MOV, MKV, WebM, AVI).
  • Web tool: Try it in the browser on the Free LUFS meter or File info.

Measure LUFS loudness with curl

Send a local audio or video file as multipart/form-data, or pass a public HTTPS URL as JSON:

Terminal
# Upload a local file:
curl -F file=@episode.wav https://audo.ai/api/try/media-info -D response.headers -o response.body

# Or inspect a public HTTPS URL:
curl -X POST https://audo.ai/api/try/media-info \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/episode.mp3", "detail": "concise"}'

For files up to an hour long, /api/try/media-info typically finishes within a few seconds and returns 200 OK with the JSON report directly.

Example JSON response

JSON
{
  "duration_seconds": 184.2,
  "format_name": "mp3",
  "size_bytes": 4421880,
  "has_audio": true,
  "has_video": false,
  "audio": {
    "codec": "mp3",
    "sample_rate": 48000,
    "channels": 2,
    "bit_rate": 192000
  },
  "video": null,
  "loudness": {
    "integrated_lufs": -18.4,
    "true_peak_dbtp": -2.1,
    "lra_lu": 6.3
  },
  "noise_floor_db": -64.2,
  "peak_db": -2.2,
  "rms_db": -21.5,
  "clipped_samples": 0,
  "silences": [
    { "start_seconds": 12.45, "end_seconds": 15.12 },
    { "start_seconds": 48.3, "end_seconds": 51.05 }
  ]
}

Response fields

FieldTypeDescription
loudness.integrated_lufsnumberGated EBU R 128 / ITU-R BS.1770 integrated loudness across the whole file, in LUFS (equal to LKFS).
loudness.true_peak_dbtpnumberHighest inter-sample reconstructed peak, in dBTP. Keep at or below -1.0 dBTP for podcasts and streaming.
loudness.lra_lunumberLoudness range (LRA) in LU, measuring the spread between quiet and loud sections.
noise_floor_dbnumberRMS level of the quietest steady room-tone windows, in dB (useful for ACX audiobook -60 dB checks).
peak_dbnumberSample peak level in dBFS.
rms_dbnumberOverall RMS level in dBFS (ACX audiobooks require -23 to -18 dB RMS).
clipped_samplesnumberNumber of digital samples hitting full scale. 0 means no digital clipping.
silencesarraySilent stretches of 0.7 seconds or longer as {"start_seconds", "end_seconds"} pairs. detail="concise" (default) returns up to 50; detail="full" returns all of them.
duration_secondsnumberVerified decoded duration in seconds.
audio / video`object \null`Codec, sample rate, channel count, bitrate, pixel dimensions, and frame rate.

Normalize to -16 LUFS or -14 LUFS in a second call

Once you have measured a file, you can normalize it to platform loudness targets with POST https://audo.ai/api/try/loudness (tool adjust_loudness, web page Boost volume). The first hour of each file is free (10 times a day, no API key), and whole files with an API key cost $0.01/min ($0.60/hr):

target valueTarget loudnessTrue-peak ceilingBest for
podcast (default)-16 LUFS-1 dBTPApple Podcasts and RSS podcast feeds
streaming-14 LUFS-1 dBTPSpotify, YouTube, and web video
broadcast-23 LUFS-1 dBTPEBU R 128 broadcast television and radio
audiobook-23 to -18 dB RMS-3 dB peakAudible / ACX audiobook submissions (also returns acx.passes and acx.problems)
customcustom_lufs (-30 to -5)-1 dBTPAny custom LUFS target
Terminal
# Normalize to -16 LUFS for podcasts:
curl -F file=@episode.mp3 -F target=podcast https://audo.ai/api/try/loudness -D response.headers -o response.body

# Normalize to -14 LUFS for Spotify / YouTube:
curl -F file=@episode.mp3 -F target=streaming https://audo.ai/api/try/loudness -D response.headers -o response.body

# Normalize to a custom -18 LUFS target:
curl -F file=@episode.mp3 -F target=custom -F custom_lufs=-18 https://audo.ai/api/try/loudness -D response.headers -o response.body

If a recording has two speakers at very different volumes (for example a loud host and a quiet guest), use POST https://audo.ai/api/try/level-speakers (tool level_speakers, Balance audio) to level each speaker's turns before setting the final LUFS target.

This page as Markdown