loudness-check-mcp
Compares audio against Apple Music's Sound Check target (-16 LUFS, ≤ -1 dBTP) and can normalize a file to that level.
Runs an optional ACX/Audible audiobook check: RMS between -23 and -18 dB, peak ≤ -3 dB, and noise floor ≤ -60 dB, with a pass/fail style verdict for audiobook submissions.
Treats Instagram (with Reels/Shorts-style social video) as a -14 LUFS / ≤ -1 dBTP target based on common practice, and can normalize a video's audio track to it without re-encoding the video.
Compares audio against Spotify's loudness target (-14 LUFS, ≤ -1 dBTP) and explains that Spotify normalizes both up and down, limited by peaks. Can render a Spotify-ready normalized copy.
Compares audio against Tidal's loudness target (-14 LUFS, ≤ -1 dBTP), explaining that Tidal normalizes playback down, and can produce a normalized version.
Covers TikTok as part of the social/video target (-14 LUFS, ≤ -1 dBTP) for short-form content, normalizing the audio track while copying the video stream untouched.
Checks whether a track or video's audio meets YouTube's loudness reference (-14 LUFS, ≤ -1 dBTP) and explains how YouTube will normalize it — turning louder uploads down but never boosting quiet ones. Can also produce a version normalized to YouTube's target.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
loudness-check-mcp
"Is my mix too quiet for YouTube?" — answered with real LUFS numbers, then fixed.
loudness-check-mcp is a Model Context Protocol server that measures audio loudness the way platforms and broadcasters do (EBU R128 / ITU-R BS.1770 via ffmpeg), explains what YouTube, Spotify, Apple, podcast apps and broadcasters will do with your file, and writes a corrected copy — an exact gain change when that's enough, two-pass loudnorm when it isn't. It also finds dead air, clipping and sudden loudness jumps — with timestamps.
Works on audio files and on the audio track of videos. Everything runs locally.
You: Check ep42_final.wav for podcast and YouTube.
Claude: Integrated -11.2 LUFS, true peak +0.4 dBTP.
⚠️ Podcast: 4.8 LU louder than -16. ⚠️ YouTube will turn it down ~2.8 dB,
and the true peak above 0 dBTP will distort after AAC encoding.
Want a -16 LUFS / -1 dBTP version?
You: Yes, as MP3.
Claude: A plain -4.8 dB gain gets there, so that's all I applied (dynamics untouched).
Saved ep42_final_podcast.mp3 — now -16.0 LUFS, -4.4 dBTP.Tools
Tool | What it does |
| Integrated loudness (LUFS), true peak (dBTP), loudness range (LRA), max momentary / short-term, sample peak, RMS, noise floor, DC offset. Optional target comparison. |
| Compares against YouTube, Spotify, Apple Music, Tidal, social, podcast, EBU R128 and ATSC A/85 and explains what each platform will do. Optional ACX audiobook check (RMS, peak, noise floor). |
| Hits a preset or custom target. Applies an exact gain change when that keeps true peak under the ceiling (your mix's dynamics are untouched); otherwise uses two-pass dynamic |
| Loudness per window (default 5 s): loudest/quietest sections and sudden jumps. CSV export. |
| Silent stretches with timestamps, totals, and padded keep segments for planning jump cuts. CSV export. |
| Flat-topped clipping, true-peak overs, and the time ranges where peaks cross a threshold. |
| All targets and how each platform behaves. |
| Confirms ffmpeg and the required filters (ebur128, loudnorm, astats, silencedetect). |
Targets
id | Target | Integrated | True peak | Platform behaviour |
| YouTube | -14 LUFS | ≤ -1 dBTP | Turns louder videos down; doesn't turn quiet ones up |
| Spotify | -14 LUFS | ≤ -1 dBTP | Normalizes both ways (up only as far as peaks allow) |
| Apple Music | -16 LUFS | ≤ -1 dBTP | Sound Check |
| Tidal | -14 LUFS | ≤ -1 dBTP | Normalizes down |
| Instagram / TikTok / Shorts | -14 LUFS | ≤ -1 dBTP | No published spec; common practice |
| Podcast (stereo) | -16 LUFS | ≤ -1 dBTP | Widely used podcast target (≈ -19 for mono) |
| EBU R128 broadcast | -23 LUFS ±0.5 | ≤ -1 dBTP | Delivery spec |
| ATSC A/85 (US broadcast) | -24 LKFS ±2 | ≤ -2 dBTP | Delivery spec |
| ACX / Audible | RMS -23 to -18 dB | peak ≤ -3 dB | Noise floor ≤ -60 dB |
Streaming targets are the commonly cited reference levels. Platforms tweak their normalization over time; broadcast specs are formal standards.
Related MCP server: loudcheck
Requirements
Node.js 20+
ffmpeg with the
ebur128,loudnorm,astatsandsilencedetectfilters (all standard builds include them)macOS:
brew install ffmpeg· Ubuntu:sudo apt install ffmpeg· Windows:winget install ffmpeg
The server finds ffmpeg via FFMPEG_PATH, then PATH, then common folders like /opt/homebrew/bin (Claude Desktop on macOS starts servers with a minimal PATH).
Install
Claude Desktop
Settings → Developer → Edit Config:
{
"mcpServers": {
"loudness-check": {
"command": "npx",
"args": ["-y", "github:anshumanofficial2002-cpu/loudness-check-mcp"]
}
}
}Claude Code
claude mcp add loudness-check -- npx -y github:anshumanofficial2002-cpu/loudness-check-mcpCursor / Windsurf / VS Code / other clients
{
"loudness-check": {
"command": "npx",
"args": ["-y", "github:anshumanofficial2002-cpu/loudness-check-mcp"]
}
}From source
git clone https://github.com/anshumanofficial2002-cpu/loudness-check-mcp.git
cd loudness-check-mcp && npm install && npm run build
# point your client at: node /absolute/path/to/loudness-check-mcp/dist/index.jsExample prompts
"How loud is
~/Music/bounce_v7.wav? Is it ready for Spotify and YouTube?""Normalize
ep12.mp3to podcast loudness and save it asep12_master.mp3.""My reel
final.mp4sounds quiet next to other posts. Fix the audio to -14 LUFS without re-encoding the video.""Where's the loud part in this interview? Give me a 10-second timeline."
"Find every pause longer than 0.8 s in
raw_vo.wavand give me the segments to keep for jump cuts.""Is
voiceover.wavclipping anywhere?""Does
chapter_03.wavpass ACX for Audible?""Make an EBU R128 broadcast version of
promo.mov."
Tool reference
Shared params on analysis tools: path, start (seconds or HH:MM:SS), duration (seconds), audio_stream (default 0).
measure_loudness
targets (optional list of target ids).
check_loudness_targets
targets (default ["youtube","spotify","social","podcast"]), include_acx (false).
normalize_loudness
Param | Default | Notes |
|
| Extension picks the codec: |
|
| Any target id. |
| — | Custom target (overrides |
| target's ceiling | Custom ceiling. |
| 11 | Target loudness range in dynamic mode. |
| true | Prefer an exact gain change. If that would push true peak over the ceiling, dynamic loudnorm is used and the result explains what to change to stay linear. Set |
| source rate | Output sample rate (loudnorm processes at 192 kHz internally; output is resampled to this). |
| false | Measure, pick the mode, and return the command without writing. |
| false |
loudness_timeline
window_seconds (5), jump_lu (6 — flags jumps in max momentary loudness between windows), max_rows (120), csv_output_path, overwrite.
detect_silence
noise_db (-45; raise to -35 for noisy rooms), min_silence_seconds (0.6), keep_padding_seconds (0.12), include_keep_segments (true), max_rows (100), csv_output_path, overwrite.
detect_clipping
threshold_dbtp (-1), max_rows (50). Verdict fail = flat-topped samples at full scale; warn = true peak above 0 dBTP or peaks above the threshold.
How it measures
Integrated loudness, LRA, true peak, momentary/short-term: ffmpeg
ebur128withpeak=true(ITU-R BS.1770-4 gating, 4× oversampled true peak).Sample peak, RMS, noise floor, DC offset, flat factor: ffmpeg
astats, in the same pass viaasplit.Normalization:
loudnormpass 1 measures the file. Iftarget − measureddB of gain keeps the true peak under the ceiling, that exact gain is applied with ffmpeg'svolumefilter (true linear normalization, works on clips of any length). Otherwise pass 2 runsloudnormin dynamic mode with the measured values, which is far more accurate than single-pass. Lossy encoders (MP3/AAC) can add a few tenths of a dB of true peak; the result flags it.Silence:
silencedetect.
Safety
ffmpeg runs via
spawnwith argument arrays — no shell.Outputs are refused if they already exist unless
overwrite: true, and can't overwrite the input.No network access, no telemetry.
Development
npm install
npm run build
npm test # parser unit tests + end-to-end tests that generate audio with ffmpeg
npm run inspect # MCP Inspectordist/ is committed so npx github:… works without a build; CI verifies it matches src/.
Related servers
video-probe-mcp — inspect and conform video for each platform
caption-forge-mcp — SRT/VTT/ASS conversion, timing, linting and reel-style captions
loudness-check-mcp — LUFS, true peak, normalization, silence and clipping
frame-grab-mcp — frames, contact sheets, scene cuts and thumbnails your AI can see
script-timer-mcp — time, trim and format scripts for short-form video
License
MIT © 2026 Anshuman
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
49 audio tools: trim, convert, normalize, remove vocals, split stems, transcribe, and more.
Audio mastering for AI agents: LUFS/True Peak targets, Suno/Udio AI-fingerprint removal.
AI mixing and mastering: analyze your mixes, run DSP autofix, render stems, and master tracks.
Localize text, images, audio and subtitles with brand voice, memory and style guides.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAnalyzes audio files to extract exact, reproducible measurements like loudness, tempo, key, spectral balance, and clipping for LLM-based DAW control.-
- AlicenseAqualityDmaintenanceLoudness compliance verdicts against formal broadcast standards (EBU R128, ATSC A/85). Measures audio/video with ffmpeg and returns a pass/fail verdict with exact deltas and remediation parameters.247 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceEnables local, CPU-only audio post-production through tools for denoising, LUFS loudness normalization, silence removal, format conversion, pitch shifting, and speed changes. Supports podcast and video platform loudness compliance workflows.MIT
- AlicenseAqualityBmaintenanceAudio perception for AI agents. Measure loudness, clipping, noise and pitch; view spectrograms; split audio into events; transcribe speech; compare before/after; and clean up, edit or synthesize sound. Runs locally, no API keys.14144 PyPIMIT