{"id":18147,"date":"2026-03-13T10:40:40","date_gmt":"2026-03-13T10:40:40","guid":{"rendered":"https:\/\/soundandgo.com\/?p=18147"},"modified":"2026-09-08T09:32:36","modified_gmt":"2026-09-08T09:32:36","slug":"loudness-analyzer-and-lufs-normalizer","status":"publish","type":"post","link":"https:\/\/soundandgo.com\/en\/loudness-analyzer-and-lufs-normalizer\/","title":{"rendered":"Loudness Analyzer and LUFS Normalizer online"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"18147\" class=\"elementor elementor-18147 elementor-17153\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1e126d08 e-flex e-con-boxed e-con e-parent\" data-id=\"1e126d08\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-22c348c7 e-con-full e-flex e-con e-child\" data-id=\"22c348c7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1e87966d elementor-widget elementor-widget-breadcrumbs\" data-id=\"1e87966d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64d89163 elementor-widget elementor-widget-heading\" data-id=\"64d89163\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-xxl\">Loudness Analyzer and LUFS Normalizer online<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f1d58f7 elementor-icon-list--layout-inline elementor-align-center elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"2f1d58f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">100% Locally in browser<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">No Uploads<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">No Storing<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-check-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">No Ads<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4110878c elementor-widget elementor-widget-html\" data-id=\"4110878c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Loudness Tool<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/lamejs@1.2.0\/lame.min.js\"><\/script>\n\n<style>\n  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n\n  :root{\n    --bg:#fafafa;\n    --surface:#fff;\n    --fg:#111;\n    --muted:#6b7280;\n    --dim:#9ca3af;\n    --border:#e5e7eb;\n    --border-2:#d1d5db;\n    --brand:#4D00F2;\n    --brand-soft:rgba(77,0,242,.07);\n    --brand-mid:rgba(77,0,242,.14);\n    --green:#059669;\n    --green-bg:#ecfdf5;\n    --red:#dc2626;\n    --red-bg:#fef2f2;\n    --orange:#d97706;\n    --orange-bg:#fffbeb;\n    --blue:#2563eb;\n    --blue-bg:#eff6ff;\n    --radius:10px;\n    --font:system-ui, Arial, sans-serif;\n    --mono:ui-monospace, 'SF Mono', 'Consolas', monospace;\n  }\n\n  body{\n    font-family:var(--font);\n    background:var(--bg);\n    color:var(--fg);\n    line-height:1.5;\n    -webkit-font-smoothing:antialiased;\n  }\n\n  #app{\n    max-width:680px;\n    margin:0 auto;\n    padding:32px 24px 32px;\n    border:1px solid var(--border);\n    border-radius:14px;\n    background:var(--surface);\n    box-shadow:0 1px 3px rgba(0,0,0,.04);\n  }\n\n  \/* \u2500\u2500 Header \u2500\u2500 *\/\n  .header{\n    margin-bottom:36px;\n  }\n  .header h1{\n    font-size:22px;\n    font-weight:700;\n    letter-spacing:-.02em;\n    color:var(--fg);\n  }\n  .header p{\n    font-size:14px;\n    color:var(--muted);\n    margin-top:4px;\n  }\n\n  \/* \u2500\u2500 Section \u2500\u2500 *\/\n  .section{\n    margin-bottom:24px;\n  }\n  .section-head{\n    display:flex;\n    align-items:center;\n    gap:10px;\n    margin-bottom:10px;\n  }\n  .section-num{\n    width:24px;height:24px;\n    border-radius:50%;\n    background:var(--brand);\n    color:#fff;\n    font-size:12px;\n    font-weight:700;\n    display:flex;align-items:center;justify-content:center;\n    flex-shrink:0;\n  }\n  .section-num.done{background:var(--green)}\n  .section-title{\n    font-size:15px;\n    font-weight:650;\n  }\n  .section-status{\n    margin-left:auto;\n    font-size:12px;\n    font-weight:600;\n    color:var(--muted);\n    white-space:nowrap;\n    display:flex;\n    align-items:center;\n    gap:6px;\n  }\n  .section-status.active{color:var(--blue)}\n  .section-status.active::before{\n    content:'';\n    display:inline-block;\n    width:7px;height:7px;\n    border-radius:50%;\n    background:var(--blue);\n    animation:pulse 1.2s ease-in-out infinite;\n    flex-shrink:0;\n  }\n  @keyframes pulse{\n    0%,100%{opacity:1;transform:scale(1)}\n    50%{opacity:.35;transform:scale(.75)}\n  }\n  .section-status.ok{color:var(--green)}\n  .section-status.err{color:var(--red)}\n\n  .section-body{\n    margin-left:34px;\n  }\n  .section-body.disabled{\n    opacity:.45;\n    pointer-events:none;\n    user-select:none;\n  }\n\n  \/* \u2500\u2500 Drop Zone \u2500\u2500 *\/\n  .dropzone{\n    border:1.5px dashed var(--border-2);\n    border-radius:var(--radius);\n    padding:28px 20px;\n    text-align:center;\n    cursor:pointer;\n    transition:border-color .15s,background .15s;\n    position:relative;\n    background:var(--surface);\n  }\n  .dropzone:hover,.dropzone.drag{\n    border-color:var(--brand);\n    background:var(--brand-soft);\n  }\n  .dropzone input[type=file]{\n    position:absolute;inset:0;opacity:0;cursor:pointer;\n  }\n  .drop-label{\n    font-size:14px;\n    color:var(--muted);\n    font-weight:500;\n  }\n  .drop-label strong{color:var(--brand);font-weight:650}\n\n  .file-pill{\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    background:var(--surface);\n    border:1px solid var(--border);\n    border-radius:12px;\n    padding:8px 12px;\n    font-size:13px;\n    font-weight:600;\n    margin-top:8px;\n    max-width:100%;\n    word-break:break-all;\n  }\n  .file-pill .fname{\n    min-width:0;\n    overflow-wrap:break-word;\n  }\n  .file-pill .x{\n    width:22px;height:22px;\n    min-width:22px;min-height:22px;\n    border-radius:50%;\n    border:none;\n    background:var(--brand-soft);\n    color:var(--brand);\n    font-size:14px;\n    font-weight:700;\n    cursor:pointer;\n    display:flex;align-items:center;justify-content:center;\n    line-height:1;\n    padding:0;\n  }\n  .file-pill .x:hover{background:var(--brand-mid)}\n\n  \/* \u2500\u2500 Buttons \u2500\u2500 *\/\n  .btn{\n    display:inline-flex;align-items:center;justify-content:center;gap:6px;\n    border:1px solid var(--border);\n    padding:9px 18px;\n    font-size:14px;font-weight:650;\n    border-radius:8px;\n    cursor:pointer;\n    background:var(--surface);\n    color:var(--fg);\n    font-family:var(--font);\n    transition:all .12s ease;\n  }\n  .btn:hover{border-color:var(--border-2);background:#f9fafb}\n  .btn:active{transform:scale(.98)}\n  .btn:disabled{opacity:.4;cursor:not-allowed;transform:none}\n  .btn.primary{\n    background:var(--brand);\n    color:#fff;\n    border-color:var(--brand);\n  }\n  .btn.primary:hover{background:#4000d6}\n  .btn.primary:disabled{background:var(--brand);opacity:.4}\n  .btn.download{\n    background:var(--green);\n    color:#fff;\n    border-color:var(--green);\n  }\n  .btn.download:hover{background:#047857;border-color:#047857}\n  .btn.sm{padding:7px 14px;font-size:13px;border-radius:7px}\n\n  \/* \u2500\u2500 Progress \u2500\u2500 *\/\n  .progress-row{\n    display:flex;align-items:center;gap:10px;\n    margin-top:10px;\n  }\n  .progress-track{\n    flex:1;height:4px;\n    background:var(--border);\n    border-radius:99px;\n    overflow:hidden;\n  }\n  .progress-fill{\n    height:100%;width:0%;\n    background:var(--brand);\n    border-radius:99px;\n    transition:width .2s ease;\n  }\n  .progress-label{\n    font-size:12px;\n    font-family:var(--mono);\n    color:var(--muted);\n    min-width:36px;\n    text-align:right;\n  }\n  .progress-note{\n    font-size:12px;\n    color:var(--muted);\n    margin-top:4px;\n  }\n\n  \/* \u2500\u2500 Results Card \u2500\u2500 *\/\n  .result-grid{\n    display:grid;\n    grid-template-columns:repeat(3,1fr);\n    gap:1px;\n    background:var(--border);\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    overflow:hidden;\n    margin-top:12px;\n  }\n  @media(max-width:520px){\n    .result-grid{grid-template-columns:1fr}\n  }\n  .result-cell{\n    background:var(--surface);\n    padding:14px 16px;\n  }\n  .result-cell label{\n    font-size:11px;\n    font-weight:600;\n    color:var(--dim);\n    text-transform:uppercase;\n    letter-spacing:.04em;\n    display:block;\n    margin-bottom:4px;\n  }\n  .result-cell .val{\n    font-size:20px;\n    font-weight:700;\n    font-family:var(--mono);\n    letter-spacing:-.02em;\n  }\n\n  \/* \u2500\u2500 Platform List \u2500\u2500 *\/\n  .plat-section{margin-top:16px}\n  .plat-label{\n    font-size:13px;\n    font-weight:650;\n    color:var(--muted);\n    line-height:20px;\n  }\n\n  .plat-list{\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    overflow:visible;\n    background:var(--surface);\n  }\n  .plat-row{\n    display:flex;\n    align-items:center;\n    gap:10px;\n    padding:10px 14px;\n    font-size:13px;\n    border-bottom:1px solid var(--border);\n    background:var(--surface);\n    position:relative;\n  }\n  .plat-row:first-child{border-radius:var(--radius) var(--radius) 0 0}\n  .plat-row:last-child{border-bottom:none;border-radius:0 0 var(--radius) var(--radius)}\n  .plat-row:only-child{border-radius:var(--radius)}\n  .plat-icon{\n    width:8px;height:8px;\n    border-radius:50%;\n    flex-shrink:0;\n  }\n  .plat-icon.ok{background:var(--green)}\n  .plat-icon.down{background:var(--orange)}\n  .plat-icon.warn{background:var(--red)}\n  .plat-icon.up{background:var(--blue)}\n  .plat-name{font-weight:600;min-width:120px}\n  .plat-info{color:var(--muted);flex:1}\n  .plat-tag{\n    font-size:11px;\n    font-weight:600;\n    padding:2px 8px;\n    border-radius:999px;\n    white-space:nowrap;\n    position:relative;\n    cursor:help;\n  }\n  .plat-tag.ok{background:var(--green-bg);color:var(--green)}\n  .plat-tag.down{background:var(--orange-bg);color:var(--orange)}\n  .plat-tag.warn{background:var(--red-bg);color:var(--red)}\n  .plat-tag.up{background:var(--blue-bg);color:var(--blue)}\n\n  .plat-tag .tag-tip{\n    display:none;\n    position:absolute;\n    bottom:calc(100% + 6px);\n    right:0;\n    width:220px;\n    background:var(--fg);\n    color:#fff;\n    font-size:11px;\n    font-weight:400;\n    line-height:1.45;\n    padding:8px 10px;\n    border-radius:7px;\n    z-index:80;\n    pointer-events:none;\n    white-space:normal;\n  }\n  .plat-tag .tag-tip::after{\n    content:'';\n    position:absolute;\n    top:100%;\n    right:12px;\n    border:5px solid transparent;\n    border-top-color:var(--fg);\n  }\n  .plat-tag:hover .tag-tip{display:block}\n  @media(max-width:520px){\n    .plat-tag .tag-tip{right:-4px;width:200px}\n  }\n\n  \/* \u2500\u2500 Info Popover \u2500\u2500 *\/\n  .plat-header{\n    display:flex;\n    align-items:center;\n    gap:6px;\n    margin-bottom:8px;\n    line-height:1;\n  }\n  .info-trigger{\n    position:relative;\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    width:20px;height:20px;\n    min-width:20px;min-height:20px;\n    max-width:20px;max-height:20px;\n    border-radius:50% !important;\n    border:1.5px solid var(--border-2) !important;\n    background:var(--surface) !important;\n    color:var(--muted);\n    font-size:12px;\n    font-weight:600;\n    cursor:help;\n    padding:0 !important;\n    margin:0;\n    font-family:var(--font);\n    line-height:1;\n    flex-shrink:0;\n    overflow:visible;\n    box-sizing:border-box;\n    -webkit-appearance:none;\n    appearance:none;\n    -webkit-tap-highlight-color:transparent;\n  }\n  .info-trigger:hover{border-color:var(--brand) !important;color:var(--brand)}\n  .info-pop{\n    display:none;\n    position:absolute;\n    bottom:calc(100% + 8px);\n    left:50%;\n    transform:translateX(-50%);\n    width:280px;\n    background:var(--surface);\n    border:1px solid var(--border);\n    border-radius:10px;\n    box-shadow:0 8px 24px rgba(0,0,0,.1);\n    padding:14px;\n    z-index:100;\n    font-size:12px;\n    font-weight:400;\n    color:var(--fg);\n    line-height:1.5;\n    text-align:left;\n    cursor:default;\n  }\n  @media(max-width:520px){\n    .info-pop{\n      left:auto;right:-10px;\n      transform:none;\n    }\n    .info-pop::after{left:auto;right:16px;transform:none}\n  }\n  .info-pop::after{\n    content:'';\n    position:absolute;\n    top:100%;\n    left:50%;\n    transform:translateX(-50%);\n    border:6px solid transparent;\n    border-top-color:var(--border);\n  }\n  .info-trigger:hover .info-pop,\n  .info-trigger.open .info-pop{\n    display:block;\n  }\n  .info-pop dt{font-weight:700;margin-top:8px}\n  .info-pop dt:first-child{margin-top:0}\n  .info-pop dd{margin:2px 0 0;color:var(--muted)}\n  .info-pop .dot-i{\n    display:inline-block;\n    width:7px;height:7px;\n    border-radius:50%;\n    margin-right:4px;\n    vertical-align:middle;\n  }\n  .info-pop .dot-i.c-green{background:var(--green)}\n  .info-pop .dot-i.c-orange{background:var(--orange)}\n  .info-pop .dot-i.c-blue{background:var(--blue)}\n  .info-pop .dot-i.c-red{background:var(--red)}\n\n  \/* \u2500\u2500 Controls \u2500\u2500 *\/\n  .control-row{\n    display:flex;\n    flex-wrap:wrap;\n    gap:10px;\n    align-items:flex-end;\n  }\n  .field{display:flex;flex-direction:column;gap:4px}\n  .field label{\n    font-size:12px;\n    font-weight:600;\n    color:var(--muted);\n  }\n  .field select,.field input[type=number]{\n    -webkit-appearance:none;appearance:none;\n    font-family:var(--font);\n    font-size:14px;\n    padding:8px 12px;\n    border:1px solid var(--border);\n    border-radius:8px;\n    background:var(--surface);\n    color:var(--fg);\n    outline:none;\n    min-width:0;\n  }\n  .field select:focus,.field input:focus{\n    border-color:var(--brand);\n    box-shadow:0 0 0 3px var(--brand-soft);\n  }\n\n  .advanced-toggle{\n    font-size:12px;\n    color:var(--muted);\n    background:none;\n    border:none;\n    cursor:pointer;\n    font-family:var(--font);\n    font-weight:600;\n    padding:4px 0;\n    margin-top:6px;\n    outline:none;\n    -webkit-tap-highlight-color:transparent;\n    text-decoration:none;\n  }\n  .advanced-toggle:hover,\n  .advanced-toggle:focus,\n  .advanced-toggle:active{\n    color:var(--muted);\n    background:none;\n    border:none;\n    outline:none;\n    text-decoration:none;\n    transform:none;\n  }\n  .advanced-fields{\n    margin-top:8px;\n    padding-top:8px;\n    border-top:1px solid var(--border);\n  }\n\n  \/* \u2500\u2500 Norm result \u2500\u2500 *\/\n  .norm-result{\n    margin-top:12px;\n    padding:12px 16px;\n    border-radius:var(--radius);\n    border:1px solid var(--border);\n    background:var(--surface);\n    display:flex;\n    align-items:center;\n    flex-wrap:wrap;\n    gap:16px;\n  }\n  .norm-stat{\n    font-size:13px;\n  }\n  .norm-stat .lbl{color:var(--muted);font-weight:500}\n  .norm-stat .v{font-weight:700;font-family:var(--mono)}\n\n  .hidden{display:none!important}\n<\/style>\n<\/head>\n<body>\n<!-- GROESSENTEST BLOCK A (reiner Kommentar, ohne Funktion)\nFuelltext HTML-Kommentar Zeile 001: sekunde momentan ausgabe vorgabe pegel true bereich abweichung limiter kodierung daempfung pegel iteration schwelle\nFuelltext HTML-Kommentar Zeile 002: analyse peak datei eingabe true gewichtung peak korrektur datei pegel bereich verstaerkung integriert kanal\nFuelltext HTML-Kommentar Zeile 003: plattform plattform daempfung pegel verstaerkung daempfung ausgabe pegel kanal analyse korrektur ergebnis kurzzeit block\nFuelltext HTML-Kommentar Zeile 004: eingabe momentan abweichung integriert verstaerkung hop korrektur bereich empfehlung absolut limiter daempfung verstaerkung plattform\nFuelltext HTML-Kommentar Zeile 005: relativ kodierung limiter korrektur produktion true verstaerkung pegel kopfraum schwelle konvergenz empfehlung abweichung datei\nFuelltext HTML-Kommentar Zeile 006: stimme sekunde schritt daempfung schritt kodierung hop gewichtung dynamik absolut praxis stimme gewichtung peak\nFuelltext HTML-Kommentar Zeile 007: verstaerkung hop ziel konvergenz kontrolle abtastrate podcast prozess block reserve true integriert iteration eingabe\nFuelltext HTML-Kommentar Zeile 008: gating sprache abtastrate momentan konvergenz eingabe analyse norm true sprache korrektur verstaerkung dynamik kontrolle\nFuelltext HTML-Kommentar Zeile 009: bereich sekunde abtastrate praxis puffer reserve konvergenz daempfung umfang schritt true messwert peak fenster\nFuelltext HTML-Kommentar Zeile 010: phase praxis norm true pegel podcast praxis hop vorgabe verstaerkung empfehlung bereich prozess block\nFuelltext HTML-Kommentar Zeile 011: produktion format kontrolle norm puffer messung schritt puffer gating kopfraum integriert konvergenz pegel schwelle\nFuelltext HTML-Kommentar Zeile 012: stimme block kurzzeit musik gewichtung ausgabe ausgabe pruefung konvergenz peak gating prozess ausgabe korrektur\nFuelltext HTML-Kommentar Zeile 013: fenster kontrolle kurzzeit bereich datei pruefung korrektur fenster produktion eingabe puffer empfehlung kontrolle format\nFuelltext HTML-Kommentar Zeile 014: kanal momentan peak absolut momentan kanal norm kanal loudness konvergenz messwert daempfung absolut filter\nFuelltext HTML-Kommentar Zeile 015: block loudness momentan eingabe abweichung kodierung kopfraum verstaerkung sekunde kurzzeit praxis ergebnis iteration kopfraum\nFuelltext HTML-Kommentar Zeile 016: vorgabe empfehlung musik pegel schritt abgleich pruefung stimme pruefung empfehlung umfang korrektur ausgabe ausgabe\nFuelltext HTML-Kommentar Zeile 017: ausgabe ausgabe limiter phase plattform ausgabe pegel relativ true schwelle prozess gating integriert abtastrate\nFuelltext HTML-Kommentar Zeile 018: reserve pegel limiter loudness verstaerkung momentan abweichung limiter kodierung kopfraum messung true pruefung schwelle\nFuelltext HTML-Kommentar Zeile 019: kopfraum format momentan plattform filter puffer reserve kodierung phase integriert integriert ergebnis konvergenz schritt\nFuelltext HTML-Kommentar Zeile 020: phase phase hop peak momentan limiter musik abtastrate musik filter phase messwert praxis gating\nFuelltext HTML-Kommentar Zeile 021: ziel messung schwelle ziel kodierung momentan praxis abweichung messung sprache ziel hop vorgabe pruefung\nFuelltext HTML-Kommentar Zeile 022: peak praxis ergebnis filter ziel kodierung gating puffer stimme kanal abweichung abweichung stimme iteration\nFuelltext HTML-Kommentar Zeile 023: abtastrate plattform kanal kopfraum umfang dynamik sprache ergebnis relativ umfang gewichtung bereich ausgabe musik\nFuelltext HTML-Kommentar Zeile 024: umfang kanal relativ ziel konvergenz puffer podcast messung messung dynamik fenster phase filter relativ\nFuelltext HTML-Kommentar Zeile 025: praxis reserve puffer prozess umfang podcast puffer kodierung peak kanal limiter kanal phase relativ\nFuelltext HTML-Kommentar Zeile 026: abtastrate schwelle phase kopfraum abgleich kopfraum messwert loudness phase vorgabe puffer umfang vorgabe peak\nFuelltext HTML-Kommentar Zeile 027: messwert norm integriert format dynamik produktion sprache relativ phase kontrolle absolut datei dynamik plattform\nFuelltext HTML-Kommentar Zeile 028: abtastrate peak umfang podcast ausgabe schritt ausgabe musik peak podcast gating gating kurzzeit messung\nFuelltext HTML-Kommentar Zeile 029: momentan daempfung abgleich schritt umfang vorgabe momentan kopfraum bereich reserve phase norm puffer momentan\nFuelltext HTML-Kommentar Zeile 030: korrektur korrektur kurzzeit messung loudness umfang podcast vorgabe limiter ziel musik kurzzeit datei pruefung\nFuelltext HTML-Kommentar Zeile 031: relativ bereich pruefung schwelle messung filter schwelle block iteration gewichtung sprache daempfung sekunde filter\nFuelltext HTML-Kommentar Zeile 032: abweichung eingabe messwert kurzzeit pegel musik puffer abgleich schritt norm daempfung bereich abgleich ziel\nFuelltext HTML-Kommentar Zeile 033: eingabe bereich kontrolle iteration kurzzeit abweichung momentan ziel iteration messung pruefung prozess stimme absolut\nFuelltext HTML-Kommentar Zeile 034: reserve loudness stimme umfang momentan absolut momentan phase kopfraum podcast integriert korrektur pegel sekunde\nFuelltext HTML-Kommentar Zeile 035: empfehlung ziel ziel korrektur phase dynamik stimme limiter kontrolle korrektur pegel gewichtung relativ fenster\nFuelltext HTML-Kommentar Zeile 036: analyse stimme limiter iteration prozess korrektur messung sprache abgleich true prozess sekunde kopfraum iteration\nFuelltext HTML-Kommentar Zeile 037: reserve iteration relativ praxis fenster prozess iteration abweichung umfang phase iteration gewichtung praxis ziel\nFuelltext HTML-Kommentar Zeile 038: kontrolle kontrolle filter korrektur abgleich relativ messwert prozess kurzzeit eingabe integriert ausgabe prozess sekunde\nFuelltext HTML-Kommentar Zeile 039: true norm gewichtung datei true schwelle norm hop dynamik integriert abgleich stimme momentan produktion\nFuelltext HTML-Kommentar Zeile 040: vorgabe norm kodierung momentan filter kontrolle kurzzeit schritt kanal musik limiter ausgabe kontrolle konvergenz\nFuelltext HTML-Kommentar Zeile 041: gating norm messwert kanal gating produktion datei iteration ausgabe abtastrate eingabe relativ puffer sekunde\nFuelltext HTML-Kommentar Zeile 042: peak podcast kodierung messung abtastrate korrektur schritt prozess produktion messung format abtastrate ziel kopfraum\nFuelltext HTML-Kommentar Zeile 043: block iteration true integriert dynamik kanal kontrolle limiter peak filter fenster analyse abgleich stimme\nFuelltext HTML-Kommentar Zeile 044: absolut fenster sprache kurzzeit bereich datei ergebnis empfehlung bereich filter ausgabe momentan abweichung iteration\nFuelltext HTML-Kommentar Zeile 045: verstaerkung konvergenz praxis sekunde peak fenster pegel umfang praxis absolut datei abgleich true fenster\nFuelltext HTML-Kommentar Zeile 046: messung plattform peak umfang filter peak reserve ergebnis kanal true filter pruefung integriert schritt\nFuelltext HTML-Kommentar Zeile 047: loudness abtastrate korrektur eingabe fenster kopfraum kurzzeit analyse ziel produktion gewichtung integriert gating filter\nFuelltext HTML-Kommentar Zeile 048: pegel absolut relativ hop plattform hop ziel sprache schwelle block prozess iteration empfehlung absolut\nFuelltext HTML-Kommentar Zeile 049: fenster puffer umfang messung filter analyse loudness messung podcast iteration korrektur relativ iteration phase\nFuelltext HTML-Kommentar Zeile 050: gewichtung prozess limiter norm bereich vorgabe datei norm konvergenz abweichung messwert kontrolle ausgabe iteration\nFuelltext HTML-Kommentar Zeile 051: hop praxis schwelle kanal abtastrate relativ messwert kontrolle produktion podcast plattform kurzzeit ausgabe puffer\nFuelltext HTML-Kommentar Zeile 052: pegel messwert kurzzeit loudness true plattform musik kontrolle filter datei gating pegel peak norm\nFuelltext HTML-Kommentar Zeile 053: messwert format pruefung iteration norm block reserve gewichtung praxis block analyse schritt absolut gating\nFuelltext HTML-Kommentar Zeile 054: fenster prozess loudness filter kodierung abtastrate korrektur sekunde gewichtung analyse kontrolle hop schwelle puffer\nFuelltext HTML-Kommentar Zeile 055: absolut loudness abtastrate format peak phase fenster iteration vorgabe relativ gewichtung iteration stimme loudness\nFuelltext HTML-Kommentar Zeile 056: peak filter bereich peak momentan ausgabe daempfung analyse ausgabe messung hop hop plattform kanal\nFuelltext HTML-Kommentar Zeile 057: peak daempfung ziel ergebnis sprache momentan norm abgleich produktion dynamik kontrolle reserve format sprache\nFuelltext HTML-Kommentar Zeile 058: sekunde podcast konvergenz momentan block podcast kopfraum vorgabe momentan analyse bereich messwert produktion abgleich\nFuelltext HTML-Kommentar Zeile 059: iteration plattform datei podcast praxis umfang iteration kurzzeit ziel sprache iteration verstaerkung messwert bereich\nFuelltext HTML-Kommentar Zeile 060: umfang messung bereich empfehlung daempfung umfang abgleich produktion empfehlung praxis vorgabe kanal peak messung\nFuelltext HTML-Kommentar Zeile 061: analyse kurzzeit plattform kodierung limiter format messwert prozess korrektur pegel plattform messung plattform abweichung\nFuelltext HTML-Kommentar Zeile 062: empfehlung gewichtung konvergenz filter loudness schritt umfang true musik iteration abgleich abweichung peak norm\nFuelltext HTML-Kommentar Zeile 063: ziel true musik musik phase filter umfang true ergebnis filter gewichtung podcast sprache schwelle\nFuelltext HTML-Kommentar Zeile 064: kanal musik vorgabe schritt konvergenz ergebnis format true phase empfehlung block stimme analyse kopfraum\nFuelltext HTML-Kommentar Zeile 065: plattform vorgabe relativ true reserve momentan abtastrate filter vorgabe musik praxis hop kopfraum verstaerkung\nFuelltext HTML-Kommentar Zeile 066: kurzzeit loudness phase pegel konvergenz fenster empfehlung limiter praxis schwelle empfehlung konvergenz block produktion\nFuelltext HTML-Kommentar Zeile 067: ziel block schritt schritt schritt stimme integriert abgleich korrektur relativ hop peak phase messung\n-->\n<div id=\"app\">\n\n  <div class=\"header\">\n    <h1>Loudness Tool<\/h1>\n    <p>Analyze and normalize your audio files. Everything stays on your device.<\/p>\n  <\/div>\n\n  <!-- STEP 1 -->\n  <div class=\"section\" id=\"s1\">\n    <div class=\"section-head\">\n      <div class=\"section-num\" id=\"num1\">1<\/div>\n      <div class=\"section-title\">Select a file<\/div>\n      <div class=\"section-status\" id=\"st1\"><\/div>\n    <\/div>\n    <div class=\"section-body\" id=\"b1\">\n      <div class=\"dropzone\" id=\"dropzone\">\n        <div class=\"drop-label\">Drop your file here or <strong>browse<\/strong><\/div>\n        <input type=\"file\" id=\"fileInput\" accept=\"audio\/*\">\n      <\/div>\n      <div id=\"filePill\" class=\"hidden\">\n        <div class=\"file-pill\">\n          <span class=\"fname\" id=\"fileName\"><\/span>\n          <button class=\"x\" id=\"clearBtn\" title=\"Remove\">\u00d7<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- STEP 2 -->\n  <div class=\"section\" id=\"s2\">\n    <div class=\"section-head\">\n      <div class=\"section-num\" id=\"num2\">2<\/div>\n      <div class=\"section-title\">Analyze<\/div>\n      <div class=\"section-status\" id=\"st2\"><\/div>\n    <\/div>\n    <div class=\"section-body disabled\" id=\"b2\">\n      <div class=\"hint\" id=\"anHint\" style=\"font-size:13px;color:var(--muted);margin-bottom:8px\">Starts automatically once you add a file.<\/div>\n\n      <div id=\"anResult\" class=\"hidden\">\n        <div class=\"result-grid\">\n          <div class=\"result-cell\">\n            <label>Integrated<\/label>\n            <div class=\"val\" id=\"outLUFS\">\u2014<\/div>\n          <\/div>\n          <div class=\"result-cell\">\n            <label>Range<\/label>\n            <div class=\"val\" id=\"outLRA\">\u2014<\/div>\n          <\/div>\n          <div class=\"result-cell\">\n            <label>True Peak<\/label>\n            <div class=\"val\" id=\"outSP\">\u2014<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"plat-section\">\n          <div class=\"plat-header\">\n            <span class=\"plat-label\">Platform forecast<\/span>\n            <button class=\"info-trigger\" id=\"infoTrigger\" aria-label=\"Explanation\">?\n              <div class=\"info-pop\" id=\"infoPop\">\n                <dl>\n                  <dt><span class=\"dot-i c-green\"><\/span> on target<\/dt>\n                  <dd>Your file sits inside the target range. The platform will leave it alone.<\/dd>\n                  <dt><span class=\"dot-i c-orange\"><\/span> turned down<\/dt>\n                  <dd>Your file is louder than the target. The platform will turn it down on playback.<\/dd>\n                  <dt><span class=\"dot-i c-blue\"><\/span> turned up<\/dt>\n                  <dd>Your file is quieter than the target. The platform will turn it up on playback.<\/dd>\n                  <dt><span class=\"dot-i c-red\"><\/span> too quiet<\/dt>\n                  <dd>This platform only turns files down, never up. Yours stays too quiet \u2014 normalize it first.<\/dd>\n                <\/dl>\n              <\/div>\n            <\/button>\n          <\/div>\n          <div id=\"platList\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- STEP 3 -->\n  <div class=\"section\" id=\"s3\">\n    <div class=\"section-head\">\n      <div class=\"section-num\" id=\"num3\">3<\/div>\n      <div class=\"section-title\">Normalize<\/div>\n      <div class=\"section-status\" id=\"st3\"><\/div>\n    <\/div>\n    <div class=\"section-body disabled\" id=\"b3\">\n      <div class=\"control-row\">\n        <div class=\"field\" style=\"flex:1;min-width:180px\">\n          <label for=\"preset\">Platform \/ target<\/label>\n          <select id=\"preset\">\n            <option value=\"yt\">YouTube: -14 LUFS<\/option>\n            <option value=\"yts\">YouTube Shorts: -14 LUFS<\/option>\n            <option value=\"ig\">Instagram: -14 LUFS<\/option>\n            <option value=\"tt\">TikTok: -14 LUFS<\/option>\n            <option value=\"spm\">Spotify Music: -14 LUFS<\/option>\n            <option value=\"spp\">Spotify Podcasts: -14 LUFS<\/option>\n            <option value=\"ap\">Apple Podcasts: -16 LUFS<\/option>\n            <option value=\"am\">Apple Music: -16 LUFS<\/option>\n            <option value=\"az\">Amazon Music: -14 LUFS<\/option>\n            <option value=\"au\">Audible: -18 LUFS<\/option>\n            <option value=\"custom\">Custom value<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\" style=\"min-width:100px\">\n          <label for=\"outFmt\">Format<\/label>\n          <select id=\"outFmt\">\n            <option value=\"wav\">WAV<\/option>\n            <option value=\"mp3\">MP3 320k<\/option>\n          <\/select>\n        <\/div>\n        <button class=\"btn primary\" id=\"normBtn\" disabled>Normalize<\/button>\n      <\/div>\n\n      <div id=\"customRow\" class=\"hidden\">\n        <div class=\"advanced-fields\">\n          <div class=\"control-row\">\n            <div class=\"field\">\n              <label for=\"customLufs\">Target LUFS<\/label>\n              <input id=\"customLufs\" type=\"number\" step=\"0.1\" value=\"-16\" style=\"width:100px\">\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <button class=\"advanced-toggle\" id=\"advToggle\">Limiter settings \u25b8<\/button>\n      <div id=\"advFields\" class=\"hidden\">\n        <div class=\"advanced-fields\">\n          <div class=\"control-row\">\n            <div class=\"field\">\n              <label for=\"ceiling\">Ceiling (dBTP)<\/label>\n              <input id=\"ceiling\" type=\"number\" step=\"0.1\" value=\"-1.0\" style=\"width:100px\">\n            <\/div>\n            <div class=\"field\">\n              <label for=\"lookahead\">Lookahead (ms)<\/label>\n              <input id=\"lookahead\" type=\"number\" step=\"0.1\" value=\"10\" style=\"width:100px\">\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div id=\"normProgress\" class=\"hidden\">\n        <div class=\"progress-row\">\n          <div class=\"progress-track\"><div class=\"progress-fill\" id=\"normBar\"><\/div><\/div>\n          <div class=\"progress-label\" id=\"normPct\">0%<\/div>\n        <\/div>\n        <div class=\"progress-note\" id=\"normNote\"><\/div>\n      <\/div>\n\n      <div id=\"normResultArea\" class=\"hidden\">\n        <div class=\"norm-result\">\n          <div class=\"norm-stat\"><span class=\"lbl\">Result: <\/span><span class=\"v\" id=\"resLUFS\"><\/span><\/div>\n          <div class=\"norm-stat\"><span class=\"lbl\">True Peak: <\/span><span class=\"v\" id=\"resSP\"><\/span><\/div>\n          <div class=\"norm-stat\"><span class=\"lbl\">Status: <\/span><span class=\"v\" id=\"resStatus\" style=\"color:var(--green)\">\u2713 OK<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n\/* Some CMS setups (WordPress kses and similar sanitizers) strip layout\n   properties such as display, position, flex and grid out of a <style>\n   block in page content. Injecting the same CSS at runtime bypasses that\n   filter \u2014 the stylesheet below is identical to the one in <head>. *\/\n(function(){\n  var css = `  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n\n  :root{\n    --bg:#fafafa;\n    --surface:#fff;\n    --fg:#111;\n    --muted:#6b7280;\n    --dim:#9ca3af;\n    --border:#e5e7eb;\n    --border-2:#d1d5db;\n    --brand:#4D00F2;\n    --brand-soft:rgba(77,0,242,.07);\n    --brand-mid:rgba(77,0,242,.14);\n    --green:#059669;\n    --green-bg:#ecfdf5;\n    --red:#dc2626;\n    --red-bg:#fef2f2;\n    --orange:#d97706;\n    --orange-bg:#fffbeb;\n    --blue:#2563eb;\n    --blue-bg:#eff6ff;\n    --radius:10px;\n    --font:system-ui, Arial, sans-serif;\n    --mono:ui-monospace, 'SF Mono', 'Consolas', monospace;\n  }\n\n  body{\n    font-family:var(--font);\n    background:var(--bg);\n    color:var(--fg);\n    line-height:1.5;\n    -webkit-font-smoothing:antialiased;\n  }\n\n  #app{\n    max-width:680px;\n    margin:0 auto;\n    padding:32px 24px 32px;\n    border:1px solid var(--border);\n    border-radius:14px;\n    background:var(--surface);\n    box-shadow:0 1px 3px rgba(0,0,0,.04);\n  }\n\n  \/* \u2500\u2500 Header \u2500\u2500 *\/\n  .header{\n    margin-bottom:36px;\n  }\n  .header h1{\n    font-size:22px;\n    font-weight:700;\n    letter-spacing:-.02em;\n    color:var(--fg);\n  }\n  .header p{\n    font-size:14px;\n    color:var(--muted);\n    margin-top:4px;\n  }\n\n  \/* \u2500\u2500 Section \u2500\u2500 *\/\n  .section{\n    margin-bottom:24px;\n  }\n  .section-head{\n    display:flex;\n    align-items:center;\n    gap:10px;\n    margin-bottom:10px;\n  }\n  .section-num{\n    width:24px;height:24px;\n    border-radius:50%;\n    background:var(--brand);\n    color:#fff;\n    font-size:12px;\n    font-weight:700;\n    display:flex;align-items:center;justify-content:center;\n    flex-shrink:0;\n  }\n  .section-num.done{background:var(--green)}\n  .section-title{\n    font-size:15px;\n    font-weight:650;\n  }\n  .section-status{\n    margin-left:auto;\n    font-size:12px;\n    font-weight:600;\n    color:var(--muted);\n    white-space:nowrap;\n    display:flex;\n    align-items:center;\n    gap:6px;\n  }\n  .section-status.active{color:var(--blue)}\n  .section-status.active::before{\n    content:'';\n    display:inline-block;\n    width:7px;height:7px;\n    border-radius:50%;\n    background:var(--blue);\n    animation:pulse 1.2s ease-in-out infinite;\n    flex-shrink:0;\n  }\n  @keyframes pulse{\n    0%,100%{opacity:1;transform:scale(1)}\n    50%{opacity:.35;transform:scale(.75)}\n  }\n  .section-status.ok{color:var(--green)}\n  .section-status.err{color:var(--red)}\n\n  .section-body{\n    margin-left:34px;\n  }\n  .section-body.disabled{\n    opacity:.45;\n    pointer-events:none;\n    user-select:none;\n  }\n\n  \/* \u2500\u2500 Drop Zone \u2500\u2500 *\/\n  .dropzone{\n    border:1.5px dashed var(--border-2);\n    border-radius:var(--radius);\n    padding:28px 20px;\n    text-align:center;\n    cursor:pointer;\n    transition:border-color .15s,background .15s;\n    position:relative;\n    background:var(--surface);\n  }\n  .dropzone:hover,.dropzone.drag{\n    border-color:var(--brand);\n    background:var(--brand-soft);\n  }\n  .dropzone input[type=file]{\n    position:absolute;inset:0;opacity:0;cursor:pointer;\n  }\n  .drop-label{\n    font-size:14px;\n    color:var(--muted);\n    font-weight:500;\n  }\n  .drop-label strong{color:var(--brand);font-weight:650}\n\n  .file-pill{\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    background:var(--surface);\n    border:1px solid var(--border);\n    border-radius:12px;\n    padding:8px 12px;\n    font-size:13px;\n    font-weight:600;\n    margin-top:8px;\n    max-width:100%;\n    word-break:break-all;\n  }\n  .file-pill .fname{\n    min-width:0;\n    overflow-wrap:break-word;\n  }\n  .file-pill .x{\n    width:22px;height:22px;\n    min-width:22px;min-height:22px;\n    border-radius:50%;\n    border:none;\n    background:var(--brand-soft);\n    color:var(--brand);\n    font-size:14px;\n    font-weight:700;\n    cursor:pointer;\n    display:flex;align-items:center;justify-content:center;\n    line-height:1;\n    padding:0;\n  }\n  .file-pill .x:hover{background:var(--brand-mid)}\n\n  \/* \u2500\u2500 Buttons \u2500\u2500 *\/\n  .btn{\n    display:inline-flex;align-items:center;justify-content:center;gap:6px;\n    border:1px solid var(--border);\n    padding:9px 18px;\n    font-size:14px;font-weight:650;\n    border-radius:8px;\n    cursor:pointer;\n    background:var(--surface);\n    color:var(--fg);\n    font-family:var(--font);\n    transition:all .12s ease;\n  }\n  .btn:hover{border-color:var(--border-2);background:#f9fafb}\n  .btn:active{transform:scale(.98)}\n  .btn:disabled{opacity:.4;cursor:not-allowed;transform:none}\n  .btn.primary{\n    background:var(--brand);\n    color:#fff;\n    border-color:var(--brand);\n  }\n  .btn.primary:hover{background:#4000d6}\n  .btn.primary:disabled{background:var(--brand);opacity:.4}\n  .btn.download{\n    background:var(--green);\n    color:#fff;\n    border-color:var(--green);\n  }\n  .btn.download:hover{background:#047857;border-color:#047857}\n  .btn.sm{padding:7px 14px;font-size:13px;border-radius:7px}\n\n  \/* \u2500\u2500 Progress \u2500\u2500 *\/\n  .progress-row{\n    display:flex;align-items:center;gap:10px;\n    margin-top:10px;\n  }\n  .progress-track{\n    flex:1;height:4px;\n    background:var(--border);\n    border-radius:99px;\n    overflow:hidden;\n  }\n  .progress-fill{\n    height:100%;width:0%;\n    background:var(--brand);\n    border-radius:99px;\n    transition:width .2s ease;\n  }\n  .progress-label{\n    font-size:12px;\n    font-family:var(--mono);\n    color:var(--muted);\n    min-width:36px;\n    text-align:right;\n  }\n  .progress-note{\n    font-size:12px;\n    color:var(--muted);\n    margin-top:4px;\n  }\n\n  \/* \u2500\u2500 Results Card \u2500\u2500 *\/\n  .result-grid{\n    display:grid;\n    grid-template-columns:repeat(3,1fr);\n    gap:1px;\n    background:var(--border);\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    overflow:hidden;\n    margin-top:12px;\n  }\n  @media(max-width:520px){\n    .result-grid{grid-template-columns:1fr}\n  }\n  .result-cell{\n    background:var(--surface);\n    padding:14px 16px;\n  }\n  .result-cell label{\n    font-size:11px;\n    font-weight:600;\n    color:var(--dim);\n    text-transform:uppercase;\n    letter-spacing:.04em;\n    display:block;\n    margin-bottom:4px;\n  }\n  .result-cell .val{\n    font-size:20px;\n    font-weight:700;\n    font-family:var(--mono);\n    letter-spacing:-.02em;\n  }\n\n  \/* \u2500\u2500 Platform List \u2500\u2500 *\/\n  .plat-section{margin-top:16px}\n  .plat-label{\n    font-size:13px;\n    font-weight:650;\n    color:var(--muted);\n    line-height:20px;\n  }\n\n  .plat-list{\n    border:1px solid var(--border);\n    border-radius:var(--radius);\n    overflow:visible;\n    background:var(--surface);\n  }\n  .plat-row{\n    display:flex;\n    align-items:center;\n    gap:10px;\n    padding:10px 14px;\n    font-size:13px;\n    border-bottom:1px solid var(--border);\n    background:var(--surface);\n    position:relative;\n  }\n  .plat-row:first-child{border-radius:var(--radius) var(--radius) 0 0}\n  .plat-row:last-child{border-bottom:none;border-radius:0 0 var(--radius) var(--radius)}\n  .plat-row:only-child{border-radius:var(--radius)}\n  .plat-icon{\n    width:8px;height:8px;\n    border-radius:50%;\n    flex-shrink:0;\n  }\n  .plat-icon.ok{background:var(--green)}\n  .plat-icon.down{background:var(--orange)}\n  .plat-icon.warn{background:var(--red)}\n  .plat-icon.up{background:var(--blue)}\n  .plat-name{font-weight:600;min-width:120px}\n  .plat-info{color:var(--muted);flex:1}\n  .plat-tag{\n    font-size:11px;\n    font-weight:600;\n    padding:2px 8px;\n    border-radius:999px;\n    white-space:nowrap;\n    position:relative;\n    cursor:help;\n  }\n  .plat-tag.ok{background:var(--green-bg);color:var(--green)}\n  .plat-tag.down{background:var(--orange-bg);color:var(--orange)}\n  .plat-tag.warn{background:var(--red-bg);color:var(--red)}\n  .plat-tag.up{background:var(--blue-bg);color:var(--blue)}\n\n  .plat-tag .tag-tip{\n    display:none;\n    position:absolute;\n    bottom:calc(100% + 6px);\n    right:0;\n    width:220px;\n    background:var(--fg);\n    color:#fff;\n    font-size:11px;\n    font-weight:400;\n    line-height:1.45;\n    padding:8px 10px;\n    border-radius:7px;\n    z-index:80;\n    pointer-events:none;\n    white-space:normal;\n  }\n  .plat-tag .tag-tip::after{\n    content:'';\n    position:absolute;\n    top:100%;\n    right:12px;\n    border:5px solid transparent;\n    border-top-color:var(--fg);\n  }\n  .plat-tag:hover .tag-tip{display:block}\n  @media(max-width:520px){\n    .plat-tag .tag-tip{right:-4px;width:200px}\n  }\n\n  \/* \u2500\u2500 Info Popover \u2500\u2500 *\/\n  .plat-header{\n    display:flex;\n    align-items:center;\n    gap:6px;\n    margin-bottom:8px;\n    line-height:1;\n  }\n  .info-trigger{\n    position:relative;\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    width:20px;height:20px;\n    min-width:20px;min-height:20px;\n    max-width:20px;max-height:20px;\n    border-radius:50% !important;\n    border:1.5px solid var(--border-2) !important;\n    background:var(--surface) !important;\n    color:var(--muted);\n    font-size:12px;\n    font-weight:600;\n    cursor:help;\n    padding:0 !important;\n    margin:0;\n    font-family:var(--font);\n    line-height:1;\n    flex-shrink:0;\n    overflow:visible;\n    box-sizing:border-box;\n    -webkit-appearance:none;\n    appearance:none;\n    -webkit-tap-highlight-color:transparent;\n  }\n  .info-trigger:hover{border-color:var(--brand) !important;color:var(--brand)}\n  .info-pop{\n    display:none;\n    position:absolute;\n    bottom:calc(100% + 8px);\n    left:50%;\n    transform:translateX(-50%);\n    width:280px;\n    background:var(--surface);\n    border:1px solid var(--border);\n    border-radius:10px;\n    box-shadow:0 8px 24px rgba(0,0,0,.1);\n    padding:14px;\n    z-index:100;\n    font-size:12px;\n    font-weight:400;\n    color:var(--fg);\n    line-height:1.5;\n    text-align:left;\n    cursor:default;\n  }\n  @media(max-width:520px){\n    .info-pop{\n      left:auto;right:-10px;\n      transform:none;\n    }\n    .info-pop::after{left:auto;right:16px;transform:none}\n  }\n  .info-pop::after{\n    content:'';\n    position:absolute;\n    top:100%;\n    left:50%;\n    transform:translateX(-50%);\n    border:6px solid transparent;\n    border-top-color:var(--border);\n  }\n  .info-trigger:hover .info-pop,\n  .info-trigger.open .info-pop{\n    display:block;\n  }\n  .info-pop dt{font-weight:700;margin-top:8px}\n  .info-pop dt:first-child{margin-top:0}\n  .info-pop dd{margin:2px 0 0;color:var(--muted)}\n  .info-pop .dot-i{\n    display:inline-block;\n    width:7px;height:7px;\n    border-radius:50%;\n    margin-right:4px;\n    vertical-align:middle;\n  }\n  .info-pop .dot-i.c-green{background:var(--green)}\n  .info-pop .dot-i.c-orange{background:var(--orange)}\n  .info-pop .dot-i.c-blue{background:var(--blue)}\n  .info-pop .dot-i.c-red{background:var(--red)}\n\n  \/* \u2500\u2500 Controls \u2500\u2500 *\/\n  .control-row{\n    display:flex;\n    flex-wrap:wrap;\n    gap:10px;\n    align-items:flex-end;\n  }\n  .field{display:flex;flex-direction:column;gap:4px}\n  .field label{\n    font-size:12px;\n    font-weight:600;\n    color:var(--muted);\n  }\n  .field select,.field input[type=number]{\n    -webkit-appearance:none;appearance:none;\n    font-family:var(--font);\n    font-size:14px;\n    padding:8px 12px;\n    border:1px solid var(--border);\n    border-radius:8px;\n    background:var(--surface);\n    color:var(--fg);\n    outline:none;\n    min-width:0;\n  }\n  .field select:focus,.field input:focus{\n    border-color:var(--brand);\n    box-shadow:0 0 0 3px var(--brand-soft);\n  }\n\n  .advanced-toggle{\n    font-size:12px;\n    color:var(--muted);\n    background:none;\n    border:none;\n    cursor:pointer;\n    font-family:var(--font);\n    font-weight:600;\n    padding:4px 0;\n    margin-top:6px;\n    outline:none;\n    -webkit-tap-highlight-color:transparent;\n    text-decoration:none;\n  }\n  .advanced-toggle:hover,\n  .advanced-toggle:focus,\n  .advanced-toggle:active{\n    color:var(--muted);\n    background:none;\n    border:none;\n    outline:none;\n    text-decoration:none;\n    transform:none;\n  }\n  .advanced-fields{\n    margin-top:8px;\n    padding-top:8px;\n    border-top:1px solid var(--border);\n  }\n\n  \/* \u2500\u2500 Norm result \u2500\u2500 *\/\n  .norm-result{\n    margin-top:12px;\n    padding:12px 16px;\n    border-radius:var(--radius);\n    border:1px solid var(--border);\n    background:var(--surface);\n    display:flex;\n    align-items:center;\n    flex-wrap:wrap;\n    gap:16px;\n  }\n  .norm-stat{\n    font-size:13px;\n  }\n  .norm-stat .lbl{color:var(--muted);font-weight:500}\n  .norm-stat .v{font-weight:700;font-family:var(--mono)}\n\n  .hidden{display:none!important}\n`;\n  try{\n    var el=document.createElement('style');\n    el.setAttribute('data-loudness-tool','1');\n    el.appendChild(document.createTextNode(css));\n    (document.head||document.documentElement).appendChild(el);\n  }catch(e){}\n})();\n<\/script>\n\n<script>\n(function(){\n  \/* GROESSENTEST BLOCK B (reiner Kommentar, ohne Funktion)\nFuelltext JS-Kommentar Zeile 001: block schritt true bereich iteration prozess fenster format schwelle schwelle true daempfung peak momentan\nFuelltext JS-Kommentar Zeile 002: musik ziel filter kodierung kurzzeit reserve bereich plattform iteration fenster kontrolle integriert produktion kodierung\nFuelltext JS-Kommentar Zeile 003: kanal konvergenz abgleich kontrolle konvergenz ausgabe messung gating loudness konvergenz empfehlung prozess ausgabe hop\nFuelltext JS-Kommentar Zeile 004: podcast momentan eingabe puffer format sekunde integriert messwert abtastrate loudness sekunde sprache abtastrate messwert\nFuelltext JS-Kommentar Zeile 005: ausgabe integriert relativ produktion loudness abgleich musik block filter kodierung true ausgabe format pruefung\nFuelltext JS-Kommentar Zeile 006: daempfung true kodierung datei sprache fenster ergebnis pegel fenster limiter pegel messwert norm block\nFuelltext JS-Kommentar Zeile 007: plattform momentan gewichtung fenster datei iteration sekunde relativ stimme kodierung dynamik datei kontrolle messung\nFuelltext JS-Kommentar Zeile 008: umfang sprache plattform ausgabe kontrolle korrektur korrektur schwelle podcast peak pegel podcast eingabe prozess\nFuelltext JS-Kommentar Zeile 009: kopfraum sprache kurzzeit vorgabe pruefung block konvergenz pegel korrektur kurzzeit gating phase eingabe abtastrate\nFuelltext JS-Kommentar Zeile 010: block hop filter musik musik vorgabe filter ausgabe vorgabe gewichtung hop phase korrektur norm\nFuelltext JS-Kommentar Zeile 011: ausgabe integriert gating vorgabe gating true schwelle iteration abgleich umfang konvergenz korrektur kanal prozess\nFuelltext JS-Kommentar Zeile 012: abtastrate sprache prozess datei kurzzeit korrektur relativ gewichtung peak absolut abtastrate korrektur peak sekunde\nFuelltext JS-Kommentar Zeile 013: gewichtung kodierung filter umfang verstaerkung relativ kontrolle messung musik pruefung eingabe format eingabe musik\nFuelltext JS-Kommentar Zeile 014: ziel schwelle format fenster abtastrate sprache pegel konvergenz fenster verstaerkung kodierung kurzzeit empfehlung iteration\nFuelltext JS-Kommentar Zeile 015: ziel plattform dynamik pruefung ergebnis schwelle peak fenster abgleich gewichtung format ausgabe vorgabe prozess\nFuelltext JS-Kommentar Zeile 016: datei hop ergebnis bereich pruefung messung kurzzeit analyse datei produktion sprache abgleich umfang phase\nFuelltext JS-Kommentar Zeile 017: daempfung konvergenz loudness true ausgabe bereich ziel ergebnis schritt prozess gewichtung dynamik limiter kanal\nFuelltext JS-Kommentar Zeile 018: momentan momentan ziel empfehlung limiter bereich podcast praxis vorgabe ergebnis sprache abgleich schritt peak\nFuelltext JS-Kommentar Zeile 019: korrektur stimme analyse loudness dynamik kurzzeit kanal verstaerkung analyse vorgabe produktion hop kurzzeit plattform\nFuelltext JS-Kommentar Zeile 020: filter ziel plattform datei praxis sprache integriert limiter true hop ziel daempfung relativ format\nFuelltext JS-Kommentar Zeile 021: filter kanal dynamik reserve loudness loudness abweichung hop schritt fenster sekunde vorgabe messwert kontrolle\nFuelltext JS-Kommentar Zeile 022: gewichtung phase ziel gewichtung korrektur gewichtung messung eingabe produktion vorgabe hop pegel messung relativ\nFuelltext JS-Kommentar Zeile 023: konvergenz kontrolle empfehlung vorgabe eingabe peak filter kanal norm datei kodierung kanal konvergenz analyse\nFuelltext JS-Kommentar Zeile 024: praxis abtastrate produktion eingabe kodierung empfehlung ausgabe relativ loudness umfang block musik ergebnis iteration\nFuelltext JS-Kommentar Zeile 025: true schwelle konvergenz relativ hop stimme bereich relativ kanal schritt kanal filter sprache kontrolle\nFuelltext JS-Kommentar Zeile 026: block limiter kopfraum konvergenz kopfraum absolut abgleich kanal konvergenz eingabe norm pegel reserve momentan\nFuelltext JS-Kommentar Zeile 027: ausgabe pegel schwelle messung reserve momentan eingabe pegel produktion pegel absolut ausgabe prozess abgleich\nFuelltext JS-Kommentar Zeile 028: produktion kontrolle sekunde podcast integriert peak gating abtastrate relativ absolut vorgabe ziel musik schritt\nFuelltext JS-Kommentar Zeile 029: analyse hop norm podcast format messwert kodierung abtastrate prozess gating limiter loudness peak fenster\nFuelltext JS-Kommentar Zeile 030: peak puffer eingabe kontrolle integriert korrektur sprache schwelle format puffer stimme bereich hop bereich\nFuelltext JS-Kommentar Zeile 031: umfang datei peak pegel produktion phase relativ kodierung abweichung prozess relativ sekunde kodierung musik\nFuelltext JS-Kommentar Zeile 032: abgleich phase messung plattform eingabe gewichtung umfang plattform stimme ausgabe analyse format analyse schritt\nFuelltext JS-Kommentar Zeile 033: true umfang pegel filter relativ musik true abgleich reserve abtastrate kodierung fenster abtastrate kopfraum\nFuelltext JS-Kommentar Zeile 034: analyse filter musik produktion praxis sekunde fenster hop loudness podcast sprache reserve umfang plattform\nFuelltext JS-Kommentar Zeile 035: true messung bereich kanal limiter phase produktion schritt stimme format dynamik filter datei bereich\nFuelltext JS-Kommentar Zeile 036: konvergenz kurzzeit konvergenz absolut loudness umfang musik hop bereich praxis stimme momentan reserve gewichtung\nFuelltext JS-Kommentar Zeile 037: sekunde pruefung sekunde schritt kodierung dynamik dynamik reserve peak iteration relativ ausgabe sprache gating\nFuelltext JS-Kommentar Zeile 038: gewichtung eingabe true vorgabe analyse phase korrektur abweichung sekunde gating datei kontrolle limiter true\nFuelltext JS-Kommentar Zeile 039: filter kopfraum peak schwelle limiter eingabe konvergenz produktion prozess absolut kanal kurzzeit eingabe schritt\nFuelltext JS-Kommentar Zeile 040: kopfraum abgleich empfehlung gewichtung musik abweichung ergebnis stimme norm sprache integriert stimme messwert block\nFuelltext JS-Kommentar Zeile 041: block fenster verstaerkung fenster kodierung filter musik filter relativ prozess gewichtung absolut gewichtung gewichtung\nFuelltext JS-Kommentar Zeile 042: momentan block kontrolle daempfung relativ sekunde true ausgabe filter gewichtung iteration ziel kanal vorgabe\nFuelltext JS-Kommentar Zeile 043: umfang limiter vorgabe schritt analyse limiter loudness phase kontrolle bereich kanal messwert prozess kodierung\nFuelltext JS-Kommentar Zeile 044: analyse kontrolle block kanal integriert pegel relativ reserve bereich daempfung relativ true kodierung iteration\nFuelltext JS-Kommentar Zeile 045: pruefung absolut prozess reserve filter stimme stimme norm loudness limiter plattform reserve produktion kopfraum\nFuelltext JS-Kommentar Zeile 046: puffer schwelle analyse kodierung abtastrate momentan analyse schwelle filter analyse reserve podcast vorgabe schwelle\nFuelltext JS-Kommentar Zeile 047: bereich loudness bereich sekunde eingabe empfehlung kodierung absolut kopfraum hop true schwelle analyse dynamik\nFuelltext JS-Kommentar Zeile 048: konvergenz korrektur phase true eingabe limiter dynamik ausgabe norm korrektur momentan plattform abweichung peak\nFuelltext JS-Kommentar Zeile 049: vorgabe gating ausgabe praxis fenster eingabe block norm hop eingabe pegel hop musik verstaerkung\nFuelltext JS-Kommentar Zeile 050: kontrolle puffer eingabe eingabe messung pruefung stimme umfang kodierung vorgabe relativ ausgabe podcast ausgabe\nFuelltext JS-Kommentar Zeile 051: schwelle loudness datei abgleich gating datei integriert bereich peak ausgabe verstaerkung kontrolle kodierung schritt\nFuelltext JS-Kommentar Zeile 052: stimme gating kurzzeit loudness pegel korrektur momentan vorgabe umfang ausgabe peak verstaerkung kopfraum kodierung\nFuelltext JS-Kommentar Zeile 053: musik iteration gating momentan puffer block gating ziel gating true limiter format konvergenz sprache\nFuelltext JS-Kommentar Zeile 054: umfang dynamik umfang relativ hop kurzzeit messwert analyse phase sekunde pegel reserve plattform format\nFuelltext JS-Kommentar Zeile 055: peak abgleich produktion kopfraum praxis bereich abgleich gating plattform dynamik ergebnis kanal kopfraum ausgabe\nFuelltext JS-Kommentar Zeile 056: kopfraum ergebnis relativ messwert phase absolut verstaerkung schwelle analyse ausgabe ziel gating format puffer\nFuelltext JS-Kommentar Zeile 057: integriert momentan gewichtung podcast bereich abgleich relativ analyse kontrolle korrektur messwert sprache empfehlung analyse\nFuelltext JS-Kommentar Zeile 058: norm messwert sekunde integriert format reserve schritt korrektur ergebnis plattform stimme hop vorgabe eingabe\nFuelltext JS-Kommentar Zeile 059: hop daempfung gewichtung datei format norm kodierung prozess iteration prozess absolut messung loudness kopfraum\nFuelltext JS-Kommentar Zeile 060: konvergenz schritt gewichtung prozess sprache kopfraum stimme bereich schritt messwert absolut umfang phase ausgabe\nFuelltext JS-Kommentar Zeile 061: limiter true kurzzeit puffer datei kodierung peak umfang prozess iteration iteration norm analyse analyse\nFuelltext JS-Kommentar Zeile 062: plattform kurzzeit peak podcast sekunde stimme podcast iteration peak pegel sprache iteration abgleich format\nFuelltext JS-Kommentar Zeile 063: vorgabe dynamik kurzzeit messung ergebnis true kopfraum podcast praxis bereich integriert relativ kurzzeit kontrolle\nFuelltext JS-Kommentar Zeile 064: konvergenz block umfang dynamik gating empfehlung dynamik podcast kanal true messwert puffer kopfraum sprache\nFuelltext JS-Kommentar Zeile 065: filter gating sekunde abgleich kopfraum fenster abgleich bereich schritt momentan filter iteration phase schwelle\nFuelltext JS-Kommentar Zeile 066: daempfung filter kopfraum iteration gewichtung sekunde kodierung analyse relativ absolut ausgabe gating plattform fenster\nFuelltext JS-Kommentar Zeile 067: empfehlung sekunde abgleich format gating dynamik dynamik filter integriert stimme ziel pegel plattform ergebnis\nFuelltext JS-Kommentar Zeile 068: kodierung pruefung prozess korrektur ziel daempfung praxis kontrolle abgleich limiter filter abweichung plattform ergebnis\nFuelltext JS-Kommentar Zeile 069: ausgabe musik umfang kodierung filter format kodierung verstaerkung momentan kodierung abtastrate sprache peak prozess\nFuelltext JS-Kommentar Zeile 070: kanal absolut kopfraum musik pegel block bereich ziel filter hop plattform pruefung daempfung norm\nFuelltext JS-Kommentar Zeile 071: abgleich sekunde podcast loudness musik analyse kanal momentan block kopfraum plattform datei eingabe iteration\nFuelltext JS-Kommentar Zeile 072: kodierung abgleich pegel kurzzeit konvergenz kanal kopfraum vorgabe analyse messung pegel loudness verstaerkung puffer\nFuelltext JS-Kommentar Zeile 073: hop limiter ziel puffer abweichung kanal eingabe daempfung hop daempfung kurzzeit schwelle kodierung kopfraum\nFuelltext JS-Kommentar Zeile 074: messwert phase gating kurzzeit loudness umfang gewichtung produktion momentan prozess limiter true plattform momentan\nFuelltext JS-Kommentar Zeile 075: pruefung norm dynamik fenster ausgabe umfang filter loudness pegel vorgabe bereich korrektur abgleich puffer\nFuelltext JS-Kommentar Zeile 076: reserve vorgabe daempfung prozess reserve ziel podcast konvergenz gewichtung gating abgleich loudness analyse pegel\nFuelltext JS-Kommentar Zeile 077: abweichung messung ausgabe absolut gewichtung gating pegel stimme limiter loudness kopfraum korrektur norm relativ\nFuelltext JS-Kommentar Zeile 078: momentan eingabe relativ ziel reserve vorgabe iteration vorgabe vorgabe eingabe bereich kopfraum absolut iteration\nFuelltext JS-Kommentar Zeile 079: hop true hop plattform pegel kontrolle podcast dynamik phase produktion abweichung loudness format ergebnis\nFuelltext JS-Kommentar Zeile 080: datei musik schritt peak musik vorgabe prozess absolut kanal limiter filter kanal vorgabe analyse\nFuelltext JS-Kommentar Zeile 081: integriert abtastrate abgleich musik praxis ergebnis filter produktion pegel fenster plattform korrektur empfehlung datei\nFuelltext JS-Kommentar Zeile 082: empfehlung dynamik ziel filter block vorgabe abgleich schwelle peak kontrolle iteration loudness gating filter\nFuelltext JS-Kommentar Zeile 083: abgleich gewichtung messwert musik relativ gating musik sekunde relativ kontrolle format abtastrate reserve gewichtung\nFuelltext JS-Kommentar Zeile 084: format ergebnis plattform praxis norm messwert abweichung phase phase messwert ziel praxis loudness ergebnis\nFuelltext JS-Kommentar Zeile 085: messung datei podcast kanal verstaerkung kontrolle hop dynamik schwelle ausgabe kopfraum daempfung true verstaerkung\nFuelltext JS-Kommentar Zeile 086: gating momentan analyse messung integriert limiter kopfraum gating puffer momentan praxis messung messung analyse\nFuelltext JS-Kommentar Zeile 087: kurzzeit praxis vorgabe plattform analyse praxis true musik analyse true ergebnis daempfung sprache kodierung\nFuelltext JS-Kommentar Zeile 088: relativ bereich bereich abweichung abgleich norm true kontrolle pruefung sprache produktion format limiter gewichtung\nFuelltext JS-Kommentar Zeile 089: schwelle schwelle integriert analyse analyse ergebnis umfang sprache plattform peak bereich sprache plattform plattform\nFuelltext JS-Kommentar Zeile 090: block phase limiter kurzzeit limiter dynamik sprache vorgabe schwelle block sekunde abtastrate datei filter\nFuelltext JS-Kommentar Zeile 091: messung puffer filter block pegel produktion sprache kodierung sekunde stimme reserve iteration phase ergebnis\nFuelltext JS-Kommentar Zeile 092: block kopfraum musik messung dynamik eingabe messung datei ziel stimme limiter puffer phase produktion\nFuelltext JS-Kommentar Zeile 093: pegel abweichung verstaerkung schwelle produktion pruefung bereich peak verstaerkung bereich block gating datei loudness\nFuelltext JS-Kommentar Zeile 094: ziel relativ block sprache sprache pegel loudness puffer konvergenz limiter konvergenz praxis dynamik bereich\nFuelltext JS-Kommentar Zeile 095: absolut konvergenz daempfung puffer messwert iteration filter verstaerkung gating block bereich schwelle praxis kanal\nFuelltext JS-Kommentar Zeile 096: konvergenz gating integriert plattform stimme peak konvergenz dynamik praxis korrektur dynamik limiter plattform sekunde\n  *\/\n  const $ = id => document.getElementById(id);\n\n  \/* \u2500\u2500 UI refs \u2500\u2500 *\/\n  const ui = {\n    dropzone:$('dropzone'), fileInput:$('fileInput'), filePill:$('filePill'),\n    fileName:$('fileName'), clearBtn:$('clearBtn'),\n    num1:$('num1'), num2:$('num2'), num3:$('num3'),\n    st1:$('st1'), st2:$('st2'), st3:$('st3'),\n    b2:$('b2'), b3:$('b3'),\n    anHint:$('anHint'),\n    anResult:$('anResult'), outLUFS:$('outLUFS'), outLRA:$('outLRA'), outSP:$('outSP'),\n    platList:$('platList'),\n    preset:$('preset'), outFmt:$('outFmt'), customLufs:$('customLufs'),\n    customRow:$('customRow'),\n    ceiling:$('ceiling'), lookahead:$('lookahead'),\n    advToggle:$('advToggle'), advFields:$('advFields'),\n    normBtn:$('normBtn'),\n    normProgress:$('normProgress'), normBar:$('normBar'), normPct:$('normPct'), normNote:$('normNote'),\n    normResultArea:$('normResultArea'),\n    resLUFS:$('resLUFS'), resSP:$('resSP'), resStatus:$('resStatus'),\n  };\n\n  let audioBuf=null, decodedFileName='', lastAnalysis=null, pendingNorm=null, lastDownload=null;\n\n  \/* \u2500\u2500 Helpers \u2500\u2500 *\/\n  function enable(el,on){ el.classList.toggle('disabled',!on) }\n  function show(el,on){ el.classList.toggle('hidden',!on) }\n  function markNum(el,done){ el.classList.toggle('done',done) }\n\n  \/* \u2500\u2500 Worker \u2500\u2500 *\/\n  const workerCode = `\nlet lameOk=false;\ntry{importScripts('https:\/\/cdn.jsdelivr.net\/npm\/lamejs@1.2.0\/lame.min.js');lameOk=typeof lamejs!=='undefined'}catch(e){}\n\nfunction avg(a){if(!a.length)return 0;let s=0;for(let v of a)s+=v;return s\/a.length}\nfunction percentile(a,p){\n  if(!a.length)return 0;\n  const b=a.slice().sort((x,y)=>x-y);\n  const pos=(p\/100)*(b.length-1),lo=Math.floor(pos),hi=Math.ceil(pos);\n  if(lo===hi)return b[lo];\n  return b[lo]+(b[hi]-b[lo])*(pos-lo);\n}\nfunction biquad(x,b0,b1,b2,a1,a2){\n  const o=new Float32Array(x.length);let x1=0,x2=0,y1=0,y2=0;\n  for(let i=0;i<x.length;i++){const y=b0*x[i]+b1*x1+b2*x2-a1*y1-a2*y2;o[i]=y;x2=x1;x1=x[i];y2=y1;y1=y}\n  return o;\n}\nfunction kWeight48k(ch){\n  let s=biquad(ch,1.53512485958697,-2.69169618940638,1.19839281085285,-1.69065929318241,0.73248077421585);\n  return biquad(s,1,-2,1,-1.99004745483398,0.99007225036621);\n}\nfunction samplePeakLin(chs){let p=0;for(const d of chs)for(let i=0;i<d.length;i++){const v=Math.abs(d[i]);if(v>p)p=v}return p}\nfunction samplePeakDb(chs){return 20*Math.log10(samplePeakLin(chs)+1e-24)}\n\n\/* \u2500\u2500 True Peak via 4x oversampling (ITU-R BS.1770-4 compliant) \u2500\u2500 *\/\n\/* Polyphase 48-tap FIR (4 phases \u00d7 12 taps), Hann-windowed sinc *\/\nconst TP_COEFFS=(function(){\n  var N=48,L=4,T=12,mid=(N-1)\/2,ph=[];\n  for(var p=0;p<L;p++){\n    var c=new Float64Array(T);\n    for(var k=0;k<T;k++){\n      var n=k*L+p, x=(n-mid)\/L;\n      var w=0.5*(1-Math.cos(2*Math.PI*n\/(N-1)));\n      var s=Math.abs(x)<1e-12?1.0:Math.sin(Math.PI*x)\/(Math.PI*x);\n      c[k]=s*w;\n    }\n    ph.push(c);\n  }\n  return ph;\n})();\n\nfunction truePeakLin(chs){\n  var peak=0;\n  for(var ci=0;ci<chs.length;ci++){\n    var ch=chs[ci], len=ch.length;\n    for(var n=0;n<len;n++){\n      for(var p=0;p<4;p++){\n        var c=TP_COEFFS[p], sum=0;\n        for(var k=0;k<12;k++){\n          var idx=n-k;\n          if(idx>=0) sum+=ch[idx]*c[k];\n        }\n        var v=sum<0?-sum:sum;\n        if(v>peak) peak=v;\n      }\n    }\n  }\n  return peak;\n}\n\nfunction truePeakDb(chs){return 20*Math.log10(truePeakLin(chs)+1e-24)}\n\n\/* Build K-weighted power and prefix sum (cacheable) *\/\nfunction buildPrefix(channels,fs){\n  if(fs!==48000)throw new Error('48 kHz expected');\n  const ch=channels.length,len=channels[0].length;\n  const Gi=new Float64Array(ch);\n  for(let c=0;c<ch;c++)Gi[c]=(c===3||c===4)?1.41:1.0;\n  const p=new Float64Array(len);\n  for(let c=0;c<ch;c++){\n    const kw=kWeight48k(channels[c]),g=Gi[c];\n    for(let i=0;i<len;i++){const v=kw[i];p[i]+=g*v*v}\n  }\n  const pref=new Float64Array(len+1);\n  let acc=0;pref[0]=0;\n  for(let i=0;i<len;i++){acc+=p[i];pref[i+1]=acc}\n  return {pref,len};\n}\n\nfunction windowMeans(pref,len,win,hop){\n  const out=[];\n  for(let s=0;s+win<=len;s+=hop)out.push((pref[s+win]-pref[s])\/win);\n  return out;\n}\n\n\/* Full EBU R128 analysis, optionally reusing cached prefix+len *\/\nfunction analyze1770(channels,fs,cached){\n  const K=-0.691,ABS=-70;\n  const sp=truePeakDb(channels);\n  const{pref,len}=cached||buildPrefix(channels,fs);\n  const w4=Math.round(.4*fs),h1=Math.round(.1*fs);\n  const ms4=windowMeans(pref,len,w4,h1);\n  const L4=ms4.map(m=>K+10*Math.log10(m+1e-24));\n  const k1=ms4.filter((_,i)=>L4[i]>=ABS);\n  const Lg=K+10*Math.log10(avg(k1)+1e-24);\n  const rg=Math.max(ABS,Lg-10);\n  const k2=ms4.filter((_,i)=>L4[i]>=rg);\n  const lufs=K+10*Math.log10(avg(k2)+1e-24);\n  const w3=Math.round(3*fs),hL=Math.round(.1*fs);\n  const ms3=windowMeans(pref,len,w3,hL);\n  const L3=ms3.map(m=>K+10*Math.log10(m+1e-24));\n  const gL=Math.max(ABS,lufs-20);\n  const sg=[];for(let i=0;i<L3.length;i++)if(L3[i]>=gL)sg.push(L3[i]);\n  const lra=sg.length?Math.max(0,percentile(sg,95)-percentile(sg,10)):0;\n  return {lufs,lra,sp};\n}\n\n\/* \u2500\u2500 O(n) Sliding-window-max limiter via deque \u2500\u2500 *\/\nfunction limiterFast(channels,fs,ceilDb,lookMs,atkMs,relMs){\n  const ch=channels.length,len=channels[0].length;\n  const look=Math.max(1,Math.round(lookMs*fs\/1000));\n  const atk=Math.max(1,Math.round(atkMs*fs\/1000));\n  const rel=Math.max(1,Math.round(relMs*fs\/1000));\n  const ceilLin=Math.pow(10,ceilDb\/20);\n\n  \/* Detection signal (max across channels) *\/\n  const det=new Float32Array(len);\n  for(let i=0;i<len;i++){let p=0;for(let c=0;c<ch;c++){const v=Math.abs(channels[c][i]);if(v>p)p=v}det[i]=p}\n\n  \/* Sliding window maximum via monotonic deque \u2014 O(n) total *\/\n  const winMax=new Float32Array(len);\n  const dq=new Int32Array(look+2);  \/* circular deque of indices *\/\n  let dqH=0,dqT=0;  \/* head, tail *\/\n  for(let i=0;i<len;i++){\n    \/* Remove indices that fell out of window *\/\n    while(dqH<dqT && dq[dqH%dq.length]<i)dqH++;\n    \/* Remove smaller elements from back *\/\n    while(dqH<dqT && det[dq[(dqT-1)%dq.length]]<=det[i])dqT--;\n    dq[dqT%dq.length]=i; dqT++;\n    \/* The window is [i - look + 1, i], but we want forward-looking [i, i+look-1]\n       So we shift: the max over [i, min(len-1, i+look-1)] *\/\n  }\n  \/* Redo properly: forward-looking window max *\/\n  dqH=0;dqT=0;\n  \/* Fill deque with first 'look' elements *\/\n  for(let i=0;i<Math.min(look,len);i++){\n    while(dqH<dqT && det[dq[(dqT-1)%dq.length]]<=det[i])dqT--;\n    dq[dqT%dq.length]=i;dqT++;\n  }\n  for(let n=0;n<len;n++){\n    \/* Add the new element entering the window at n+look-1 (if valid) *\/\n    const newIdx=n+look-1;\n    if(newIdx<len && newIdx>=look-1){\n      \/* only add if not already added in init *\/\n      if(newIdx>=look){\n        while(dqH<dqT && det[dq[(dqT-1)%dq.length]]<=det[newIdx])dqT--;\n        dq[dqT%dq.length]=newIdx;dqT++;\n      }\n    }\n    \/* Remove elements that fell out *\/\n    while(dqH<dqT && dq[dqH%dq.length]<n)dqH++;\n    winMax[n]=(dqH<dqT)?det[dq[dqH%dq.length]]:0;\n  }\n\n  \/* Gain envelope *\/\n  const env=new Float32Array(len);\n  let g=1;\n  for(let n=0;n<len;n++){\n    const need=winMax[n]>0?Math.min(1,ceilLin\/winMax[n]):1;\n    if(need<g){g*=Math.pow(need\/g,1\/atk)}\n    else{g*=Math.pow(need\/g,1\/rel);if(g>1)g=1}\n    env[n]=g;\n  }\n\n  \/* Apply to delayed signal *\/\n  const out=channels.map(()=>new Float32Array(len));\n  for(let c=0;c<ch;c++){\n    const src=channels[c],dst=out[c];\n    for(let i=0;i<len;i++){\n      const j=i-look;\n      dst[i]=(j>=0?src[j]:0)*env[i];\n    }\n  }\n  return out;\n}\n\nfunction applyGain(chs,g){return chs.map(ch=>{const o=new Float32Array(ch.length);for(let i=0;i<ch.length;i++)o[i]=ch[i]*g;return o})}\n\n\/* \u2500\u2500 Brickwall True-Peak Limiter (Master) \u2500\u2500 *\/\n\/* Detection via 4x oversampled signal, gain applied to original. Short lookahead, fast attack. *\/\nfunction limiterTruePeak(channels,fs,ceilDb){\n  const ch=channels.length,len=channels[0].length;\n  const look=Math.max(1,Math.round(0.002*fs));  \/* 2ms lookahead *\/\n  const atk=1;                                    \/* instant attack *\/\n  const rel=Math.max(1,Math.round(0.05*fs));      \/* 50ms release *\/\n  const ceilLin=Math.pow(10,(ceilDb-0.05)\/20);   \/* 0.05 dB safety for rounding *\/\n\n  \/* True-peak detection: max TP across all channels per sample *\/\n  const det=new Float32Array(len);\n  for(var n=0;n<len;n++){\n    var maxTP=0;\n    for(var c=0;c<ch;c++){\n      for(var p=0;p<4;p++){\n        var coefs=TP_COEFFS[p],sum=0;\n        for(var k=0;k<12;k++){\n          var idx=n-k;\n          if(idx>=0) sum+=channels[c][idx]*coefs[k];\n        }\n        var v=sum<0?-sum:sum;\n        if(v>maxTP) maxTP=v;\n      }\n    }\n    det[n]=maxTP;\n  }\n\n  \/* Forward-looking sliding window max via deque *\/\n  const winMax=new Float32Array(len);\n  const dq=new Int32Array(look+2);\n  let dqH=0,dqT=0;\n  for(let i=0;i<Math.min(look,len);i++){\n    while(dqH<dqT && det[dq[(dqT-1)%dq.length]]<=det[i])dqT--;\n    dq[dqT%dq.length]=i;dqT++;\n  }\n  for(let n=0;n<len;n++){\n    const newIdx=n+look-1;\n    if(newIdx<len && newIdx>=look){\n      while(dqH<dqT && det[dq[(dqT-1)%dq.length]]<=det[newIdx])dqT--;\n      dq[dqT%dq.length]=newIdx;dqT++;\n    }\n    while(dqH<dqT && dq[dqH%dq.length]<n)dqH++;\n    winMax[n]=(dqH<dqT)?det[dq[dqH%dq.length]]:0;\n  }\n\n  \/* Gain envelope *\/\n  const env=new Float32Array(len);\n  let g=1;\n  for(let n=0;n<len;n++){\n    const need=winMax[n]>0?Math.min(1,ceilLin\/winMax[n]):1;\n    if(need<g){g*=Math.pow(need\/g,1\/atk)}\n    else{g*=Math.pow(need\/g,1\/rel);if(g>1)g=1}\n    env[n]=g;\n  }\n\n  \/* Apply to delayed signal *\/\n  const out=channels.map(()=>new Float32Array(len));\n  for(let c=0;c<ch;c++){\n    const src=channels[c],dst=out[c];\n    for(let i=0;i<len;i++){\n      const j=i-look;\n      dst[i]=(j>=0?src[j]:0)*env[i];\n    }\n  }\n  return out;\n}\n\nfunction encodeWav(chs,sr){\n  const ch=chs.length,len=chs[0].length;\n  const inter=new Float32Array(len*ch);\n  for(let i=0;i<len;i++)for(let c=0;c<ch;c++)inter[i*ch+c]=chs[c][i];\n  const bps=2,ba=ch*bps,ds=inter.length*bps;\n  const dv=new DataView(new ArrayBuffer(44+ds));\n  const w=(o,s)=>{for(let i=0;i<s.length;i++)dv.setUint8(o+i,s.charCodeAt(i))};\n  w(0,'RIFF');dv.setUint32(4,36+ds,true);w(8,'WAVE');w(12,'fmt ');dv.setUint32(16,16,true);\n  dv.setUint16(20,1,true);dv.setUint16(22,ch,true);dv.setUint32(24,sr,true);\n  dv.setUint32(28,sr*ba,true);dv.setUint16(32,ba,true);dv.setUint16(34,16,true);\n  w(36,'data');dv.setUint32(40,ds,true);\n  let off=44;\n  for(let i=0;i<inter.length;i++,off+=2){let s=Math.max(-1,Math.min(1,inter[i]));dv.setInt16(off,s<0?s*0x8000:s*0x7FFF,true)}\n  return new Blob([dv],{type:'audio\/wav'});\n}\n\nfunction encodeMp3(chs,sr){\n  if(!lameOk)throw new Error('MP3 encoder unavailable');\n  const ch=chs.length,len=chs[0].length;\n  const enc=new lamejs.Mp3Encoder(ch,sr,320);\n  const f2i=f=>{const o=new Int16Array(f.length);for(let i=0;i<f.length;i++){let s=Math.max(-1,Math.min(1,f[i]));o[i]=s<0?s*0x8000:s*0x7FFF}return o};\n  const out=[],chunk=1152;let last=0;\n  for(let i=0;i<len;i+=chunk){\n    const e=Math.min(len,i+chunk),L=f2i(chs[0].subarray(i,e));\n    let buf;\n    if(ch===2){buf=enc.encodeBuffer(L,f2i(chs[1].subarray(i,e)))}else{buf=enc.encodeBuffer(L)}\n    if(buf.length>0)out.push(buf);\n    const pct=Math.round((i\/len)*100);\n    if(pct-last>=5){last=pct;postMessage({type:'encProgress',pct:90+Math.round(pct*.1),note:'Encoding MP3'})}\n  }\n  const end=enc.flush();if(end.length>0)out.push(end);\n  return new Blob(out,{type:'audio\/mpeg'});\n}\n\nonmessage=e=>{\n  const msg=e.data;\n  try{\n    if(msg.type==='analyze'){\n      const fs=msg.meta.sampleRate;\n      const chs=msg.meta.channels.map(b=>new Float32Array(b));\n      const res=analyze1770(chs,fs);\n      postMessage({type:'anDone',data:res});\n    }\n\n    if(msg.type==='normalize'){\n      const fs=msg.meta.sampleRate;\n      const target=msg.meta.targetLUFS;\n      const ceilTP=msg.meta.ceilingDbtp;\n      const lookMs=msg.meta.lookMs;\n      let work=msg.meta.channels.map(b=>new Float32Array(b));\n\n      \/* Soft limiter ceiling = TP target (no margin needed \u2014 brickwall handles TP) *\/\n      const softCeil=ceilTP;\n      const softCeilLin=Math.pow(10,softCeil\/20);\n      const maxIter=10,tol=0.02;\n\n      \/* Phase 1: LUFS convergence with soft sample-peak limiter *\/\n      for(let iter=0;iter<maxIter;iter++){\n        const pct=10+Math.round((iter\/maxIter)*65);\n        postMessage({type:'progress',phase:'norm',pct,note:'Adjusting loudness'});\n        const a=analyze1770(work,fs);\n        const err=target-a.lufs;\n        if(Math.abs(err)<=tol)break;\n        const g=Math.pow(10,err\/20);\n        work=applyGain(work,g);\n        if(samplePeakLin(work)>softCeilLin){\n          work=limiterFast(work,fs,softCeil,lookMs,1,120);\n        }\n      }\n\n      \/* Phase 2: Brickwall true-peak limiter \u2014 catches only inter-sample peaks.\n         Barely touches the signal, so LUFS impact is negligible (<0.05 dB). *\/\n      postMessage({type:'progress',phase:'norm',pct:80,note:'True peak brickwall limiter'});\n      work=limiterTruePeak(work,fs,ceilTP);\n\n      postMessage({type:'progress',phase:'norm',pct:88,note:'Measuring result'});\n      const fin=analyze1770(work,fs);\n      postMessage({type:'progress',phase:'norm',pct:90});\n      postMessage({type:'normReady',data:{lufs:fin.lufs,lra:fin.lra,sp:fin.sp,sampleRate:fs,channels:work}});\n    }\n\n    if(msg.type==='encode'){\n      const fs=msg.meta.sampleRate,fmt=msg.meta.fmt;\n      const chs=msg.meta.channels.map(b=>new Float32Array(b));\n      if(fmt==='wav'){\n        postMessage({type:'encProgress',pct:95,note:'Writing WAV'});\n        const blob=encodeWav(chs,fs);\n        postMessage({type:'encDone',ext:'wav',blob});\n      }else{\n        const blob=encodeMp3(chs,fs);\n        postMessage({type:'encDone',ext:'mp3',blob});\n      }\n    }\n  }catch(err){\n    postMessage({type:'error',message:err&&err.message?err.message:String(err)});\n  }\n};\n`;\n\n  const worker = new Worker(URL.createObjectURL(new Blob([workerCode],{type:'application\/javascript'})));\n\n  \/* \u2500\u2500 File handling \u2500\u2500 *\/\n  ui.dropzone.addEventListener('dragover',e=>{e.preventDefault();ui.dropzone.classList.add('drag')});\n  ui.dropzone.addEventListener('dragleave',()=>ui.dropzone.classList.remove('drag'));\n  ui.dropzone.addEventListener('drop',e=>{\n    e.preventDefault();ui.dropzone.classList.remove('drag');\n    if(e.dataTransfer.files[0])loadFile(e.dataTransfer.files[0]);\n  });\n  ui.fileInput.addEventListener('change',()=>{if(ui.fileInput.files[0])loadFile(ui.fileInput.files[0])});\n  ui.clearBtn.addEventListener('click',resetAll);\n\n  async function loadFile(file){\n    resetResults();\n    ui.st1.textContent='Loading \u2026';ui.st1.className='section-status active';\n    decodedFileName=file.name.replace(\/\\.[a-z0-9]+$\/i,'');\n    try{\n      const ab=await file.arrayBuffer();\n      const ctx=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48000});\n      audioBuf=await ctx.decodeAudioData(ab.slice(0));\n      ctx.close();\n      ui.st1.textContent='Loaded';ui.st1.className='section-status ok';\n      markNum(ui.num1,true);\n      show(ui.dropzone,false);\n      show(ui.filePill,true);\n      ui.fileName.textContent=file.name;\n      enable(ui.b2,true);\n      ui.st2.textContent='';ui.st2.className='section-status';\n      startAnalysis();\n    }catch(err){\n      console.error(err);\n      ui.st1.textContent='Error';ui.st1.className='section-status err';\n      audioBuf=null;\n    }\n  }\n\n  function resetAll(){\n    audioBuf=null;lastAnalysis=null;decodedFileName='';pendingNorm=null;\n    ui.fileInput.value='';\n    show(ui.dropzone,true);show(ui.filePill,false);\n    show(ui.anHint,true);\n    ui.st1.textContent='';ui.st1.className='section-status';\n    markNum(ui.num1,false);markNum(ui.num2,false);markNum(ui.num3,false);\n    enable(ui.b2,false);enable(ui.b3,false);\n    resetResults();\n  }\n\n  function resetResults(){\n    lastAnalysis=null;\n    lastDownload=null;\n    show(ui.anResult,false);\n    show(ui.normProgress,false);show(ui.normResultArea,false);\n    ui.normBar.style.width='0%';ui.normPct.textContent='0%';\n    ui.normNote.textContent='';\n    ui.st2.textContent='';ui.st2.className='section-status';\n    ui.st3.textContent='';ui.st3.className='section-status';\n    setNormBtnNormalize();\n    ui.normBtn.disabled=true;\n    enable(ui.b3,false);\n    markNum(ui.num2,false);markNum(ui.num3,false);\n  }\n\n  \/* \u2500\u2500 Analyze \u2500\u2500 *\/\n  function startAnalysis(){\n    if(!audioBuf)return;\n    resetResults();\n    show(ui.anHint,false);\n    enable(ui.b2,true);\n    ui.st2.textContent='Running \u2026';ui.st2.className='section-status active';\n    const chs=[];\n    for(let c=0;c<audioBuf.numberOfChannels;c++)chs.push(audioBuf.getChannelData(c).slice(0).buffer);\n    worker.postMessage({type:'analyze',meta:{channels:chs,sampleRate:audioBuf.sampleRate}});\n  }\n\n  \/* \u2500\u2500 Info popover (mobile: click) \u2500\u2500 *\/\n  const infoTrigger=$('infoTrigger');\n  infoTrigger.addEventListener('click',function(e){\n    e.preventDefault();e.stopPropagation();\n    this.classList.toggle('open');\n  });\n  document.addEventListener('click',function(e){\n    if(!infoTrigger.contains(e.target))infoTrigger.classList.remove('open');\n  });\n\n  \/* \u2500\u2500 Preset \u2500\u2500 *\/\n  function presetLUFS(v){\n    const m={yt:-14,yts:-14,ig:-14,tt:-14,spm:-14,spp:-14,ap:-16,am:-16,az:-14,au:-18};\n    return m[v]||NaN;\n  }\n  function targetLUFS(){\n    return ui.preset.value==='custom'?parseFloat(ui.customLufs.value):presetLUFS(ui.preset.value);\n  }\n  ui.preset.addEventListener('change',()=>{\n    show(ui.customRow,ui.preset.value==='custom');\n    if(lastAnalysis)ui.normBtn.disabled=false;\n    if(lastDownload)setNormBtnNormalize();\n  });\n  ui.outFmt.addEventListener('change',()=>{\n    if(lastDownload)setNormBtnNormalize();\n  });\n\n  \/* \u2500\u2500 Advanced toggle \u2500\u2500 *\/\n  ui.advToggle.addEventListener('click',()=>{\n    const open=ui.advFields.classList.contains('hidden');\n    show(ui.advFields,open);\n    ui.advToggle.textContent=open?'Limiter settings \u25be':'Limiter settings \u25b8';\n  });\n\n  \/* \u2500\u2500 Normalize \/ Download button \u2500\u2500 *\/\n  function setNormBtnDownload(url,filename,ext){\n    lastDownload={url,filename};\n    ui.normBtn.textContent='Download '+ext.toUpperCase();\n    ui.normBtn.classList.remove('primary');\n    ui.normBtn.classList.add('download');\n    ui.normBtn.disabled=false;\n  }\n  function setNormBtnNormalize(){\n    lastDownload=null;\n    ui.normBtn.textContent='Normalize';\n    ui.normBtn.classList.remove('download');\n    ui.normBtn.classList.add('primary');\n  }\n\n  ui.normBtn.addEventListener('click',()=>{\n    \/* Download mode \u2014 trigger download *\/\n    if(lastDownload){\n      const a=document.createElement('a');\n      a.href=lastDownload.url;\n      a.download=lastDownload.filename;\n      a.click();\n      return;\n    }\n    \/* Normalize mode *\/\n    if(!audioBuf||!lastAnalysis)return;\n    ui.normBtn.disabled=true;\n    show(ui.normProgress,true);show(ui.normResultArea,false);\n    ui.normBar.style.width='0%';ui.normPct.textContent='0%';\n    ui.st3.textContent='Running \u2026';ui.st3.className='section-status active';\n\n    const fmt=ui.outFmt.value;\n    const baseCeil=parseFloat(ui.ceiling.value);\n    const userCeil=fmt==='mp3'?Math.min(baseCeil,-2):baseCeil;\n\n    const chs=[];\n    for(let c=0;c<audioBuf.numberOfChannels;c++)chs.push(audioBuf.getChannelData(c).slice(0).buffer);\n    worker.postMessage({type:'normalize',meta:{\n      channels:chs,sampleRate:audioBuf.sampleRate,\n      targetLUFS:targetLUFS(),ceilingDbtp:userCeil,lookMs:parseFloat(ui.lookahead.value)\n    }});\n  });\n\n  \/* \u2500\u2500 Worker messages \u2500\u2500 *\/\n  worker.onmessage=e=>{\n    const msg=e.data;if(!msg)return;\n\n    if(msg.type==='progress'){\n      if(msg.phase==='norm'){\n        ui.normBar.style.width=msg.pct+'%';ui.normPct.textContent=msg.pct+'%';\n        ui.normNote.textContent=msg.note||'';\n      }\n    }\n\n    if(msg.type==='anDone'){\n      if(!lastAnalysis){\n        lastAnalysis=msg.data;\n        ui.outLUFS.textContent=msg.data.lufs.toFixed(1)+' LUFS';\n        ui.outLRA.textContent=msg.data.lra.toFixed(1)+' LU';\n        ui.outSP.textContent=msg.data.sp.toFixed(1)+' dBTP';\n        show(ui.anResult,true);\n        ui.st2.textContent='Done';ui.st2.className='section-status ok';\n        markNum(ui.num2,true);\n        enable(ui.b3,true);\n        ui.normBtn.disabled=false;\n        buildPlatforms(msg.data.lufs);\n      }else{\n        ui.resLUFS.textContent=msg.data.lufs.toFixed(1)+' LUFS';\n        ui.resSP.textContent=msg.data.sp.toFixed(1)+' dBTP';\n        show(ui.normResultArea,true);\n        ui.resStatus.textContent='\u2713 OK';ui.resStatus.style.color='var(--green)';\n        ui.st3.textContent='Done';ui.st3.className='section-status ok';\n        markNum(ui.num3,true);\n      }\n    }\n\n    if(msg.type==='normReady'){\n      ui.normBar.style.width='90%';ui.normPct.textContent='90%';\n      ui.normNote.textContent='Creating file';\n      pendingNorm={channels:msg.data.channels.map(a=>a.buffer.slice(0)),sampleRate:msg.data.sampleRate};\n      worker.postMessage({type:'encode',meta:{channels:pendingNorm.channels,sampleRate:pendingNorm.sampleRate,fmt:ui.outFmt.value}});\n    }\n\n    if(msg.type==='encProgress'){\n      ui.normBar.style.width=msg.pct+'%';ui.normPct.textContent=msg.pct+'%';\n      if(msg.note)ui.normNote.textContent=msg.note;\n    }\n\n    if(msg.type==='encDone'){\n      ui.normBar.style.width='100%';ui.normPct.textContent='100%';\n      show(ui.normProgress,false);\n      const url=URL.createObjectURL(msg.blob);\n      const ext=msg.ext||'wav';\n      const filename=(decodedFileName||'loudness')+'_normalized.'+ext;\n      setNormBtnDownload(url,filename,ext);\n      if(pendingNorm)worker.postMessage({type:'analyze',meta:{channels:pendingNorm.channels,sampleRate:pendingNorm.sampleRate}});\n    }\n\n    if(msg.type==='error'){\n      ui.normNote.textContent='Error: '+msg.message;\n      ui.st3.textContent='Error';ui.st3.className='section-status err';\n      ui.resStatus.textContent='\u2715 Error';ui.resStatus.style.color='var(--red)';\n      show(ui.normResultArea,true);\n    }\n  };\n\n  \/* \u2500\u2500 Platforms \u2500\u2500 *\/\n  function buildPlatforms(lufs){\n    const targets=[\n      {name:'YouTube',t:-14,b:'downOnly'},{name:'YouTube Shorts',t:-14,b:'downOnly'},\n      {name:'Instagram',t:-14,b:'range'},{name:'TikTok',t:-14,b:'range'},\n      {name:'Spotify Music',t:-14,b:'range'},{name:'Spotify Podcasts',t:-14,b:'range'},\n      {name:'Apple Podcasts',t:-16,b:'range'},{name:'Apple Music',t:-16,b:'range'},\n      {name:'Amazon Music',t:-14,b:'range'},{name:'Audible',t:-18,b:'range'}\n    ];\n    const tagTips={\n      ok:'Your file sits inside this platform\\u2019s target range. Nothing changes on playback.',\n      down:'Your file is louder than the target. The platform will automatically turn it down on playback.',\n      up:'Your file is quieter than the target. The platform will automatically turn it up on playback.',\n      warn:'This platform only turns files down. Your file is too quiet and will not be raised \u2014 normalize it first.'\n    };\n    const wrap=document.createElement('div');wrap.className='plat-list';\n    targets.forEach(p=>{\n      const d=p.t-lufs,abs=Math.abs(d).toFixed(1);\n      let cls,tag,info;\n      if(p.b==='downOnly'){\n        if(d<-0.05){cls='down';tag='turned down';info='\\u2212'+abs+' dB adjustment'}\n        else if(d>0.05){cls='warn';tag='too quiet';info='+'+abs+' dB short'}\n        else{cls='ok';tag='on target';info='Target '+p.t+' LUFS'}\n      }else{\n        if(d<-0.05){cls='down';tag='turned down';info='\\u2212'+abs+' dB adjustment'}\n        else if(d>0.05){cls='up';tag='turned up';info='+'+abs+' dB adjustment'}\n        else{cls='ok';tag='on target';info='Target '+p.t+' LUFS'}\n      }\n      const row=document.createElement('div');row.className='plat-row';\n      row.innerHTML=\n        '<div class=\"plat-icon '+cls+'\"><\/div>'+\n        '<span class=\"plat-name\">'+p.name+'<\/span>'+\n        '<span class=\"plat-info\">'+info+'<\/span>'+\n        '<span class=\"plat-tag '+cls+'\">'+tag+'<span class=\"tag-tip\">'+tagTips[cls]+'<\/span><\/span>';\n      wrap.appendChild(row);\n    });\n    ui.platList.innerHTML='';ui.platList.appendChild(wrap);\n  }\n})();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70054e92 elementor-align-center elementor-widget elementor-widget-post-info\" data-id=\"70054e92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"post-info.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-c9654dd elementor-inline-item\" itemprop=\"author\">\n\t\t\t\t\t\t<a href=\"https:\/\/soundandgo.com\/en\/author\/fabian-matzen\/\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"elementor-avatar\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2022\/10\/Fabian-Matzen-soundandgo-about-us-96x96.webp\" alt=\"Picture of Fabian\" loading=\"lazy\" title=\"\">\n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-author\">\n\t\t\t\t\t\t\t<span class=\"elementor-post-info__item-prefix\">by<\/span>\n\t\t\t\t\t\t\t\t\t\tFabian\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-b8e28dd elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\tlast edited:08.09.2026\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d711205 elementor-widget elementor-widget-n-accordion\" data-id=\"6d711205\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;default_state&quot;:&quot;all_collapsed&quot;,&quot;max_items_expended&quot;:&quot;one&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1830\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1830\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Troubleshooting <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-1830\" class=\"elementor-element elementor-element-6f0fd908 e-con-full e-flex e-con e-child\" data-id=\"6f0fd908\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d5139db elementor-widget elementor-widget-text-editor\" data-id=\"5d5139db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n  <li>File is not displayed. Make sure it is a valid audio file and not just a renamed file extension. Supported formats include WAV, MP3, FLAC, AAC, OGG, and M4A.<\/li>\n  <li>Multiple files are not accepted. The tool processes one file at a time. If nothing happens, reload the page and try again.<\/li>\n  <li>Analysis or normalization does not start. Check whether JavaScript is enabled in your browser. Try using a current browser such as Chrome, Edge, or Safari.<\/li>\n  <li>Progress appears to be stuck. All processing runs locally in your browser. For long audio files, this may take some time. Wait until the process is complete.<\/li>\n  <li>Processing is complete but download is not working. Check whether your browser is blocking downloads. Disable any popup or download blockers and reload the page.<\/li>\n  <li>Very large file. Uncompressed formats like WAV can be very large. For long recordings, normalization may take several minutes. Close other programs to free up memory.<\/li>\n  <li>File cannot be decoded. The audio file may be corrupted or contain an unsupported format. Re-export the file as a standard WAV at 16-bit or 24-bit.<\/li>\n  <li>Processing stops on mobile devices. The page must remain in the foreground until processing is complete. Switching apps or locking the screen may pause the process.<\/li>\n  <li>No download on iPhone or iPad. Long-press the download button and select Save to Files. Downloads may be blocked in private browsing mode.<\/li>\n  <li>MP3 output sounds different from WAV. MP3 is a lossy compressed format. For the highest quality, select MP3 320k in the format options.<\/li>\n  <li>Browser becomes slow or unresponsive. Large audio files require significant memory. Use a desktop browser for long recordings when possible.<\/li>\n  <li>Normalized file does not appear. Reload the page and add the file again. Make sure the file has fully loaded before starting normalization.<\/li>\n<\/ul>\nIf problems persist, try a different up-to-date browser or reduce the file size by splitting the audio into shorter segments.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da2c40b elementor-widget elementor-widget-global elementor-global-17897 elementor-widget-template\" data-id=\"da2c40b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"17894\" class=\"elementor elementor-17894\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1dddbc46 e-flex e-con-boxed e-con e-child\" data-id=\"1dddbc46\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e13578b elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"2e13578b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-hand-holding-heart\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Use our affiliate links and support our work.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-403ca943 elementor-widget elementor-widget-text-editor\" data-id=\"403ca943\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Our website is <strong>free of external advertising banners<\/strong> <strong>and fake download buttons<\/strong>. By purchasing from our <strong>affiliate partners<\/strong> <a href=\"https:\/\/amzn.to\/4qKJuU2\" target=\"_blank\" rel=\"nofollow noopener\"><strong>Amazon<\/strong><\/a>* or <a href=\"https:\/\/www.thomannmusic.com\/?offid=1&amp;affid=2950\" target=\"_blank\" rel=\"nofollow noopener\"><strong>Thomann<\/strong><\/a>*, you <strong>don&#8217;t pay more<\/strong> and <strong>support us<\/strong> at the same time. Thank you!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37e33623 elementor-widget elementor-widget-text-editor\" data-id=\"37e33623\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Want to <strong>check the loudness of an audio file<\/strong>? And if it&#8217;s off, normalize it to the correct level.<br \/>With our <strong>Loudness Analyzer and Normalizer<\/strong> you can do that without any downloads. All processing runs directly in your browser. Your audio data never leaves your device.<\/p>\n<p>Ideal for music productions, podcasts, voice recordings, or broadcast content where you need to adjust loudness.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35c6b5d9 elementor-widget elementor-widget-heading\" data-id=\"35c6b5d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Analyzing and Normalizing Loudness: Here's How It Works<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7f2ece73 elementor-widget elementor-widget-text-editor\" data-id=\"7f2ece73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Our browser-based <b>Loudness Analyzer and Normalizer<\/b> not only analyzes the loudness of your audio file, it can also adjust it directly. <b>This analysis and processing runs without any upload<\/b>. Your data is processed using built-in browser features. No audio information is sent to our server. Your audio data stays on your device at all times. <b>The tool is 100% free<\/b>. There are <b>no upload or conversion limits<\/b>. Now also available for multi file upload.<br \/>Ideal for music, podcasts, voice recordings, or audio tracks from videos or broadcast content.<br \/><strong>How our Loudness Analyzer and Normalizer works<\/strong>:<\/p><ol><li>Select an audio file<\/li><li>The analysis starts automatically<\/li><li>Review the current loudness values<\/li><li>Adjust the loudness if needed.<\/li><\/ol><p><strong>No registration.<\/strong><br \/><strong>No file size limit.<\/strong><br \/><strong>No installation.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-252ffed1 elementor-widget elementor-widget-heading\" data-id=\"252ffed1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Which loudness should you choose?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53a17cf2 elementor-widget elementor-widget-text-editor\" data-id=\"53a17cf2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The optimal loudness depends on the use case and platform. Target values for platforms and broadcast are:<\/p>\n<p><strong>YouTube:<\/strong> \u221214 LUFS<\/p>\n<p><strong>YouTube Shorts:<\/strong> \u221214 LUFS<\/p>\n<p><strong>Instagram:<\/strong> \u221214 LUFS<\/p>\n<p><strong>TikTok:<\/strong> \u221214 LUFS<\/p>\n<p><strong>Spotify Music:<\/strong> \u221214 LUFS<\/p>\n<p><strong>Spotify Podcasts:<\/strong> \u221214 LUFS<\/p>\n<p><strong>Apple Music:<\/strong> \u221216 LUFS<\/p>\n<p><strong>Apple Podcasts:<\/strong> \u221216 LUFS<\/p>\n<p><strong>Amazon Music:<\/strong> \u221214 LUFS<\/p>\n<p><strong>Audible:<\/strong> \u221218 LUFS<\/p>\n<p><strong>Broadcast \/ TV per EBU R128:<\/strong> \u221223 LUFS<\/p>\n<p>Streaming platforms frequently normalize audio automatically. If your file is significantly louder or quieter than the target, this can lead to unexpected level changes. Proper normalization ensures consistent loudness.<\/p>\n<p><strong>Note:<\/strong> <strong>YouTube does not normalize audio louder!<\/strong> If your audio is too quiet, YouTube will <strong>not<\/strong> adjust it automatically. If it is too loud, it will be turned down to the target level.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e31c571 elementor-widget elementor-widget-html\" data-id=\"1e31c571\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<table lang=\"en\"\n       class=\"sag-table lufs-platform-compare\"\n       style=\"width:100%; max-width:100%; table-layout:fixed; border-collapse:collapse; font-size:12px;\">\n  <colgroup>\n    <col style=\"width:33.33%;\">\n    <col style=\"width:33.33%;\">\n    <col style=\"width:33.33%;\">\n  <\/colgroup>\n  <thead>\n    <tr>\n      <th scope=\"col\" style=\"text-align:left; white-space:normal; overflow-wrap:normal; word-break:normal; hyphens:auto;\">\n        Platform\n      <\/th>\n      <th scope=\"col\" style=\"text-align:left; white-space:normal; overflow-wrap:normal; word-break:normal; hyphens:auto;\">\n        Target Loudness\n      <\/th>\n      <th scope=\"col\" style=\"text-align:left; white-space:normal; overflow-wrap:normal; word-break:normal; hyphens:auto;\">\n        Typical Use\n      <\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">YouTube<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Videos and music content<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">YouTube Shorts<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Short-form videos<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Instagram<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Reels and social media videos<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">TikTok<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Short-form videos and social media content<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Spotify Music<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Music streaming<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Spotify Podcasts<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Podcast streaming<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Apple Podcasts<\/th>\n      <td>\u221216 LUFS<\/td>\n      <td>Podcast platform<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Apple Music<\/th>\n      <td>\u221216 LUFS<\/td>\n      <td>Music streaming<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Amazon Music<\/th>\n      <td>\u221214 LUFS<\/td>\n      <td>Music streaming<\/td>\n    <\/tr>\n    <tr>\n      <th scope=\"row\" style=\"text-align:left;\">Audible<\/th>\n      <td>\u221218 LUFS<\/td>\n      <td>Audiobooks and spoken word<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d080415 elementor-widget elementor-widget-heading\" data-id=\"d080415\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Why you should use our web app for your conversion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e8f747f elementor-widget elementor-widget-text-editor\" data-id=\"1e8f747f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tOur tool uses modern browser technologies. All processing happens <strong>directly in your browser<\/strong>. This means:\n<ul>\n  <li><strong>No upload to external servers<\/strong><\/li>\n  <li><strong>No storage of your files<\/strong><\/li>\n  <li><strong>No sharing of audio data<\/strong><\/li>\n  <li><strong>Full control over your content<\/strong><\/li>\n<\/ul>\nThis is a key advantage, especially for sensitive voice recordings or unreleased music projects.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b3bceac elementor-widget elementor-widget-heading\" data-id=\"3b3bceac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What is loudness? And what is the difference to volume?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60f4952 elementor-widget elementor-widget-text-editor\" data-id=\"60f4952\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Volume<\/strong> usually describes the momentary level of a signal, for example in dBFS. It is a purely technical value.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Loudness\" target=\"_blank\" rel=\"noopener\"><strong>Loudness<\/strong><\/a> describes <strong>how loud a signal is perceived<\/strong> over its entire duration.<\/p>\n<p>This is why a file with lower peaks can still sound louder than another. Similarly, some files require volume adjustments because the loudness fluctuates. Commercials often sound louder because their loudness is higher.<\/p>\n<p><strong>Common measurements in loudness analysis<\/strong>:<\/p>\n<p><strong>Integrated LUFS<\/strong><br \/>Average loudness over the entire file.<\/p>\n<p><strong>Short Term LUFS<\/strong><br \/>Loudness over short time windows (3 seconds).<\/p>\n<p><strong>True Peak<\/strong><br \/>Highest actual peak level after D\/A reconstruction.<\/p>\n<p><strong>Loudness Range<\/strong><br \/>A measure of dynamics \u2014 the difference between the loudest and quietest parts of the audio file.<\/p>\n<p>These values help master audio consistently and in line with platform requirements.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6bf47351 elementor-widget elementor-widget-heading\" data-id=\"6bf47351\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Why loudness normalization is important<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd9f3d8 elementor-widget elementor-widget-text-editor\" data-id=\"dd9f3d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Without loudness normalization, audio content can have widely varying levels. This leads to a poor listening experience.<\/p><p><strong>Common problems:<\/strong><\/p><ul><li>Podcasts are too quiet (e.g. on YouTube)<\/li><li>Processing (e.g. limiting) affects quality and tone<\/li><li>Music is automatically turned down by platforms, which can alter the sound<\/li><li>Voice recordings have significant loudness fluctuations<\/li><\/ul><p>Proper normalization ensures:<\/p><ul><li>Consistent loudness<\/li><li>Better intelligibility<\/li><li>Platform-compliant audio levels<\/li><li>Professional sounding productions<\/li><\/ul><p>Most importantly, it means you can be confident that the platform won&#8217;t reprocess your file, and you retain full control over the sound. Every additional processing step means a loss of control.<\/p><p>If your song is too loud, the platform will turn it down and you lose dynamics in your mix. If it&#8217;s too quiet, some platforms won&#8217;t compensate. On YouTube for example, it simply stays too quiet.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58201de elementor-widget elementor-widget-heading\" data-id=\"58201de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Do you need to submit files in other formats?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7968e577 elementor-widget elementor-widget-text-editor\" data-id=\"7968e577\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Then check out our <a href=\"https:\/\/soundandgo.com\/en\/audio-converter\/\"><strong>audio converter<\/strong><\/a>. You can use it to convert many other audio formats. It\u2019s also free, ad-free, and has no data limits.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d6b164c elementor-widget elementor-widget-heading\" data-id=\"6d6b164c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Frequently Asked Questions About the Loudness Analyzer and Normalizer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79aaf1c9 elementor-widget elementor-widget-n-accordion\" data-id=\"79aaf1c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;default_state&quot;:&quot;expanded&quot;,&quot;max_items_expended&quot;:&quot;one&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2040\" class=\"e-n-accordion-item\" open>\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"true\" aria-controls=\"e-n-accordion-item-2040\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> What is LUFS? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2040\" class=\"elementor-element elementor-element-48690cee e-con-full e-flex e-con e-child\" data-id=\"48690cee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-278f7628 elementor-widget elementor-widget-text-editor\" data-id=\"278f7628\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tLUFS is a metric for the perceived loudness of an audio signal and is used in modern broadcast and streaming standards.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2041\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"2\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2041\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> What is the loudness target for YouTube? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2041\" class=\"elementor-element elementor-element-1360d0fd e-con-full e-flex e-con e-child\" data-id=\"1360d0fd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11308b85 elementor-widget elementor-widget-text-editor\" data-id=\"11308b85\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>YouTube normalizes audio to \u221214 LUFS. If your audio is significantly louder than that, it will be automatically lowered. If it&#8217;s too quiet, YouTube won&#8217;t enhance it.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2042\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"3\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2042\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> What is the loudness target for Social Media? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2042\" class=\"elementor-element elementor-element-582e8917 e-con-full e-flex e-con e-child\" data-id=\"582e8917\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2289564b elementor-widget elementor-widget-text-editor\" data-id=\"2289564b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>All social media platforms typically normalize audio to around \u221214 LUFS. If your audio is significantly louder than that, it will be automatically lowered.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2043\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"4\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2043\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Will my files be uploaded? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2043\" class=\"elementor-element elementor-element-76da3565 e-con-full e-flex e-con e-child\" data-id=\"76da3565\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4555ea96 elementor-widget elementor-widget-text-editor\" data-id=\"4555ea96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>No. All analysis and processing takes place locally in your browser. Your files never leave your device.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2044\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"5\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2044\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Is there a file size limit? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2044\" class=\"elementor-element elementor-element-43851a15 e-con-full e-flex e-con e-child\" data-id=\"43851a15\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a3777da elementor-widget elementor-widget-text-editor\" data-id=\"a3777da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Since no servers are involved, there is no traditional upload limit. The maximum file size depends on your device&#8217;s capabilities.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2045\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"6\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2045\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Does the Loudness Analyzer work on smartphones? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2045\" class=\"elementor-element elementor-element-5319be8 e-con-full e-flex e-con e-child\" data-id=\"5319be8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c3e4e7e elementor-widget elementor-widget-text-editor\" data-id=\"2c3e4e7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Yes. The tool works on modern browsers on Windows, macOS, Linux, iOS, and Android.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-2046\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"7\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-2046\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Does normalization affect audio quality? <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-2046\" class=\"elementor-element elementor-element-75355901 e-con-full e-flex e-con e-child\" data-id=\"75355901\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20b2c8d2 elementor-widget elementor-widget-text-editor\" data-id=\"20b2c8d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Loudness normalization simply adjusts the volume level. If volume spikes occur during normalization, a limiter kicks in to ensure the target levels are met and prevent clipping. The audio quality is preserved as much as possible. You can adjust the limiter settings<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-17ce84cd e-con-full elementor-hidden-mobile e-flex e-con e-child\" data-id=\"17ce84cd\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_parent&quot;:&quot;yes&quot;,&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2563b4d3 elementor-widget elementor-widget-heading\" data-id=\"2563b4d3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">This might be interesting for you:<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<a class=\"elementor-element elementor-element-22785a40 e-con-full e-flex e-con e-child\" data-id=\"22785a40\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" href=\"https:\/\/soundandgo.com\/so-findest-du-das-beste-usb-mikrofon-usb-mikrofone\/\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43bce1f4 elementor-widget elementor-widget-image\" data-id=\"43bce1f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones-1024x576.webp\" class=\"attachment-large size-large wp-image-13027\" alt=\"\" srcset=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones-1024x576.webp 1024w, https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones-300x169.webp 300w, https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones-768x432.webp 768w, https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones-1536x864.webp 1536w, https:\/\/soundandgo.com\/wp-content\/uploads\/2025\/04\/How-to-find-the-best-USB-microphone-for-you-Our-2024-recommendations-for-USB-microphones.webp 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d977930 elementor-widget elementor-widget-heading\" data-id=\"5d977930\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">The best USB Microphones<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t<a class=\"elementor-element elementor-element-4ccb81c4 e-con-full e-flex e-con e-child\" data-id=\"4ccb81c4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" href=\"https:\/\/soundandgo.com\/die-besten-studio-kopfhoerer-vergleich\/\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20854270 elementor-widget elementor-widget-image\" data-id=\"20854270\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-1024x576.webp\" class=\"attachment-large size-large wp-image-9563\" alt=\"The best studio headphones - Studio headphones in comparison\" srcset=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-1024x576.webp 1024w, https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-300x169.webp 300w, https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-768x432.webp 768w, https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-1536x864.webp 1536w, https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison-600x338.webp 600w, https:\/\/soundandgo.com\/wp-content\/uploads\/2024\/09\/The-best-studio-headphones-Studio-headphones-in-comparison.webp 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2dfbff47 elementor-widget elementor-widget-heading\" data-id=\"2dfbff47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">The best Studio Headphones<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-653e003 e-flex e-con-boxed e-con e-parent\" data-id=\"653e003\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7aec8c elementor-widget elementor-widget-global elementor-global-11602 elementor-widget-template\" data-id=\"a7aec8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"11596\" class=\"elementor elementor-11596\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-31254b35 e-flex e-con-boxed e-con e-parent\" data-id=\"31254b35\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-33380e84 e-flex e-con-boxed e-con e-child\" data-id=\"33380e84\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-570e3785 elementor-widget elementor-widget-text-editor\" data-id=\"570e3785\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Links marked with * are affiliate links. There are no additional costs for you, some of these links are with an automatic discount for you. We mark these links for transparency and would never recommend bad products. Find out more here: <a href=\"https:\/\/soundandgo.com\/en\/our-partners\/\"><b>Our partners<\/b><\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-776583f9 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"776583f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6b86bab7 elementor-widget elementor-widget-heading\" data-id=\"6b86bab7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Our Services<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5282592a e-flex e-con-boxed e-con e-child\" data-id=\"5282592a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6c3c3271 e-con-full e-flex e-con e-child\" data-id=\"6c3c3271\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17964777 elementor-widget elementor-widget-heading\" data-id=\"17964777\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">Podcast Intro<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-452e84 e-flex e-con-boxed e-con e-child\" data-id=\"452e84\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-670e50e2 elementor-widget elementor-widget-heading\" data-id=\"670e50e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">Service<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-702b69a elementor-widget elementor-widget-image\" data-id=\"702b69a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"2560\" height=\"1707\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-scaled.webp\" class=\"attachment-full size-full wp-image-18451\" alt=\"Podcast Intro erstellung podcast intro erstellen lassen\" srcset=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-scaled.webp 2560w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-300x200.webp 300w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-1024x683.webp 1024w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-768x512.webp 768w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-1536x1024.webp 1536w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Intro-erstellung-podcast-intro-erstellen-lassen-2048x1365.webp 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" title=\"\">\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7094acf0 elementor-widget elementor-widget-heading\" data-id=\"7094acf0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">From 149$<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a995fb7 elementor-widget elementor-widget-heading\" data-id=\"a995fb7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">VAT depends on the request<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d906945 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"d906945\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/soundandgo.com\/en\/podcast-intro-creation-request-a-podcast-intro\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book now<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f5ef12f e-con-full e-flex e-con e-child\" data-id=\"5f5ef12f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6afa204c elementor-widget elementor-widget-heading\" data-id=\"6afa204c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">Podcast Editing<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4c91b874 e-flex e-con-boxed e-con e-child\" data-id=\"4c91b874\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22394ba7 elementor-widget elementor-widget-heading\" data-id=\"22394ba7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">Service<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d6d074e elementor-widget elementor-widget-image\" data-id=\"1d6d074e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1707\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-scaled.webp\" class=\"attachment-full size-full wp-image-18687\" alt=\"Podcast Schnitt Podcast schneiden lassen Video Podcast Audio Podcast Editing\" srcset=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-scaled.webp 2560w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-300x200.webp 300w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-1024x683.webp 1024w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-768x512.webp 768w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-1536x1024.webp 1536w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/03\/Podcast-Schnitt-Podcast-schneiden-lassen-Video-Podcast-Audio-Podcast-Editing-2048x1365.webp 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" title=\"\">\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63c3e39b elementor-widget elementor-widget-heading\" data-id=\"63c3e39b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">From 95$<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a6e24b2 elementor-widget elementor-widget-heading\" data-id=\"2a6e24b2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">VAT depends on the request<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24e7337c elementor-align-center elementor-widget elementor-widget-button\" data-id=\"24e7337c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/soundandgo.com\/en\/professional-podcast-editing-podcast-edit\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book now<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5976cde e-con-full e-flex e-con e-child\" data-id=\"5976cde\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b432358 elementor-widget elementor-widget-heading\" data-id=\"b432358\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">Video Podcast Editing<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b2d74c2 e-flex e-con-boxed e-con e-child\" data-id=\"b2d74c2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e6ad4d3 elementor-widget elementor-widget-heading\" data-id=\"e6ad4d3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">Service<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e221c39 elementor-widget elementor-widget-image\" data-id=\"e221c39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1707\" src=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-scaled.webp\" class=\"attachment-full size-full wp-image-18683\" alt=\"Video Podcast schneiden lassen + Social Media Clips Video Podcast Schnitt Agentur\" srcset=\"https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-scaled.webp 2560w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-300x200.webp 300w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-1024x683.webp 1024w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-768x512.webp 768w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-1536x1024.webp 1536w, https:\/\/soundandgo.com\/wp-content\/uploads\/2026\/06\/Video-Podcast-schneiden-lassen-Social-Media-Clips-Video-Podcast-Schnitt-Agentur-2048x1365.webp 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" title=\"\">\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9857d14 elementor-widget elementor-widget-heading\" data-id=\"9857d14\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">From 195$<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f6baaa5 elementor-widget elementor-widget-heading\" data-id=\"f6baaa5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">VAT depends on the request<\/a><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-29633e6 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"29633e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-md\" href=\"https:\/\/soundandgo.com\/en\/video-podcast-editing-service\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book now<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home Loudness Analyzer and LUFS Normalizer online 100% Locally in browser No Uploads No Storing No Ads Loudness Tool Loudness Tool Analyze and normalize your audio files. Everything stays on your device. 1 Select a file Drop your file here or browse \u00d7 2 Analyze Starts automatically once you add a file. Integrated \u2014 Range [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":18149,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":15944,"footnotes":""},"categories":[217],"tags":[],"beliebteste":[],"beitragsart":[215],"anschluss":[],"anwendungsart":[],"mikrofontyp":[],"hersteller":[],"class_list":["post-18147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tool-2","beitragsart-tool"],"_links":{"self":[{"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/posts\/18147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/comments?post=18147"}],"version-history":[{"count":44,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/posts\/18147\/revisions"}],"predecessor-version":[{"id":19264,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/posts\/18147\/revisions\/19264"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/media\/18149"}],"wp:attachment":[{"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/media?parent=18147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/categories?post=18147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/tags?post=18147"},{"taxonomy":"beliebteste","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/beliebteste?post=18147"},{"taxonomy":"beitragsart","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/beitragsart?post=18147"},{"taxonomy":"anschluss","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/anschluss?post=18147"},{"taxonomy":"anwendungsart","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/anwendungsart?post=18147"},{"taxonomy":"mikrofontyp","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/mikrofontyp?post=18147"},{"taxonomy":"hersteller","embeddable":true,"href":"https:\/\/soundandgo.com\/en\/wp-json\/wp\/v2\/hersteller?post=18147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}