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:
# 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
{
"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
| Field | Type | Description | |
|---|---|---|---|
loudness.integrated_lufs | number | Gated EBU R 128 / ITU-R BS.1770 integrated loudness across the whole file, in LUFS (equal to LKFS). | |
loudness.true_peak_dbtp | number | Highest inter-sample reconstructed peak, in dBTP. Keep at or below -1.0 dBTP for podcasts and streaming. | |
loudness.lra_lu | number | Loudness range (LRA) in LU, measuring the spread between quiet and loud sections. | |
noise_floor_db | number | RMS level of the quietest steady room-tone windows, in dB (useful for ACX audiobook -60 dB checks). | |
peak_db | number | Sample peak level in dBFS. | |
rms_db | number | Overall RMS level in dBFS (ACX audiobooks require -23 to -18 dB RMS). | |
clipped_samples | number | Number of digital samples hitting full scale. 0 means no digital clipping. | |
silences | array | Silent 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_seconds | number | Verified 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 value | Target loudness | True-peak ceiling | Best for |
|---|---|---|---|
podcast (default) | -16 LUFS | -1 dBTP | Apple Podcasts and RSS podcast feeds |
streaming | -14 LUFS | -1 dBTP | Spotify, YouTube, and web video |
broadcast | -23 LUFS | -1 dBTP | EBU R 128 broadcast television and radio |
audiobook | -23 to -18 dB RMS | -3 dB peak | Audible / ACX audiobook submissions (also returns acx.passes and acx.problems) |
custom | custom_lufs (-30 to -5) | -1 dBTP | Any custom LUFS target |
# 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.bodyIf 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.