{
  "title": "Audio dynamics compressor",
  "human_url": "https://happytails.ai/en/media-tools/audio-dynamics-compressor/",
  "agent_url": "https://happytails.ai/agents/en/media-tools/audio-dynamics-compressor/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/media-tools/audio-dynamics-compressor.md",
  "content": "Audio dynamics compressor\nEven out the loud and quiet parts of a recording with threshold, ratio, knee, attack and release controls, and see the gain reduction over time. This changes the dynamics of the sound, not the size of the file.\nHow to use Audio dynamics compressor\nChoose the recording to compress.\nSet the threshold, ratio and knee, then the attack and release times.\nAdd makeup gain if you want the result louder.\nCompress, compare the original and processed sound, check the gain reduction trace, and download the WAV.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nUseful next steps\nAudio limiter\nAudio loudness normalizer\nCompress audio\nOne recording up to 256 MiB and 10 minutes; threshold -60 to 0 dBFS, ratio 1 to 20, knee 0 to 24 dB, attack 0.1 to 200 ms, release 5 to 2,000 ms, makeup 0 to 24 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose, a JSON report and a CSV gain reduction trace.\nDynamics, not file size\nA dynamics compressor turns down the parts of a recording that go above the threshold, so loud and quiet passages sit closer together. It does not make the file smaller. To reduce the file size, use the Compress audio tool instead.\nHow the gain is computed\nThe level of each sample is measured as a peak, or as an RMS level smoothed over 10 ms. Above the threshold the level is reduced by the ratio, so 4 to 1 lets 4 dB of input become 1 dB. The knee softens the change around the threshold, following the gain computer of Giannoulis, Massberg and Reiss (2012). Attack and release set how fast the reduction starts and ends.\nReading the result\nThe chart shows gain reduction over time. The full CSV lists the strongest reduction in each 10 ms step, and the report gives loudness and peaks before and after. Use loudness matching in the player to compare without making the louder version seem better. This changes playback only, not your download.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Audio limiter",
      "url": "https://happytails.ai/en/media-tools/audio-limiter/"
    },
    {
      "name": "Audio loudness normalizer",
      "url": "https://happytails.ai/en/media-tools/audio-loudness-normalizer/"
    },
    {
      "name": "Compress audio",
      "url": "https://happytails.ai/en/media-tools/compress-audio/"
    }
  ],
  "tool": {
    "id": "audio-dynamics-compressor",
    "category": "media-tools",
    "built": true,
    "requirements": "One recording up to 256 MiB and 10 minutes; threshold -60 to 0 dBFS, ratio 1 to 20, knee 0 to 24 dB, attack 0.1 to 200 ms, release 5 to 2,000 ms, makeup 0 to 24 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose, a JSON report and a CSV gain reduction trace.",
    "implementation": {
      "fields": [
        {
          "key": "threshold",
          "label": "Threshold (dBFS)",
          "value": "-18",
          "type": "number",
          "min": -60,
          "max": 0,
          "step": 0.5
        },
        {
          "key": "ratio",
          "label": "Ratio (to 1)",
          "value": "4",
          "type": "number",
          "min": 1,
          "max": 20,
          "step": 0.1
        },
        {
          "key": "knee",
          "label": "Knee width (dB)",
          "value": "6",
          "type": "number",
          "min": 0,
          "max": 24,
          "step": 0.5
        },
        {
          "key": "attack",
          "label": "Attack (ms)",
          "value": "10",
          "type": "number",
          "min": 0.1,
          "max": 200,
          "step": 0.1
        },
        {
          "key": "release",
          "label": "Release (ms)",
          "value": "120",
          "type": "number",
          "min": 5,
          "max": 2000,
          "step": 1
        },
        {
          "key": "makeup",
          "label": "Makeup gain (dB)",
          "value": "0",
          "type": "number",
          "min": 0,
          "max": 24,
          "step": 0.5
        },
        {
          "key": "detector",
          "label": "Level detector",
          "value": "peak",
          "type": "select",
          "values": [
            "peak",
            "rms"
          ],
          "labels": {
            "peak": "Peak level",
            "rms": "RMS level"
          }
        },
        {
          "key": "encoding",
          "label": "WAV sample format",
          "value": "match",
          "type": "select",
          "values": [
            "match",
            "pcm16",
            "pcm24",
            "float32"
          ],
          "labels": {
            "match": "Same as source",
            "pcm16": "16-bit PCM",
            "pcm24": "24-bit PCM",
            "float32": "32-bit float"
          }
        }
      ],
      "registrationFamily": "audio-dsp-dynamics-filters",
      "presentation": "metrics",
      "files": true,
      "accept": ".wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*",
      "maxFileBytes": 268435456,
      "input": false,
      "inputErrorCode": "AUDIO_DSP_DYNAMICS_FILTERS_TOO_LONG",
      "note": "Runs locally in your browser. Compresses the dynamics of one recording up to 10 minutes; it does not make the file smaller.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Audio file",
        "placeholder": "Choose a recording",
        "help": "The dynamics of this file are compressed; its size is not reduced. Up to 1,000,000 characters. Review the settings before running.",
        "helpParts": [
          "The dynamics of this file are compressed; its size is not reduced.",
          "Up to 1,000,000 characters.",
          "Review the settings before running."
        ],
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Audio dynamics compressor\n\n- Human page: https://happytails.ai/en/media-tools/audio-dynamics-compressor/\n- Markdown: https://happytails.ai/en/media-tools/audio-dynamics-compressor.md\n- Structured JSON: https://happytails.ai/agents/en/media-tools/audio-dynamics-compressor/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `audio-dynamics-compressor` |\n| Category | media-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRuns locally in your browser. Compresses the dynamics of one recording up to 10 minutes; it does not make the file smaller.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\nAccepted browser files: `.wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*`. Choose one file.\n\nBrowser file-input limit: 268435456 bytes in total. HTTP limits can differ.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `threshold` | Threshold (dBFS) | number | \"-18\" | min=-60 max=0 step=0.5 |\n| `ratio` | Ratio (to 1) | number | \"4\" | min=1 max=20 step=0.1 |\n| `knee` | Knee width (dB) | number | \"6\" | min=0 max=24 step=0.5 |\n| `attack` | Attack (ms) | number | \"10\" | min=0.1 max=200 step=0.1 |\n| `release` | Release (ms) | number | \"120\" | min=5 max=2000 step=1 |\n| `makeup` | Makeup gain (dB) | number | \"0\" | min=0 max=24 step=0.5 |\n| `detector` | Level detector | select | \"peak\" | Allowed: peak, rms |\n| `encoding` | WAV sample format | select | \"match\" | Allowed: match, pcm16, pcm24, float32 |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nOne recording up to 256 MiB and 10 minutes; threshold -60 to 0 dBFS, ratio 1 to 20, knee 0 to 24 dB, attack 0.1 to 200 ms, release 5 to 2,000 ms, makeup 0 to 24 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose, a JSON report and a CSV gain reduction trace.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"audio-dynamics-compressor\",\n  \"category\": \"media-tools\",\n  \"built\": true,\n  \"requirements\": \"One recording up to 256 MiB and 10 minutes; threshold -60 to 0 dBFS, ratio 1 to 20, knee 0 to 24 dB, attack 0.1 to 200 ms, release 5 to 2,000 ms, makeup 0 to 24 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose, a JSON report and a CSV gain reduction trace.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"threshold\",\n        \"label\": \"Threshold (dBFS)\",\n        \"value\": \"-18\",\n        \"type\": \"number\",\n        \"min\": -60,\n        \"max\": 0,\n        \"step\": 0.5\n      },\n      {\n        \"key\": \"ratio\",\n        \"label\": \"Ratio (to 1)\",\n        \"value\": \"4\",\n        \"type\": \"number\",\n        \"min\": 1,\n        \"max\": 20,\n        \"step\": 0.1\n      },\n      {\n        \"key\": \"knee\",\n        \"label\": \"Knee width (dB)\",\n        \"value\": \"6\",\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 24,\n        \"step\": 0.5\n      },\n      {\n        \"key\": \"attack\",\n        \"label\": \"Attack (ms)\",\n        \"value\": \"10\",\n        \"type\": \"number\",\n        \"min\": 0.1,\n        \"max\": 200,\n        \"step\": 0.1\n      },\n      {\n        \"key\": \"release\",\n        \"label\": \"Release (ms)\",\n        \"value\": \"120\",\n        \"type\": \"number\",\n        \"min\": 5,\n        \"max\": 2000,\n        \"step\": 1\n      },\n      {\n        \"key\": \"makeup\",\n        \"label\": \"Makeup gain (dB)\",\n        \"value\": \"0\",\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 24,\n        \"step\": 0.5\n      },\n      {\n        \"key\": \"detector\",\n        \"label\": \"Level detector\",\n        \"value\": \"peak\",\n        \"type\": \"select\",\n        \"values\": [\n          \"peak\",\n          \"rms\"\n        ],\n        \"labels\": {\n          \"peak\": \"Peak level\",\n          \"rms\": \"RMS level\"\n        }\n      },\n      {\n        \"key\": \"encoding\",\n        \"label\": \"WAV sample format\",\n        \"value\": \"match\",\n        \"type\": \"select\",\n        \"values\": [\n          \"match\",\n          \"pcm16\",\n          \"pcm24\",\n          \"float32\"\n        ],\n        \"labels\": {\n          \"match\": \"Same as source\",\n          \"pcm16\": \"16-bit PCM\",\n          \"pcm24\": \"24-bit PCM\",\n          \"float32\": \"32-bit float\"\n        }\n      }\n    ],\n    \"registrationFamily\": \"audio-dsp-dynamics-filters\",\n    \"presentation\": \"metrics\",\n    \"files\": true,\n    \"accept\": \".wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*\",\n    \"maxFileBytes\": 268435456,\n    \"input\": false,\n    \"inputErrorCode\": \"AUDIO_DSP_DYNAMICS_FILTERS_TOO_LONG\",\n    \"note\": \"Runs locally in your browser. Compresses the dynamics of one recording up to 10 minutes; it does not make the file smaller.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Audio file\",\n      \"placeholder\": \"Choose a recording\",\n      \"help\": \"The dynamics of this file are compressed; its size is not reduced. Up to 1,000,000 characters. Review the settings before running.\",\n      \"helpParts\": [\n        \"The dynamics of this file are compressed; its size is not reduced.\",\n        \"Up to 1,000,000 characters.\",\n        \"Review the settings before running.\"\n      ],\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nEven out the loud and quiet parts of a recording with threshold, ratio, knee, attack and release controls, and see the gain reduction over time. This changes the dynamics of the sound, not the size of the file.\n\n### How to use Audio dynamics compressor\n\n1. Choose the recording to compress.\n2. Set the threshold, ratio and knee, then the attack and release times.\n3. Add makeup gain if you want the result louder.\n4. Compress, compare the original and processed sound, check the gain reduction trace, and download the WAV.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n## Useful next steps\n\n- [Audio limiter](https://happytails.ai/en/media-tools/audio-limiter/) ([Markdown](https://happytails.ai/en/media-tools/audio-limiter.md))\n\n- [Audio loudness normalizer](https://happytails.ai/en/media-tools/audio-loudness-normalizer/) ([Markdown](https://happytails.ai/en/media-tools/audio-loudness-normalizer.md))\n\n- [Compress audio](https://happytails.ai/en/media-tools/compress-audio/) ([Markdown](https://happytails.ai/en/media-tools/compress-audio.md))\n\nOne recording up to 256 MiB and 10 minutes; threshold -60 to 0 dBFS, ratio 1 to 20, knee 0 to 24 dB, attack 0.1 to 200 ms, release 5 to 2,000 ms, makeup 0 to 24 dB. WAV is read with every sample intact; other formats are decoded by your browser at 48 kHz. Everything is processed on your device and nothing is uploaded. Download: WAV in the source format or the format you choose, a JSON report and a CSV gain reduction trace.\n\n## Dynamics, not file size\n\nA dynamics compressor turns down the parts of a recording that go above the threshold, so loud and quiet passages sit closer together. It does not make the file smaller. To reduce the file size, use the Compress audio tool instead.\n\n### How the gain is computed\n\nThe level of each sample is measured as a peak, or as an RMS level smoothed over 10 ms. Above the threshold the level is reduced by the ratio, so 4 to 1 lets 4 dB of input become 1 dB. The knee softens the change around the threshold, following the gain computer of Giannoulis, Massberg and Reiss (2012). Attack and release set how fast the reduction starts and ends.\n\n### Reading the result\n\nThe chart shows gain reduction over time. The full CSV lists the strongest reduction in each 10 ms step, and the report gives loudness and peaks before and after. Use loudness matching in the player to compare without making the louder version seem better. This changes playback only, not your download.\n"
}