# Audio gaps (/docs/rules/no-audio-gaps)

Reports ranges of the work area where no audio clip is audible.



{/* Generated by scripts/generate-docs.ts. Do not edit. */}

| Property         | Value                                                                       |
| :--------------- | :-------------------------------------------------------------------------- |
| Id               | `no-audio-gaps`                                                             |
| Category         | Static                                                                      |
| Default severity | info                                                                        |
| Scope            | [`audio-gaps`](/docs/reference/computed-scopes#audio-gaps) (computed scope) |

## Options [#options]

| Option       | Type      | Default | Description                                                          |
| :----------- | :-------- | :------ | :------------------------------------------------------------------- |
| `minSeconds` | `number`  | `1`     | Silences shorter than this are not reported.                         |
| `silenceDb`  | `number`  | `-60`   | Clips whose static volume is at or below this do not count as audio. |
| `leading`    | `boolean` | `true`  | Report silence at the start of the work area.                        |
| `trailing`   | `boolean` | `true`  | Report silence at the end of the work area.                          |

## Customize it [#customize-it]

Turn the rule on or off in the panel's Rules settings. To change its options, severity or wording, open it with its cogwheel in the rule editor and save: your copy replaces the built-in rule until you revert it. You can also copy the file below into your rules folder as `no-audio-gaps.rule.json` and edit it. See [Change a built-in rule](/docs/editor/saving#change-a-built-in-rule).

## Rule file [#rule-file]

```json title="no-audio-gaps.rule.json"
{
  "formatVersion": 1,
  "id": "no-audio-gaps",
  "name": {
    "en_US": "Audio gaps",
    "de_DE": "Audiolücken",
    "es_ES": "Huecos de audio",
    "fr_FR": "Blancs audio",
    "it_IT": "Vuoti audio",
    "ja_JP": "オーディオの欠落",
    "ko_KR": "오디오 간격",
    "pt_BR": "Lacunas de áudio",
    "ru_RU": "Пропуски звука",
    "zh_CN": "音频间隙"
  },
  "description": {
    "en_US": "Reports ranges of the work area where no audio clip is audible.",
    "de_DE": "Meldet Bereiche des Arbeitsbereichs, in denen kein Audioclip hörbar ist.",
    "es_ES": "Detecta intervalos del área de trabajo en los que no se oye ningún clip de audio.",
    "fr_FR": "Signale les plages de la zone de travail où aucun élément audio n'est audible.",
    "it_IT": "Segnala gli intervalli dell'area di lavoro in cui nessuna clip audio è udibile.",
    "ja_JP": "ワークエリア内で、聞こえるオーディオクリップがない範囲を報告します。",
    "ko_KR": "작업 영역에서 들리는 오디오 클립이 없는 구간을 보고합니다.",
    "pt_BR": "Relata intervalos da área de trabalho em que nenhum clipe de áudio é audível.",
    "ru_RU": "Сообщает об участках рабочей области, где не слышно ни одного аудиоклипа.",
    "zh_CN": "报告工作区域中没有可听见的音频剪辑的范围。"
  },
  "category": "static",
  "scope": "audio-gaps",
  "severity": "info",
  "options": {
    "minSeconds": {
      "type": "number",
      "default": 1,
      "description": "Silences shorter than this are not reported."
    },
    "silenceDb": {
      "type": "number",
      "default": -60,
      "description": "Clips whose static volume is at or below this do not count as audio."
    },
    "leading": {
      "type": "boolean",
      "default": true,
      "description": "Report silence at the start of the work area."
    },
    "trailing": {
      "type": "boolean",
      "default": true,
      "description": "Report silence at the end of the work area."
    }
  },
  "checks": [
    {
      "condition": {
        "all": [
          {
            "field": "gap.durationSeconds",
            "operator": "greaterThanOrEqual",
            "value": {
              "field": "options.minSeconds"
            }
          },
          {
            "any": [
              {
                "field": "gap.kind",
                "operator": "equals",
                "value": "inner"
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "leading"
                  },
                  {
                    "field": "options.leading",
                    "operator": "equals",
                    "value": true
                  }
                ]
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "trailing"
                  },
                  {
                    "field": "options.trailing",
                    "operator": "equals",
                    "value": true
                  }
                ]
              }
            ]
          },
          {
            "all": [
              {
                "field": "gap.hasBefore",
                "operator": "equals",
                "value": true
              },
              {
                "field": "gap.hasAfter",
                "operator": "equals",
                "value": true
              }
            ]
          }
        ]
      },
      "message": {
        "en_US": "No audio for {gap.durationSeconds} s ({gap.startTimecode} to {gap.endTimecode}) between \"{gap.beforeName}\" on {gap.beforeTrack} and \"{gap.afterName}\" on {gap.afterTrack}.",
        "de_DE": "Kein Audio für {gap.durationSeconds} s ({gap.startTimecode} bis {gap.endTimecode}) zwischen „{gap.beforeName}“ auf {gap.beforeTrack} und „{gap.afterName}“ auf {gap.afterTrack}.",
        "es_ES": "Sin audio durante {gap.durationSeconds} s (de {gap.startTimecode} a {gap.endTimecode}) entre \"{gap.beforeName}\" en {gap.beforeTrack} y \"{gap.afterName}\" en {gap.afterTrack}.",
        "fr_FR": "Aucun audio pendant {gap.durationSeconds} s ({gap.startTimecode} à {gap.endTimecode}) entre « {gap.beforeName} » sur {gap.beforeTrack} et « {gap.afterName} » sur {gap.afterTrack}.",
        "it_IT": "Nessun audio per {gap.durationSeconds} s (da {gap.startTimecode} a {gap.endTimecode}) tra \"{gap.beforeName}\" su {gap.beforeTrack} e \"{gap.afterName}\" su {gap.afterTrack}.",
        "ja_JP": "「{gap.beforeName}」（{gap.beforeTrack}）と「{gap.afterName}」（{gap.afterTrack}）の間に{gap.durationSeconds} sのオーディオの欠落があります（{gap.startTimecode}～{gap.endTimecode}）。",
        "ko_KR": "{gap.durationSeconds} s 동안 오디오 없음({gap.startTimecode}~{gap.endTimecode}): {gap.beforeTrack}의 \"{gap.beforeName}\" 뒤, {gap.afterTrack}의 \"{gap.afterName}\" 앞.",
        "pt_BR": "Sem áudio por {gap.durationSeconds} s ({gap.startTimecode} a {gap.endTimecode}) entre \"{gap.beforeName}\" em {gap.beforeTrack} e \"{gap.afterName}\" em {gap.afterTrack}.",
        "ru_RU": "Нет звука в течение {gap.durationSeconds} с (с {gap.startTimecode} по {gap.endTimecode}) между «{gap.beforeName}» на {gap.beforeTrack} и «{gap.afterName}» на {gap.afterTrack}.",
        "zh_CN": "{gap.durationSeconds} s 无音频（{gap.startTimecode} 至 {gap.endTimecode}），位于 {gap.beforeTrack} 上的“{gap.beforeName}” 和 {gap.afterTrack} 上的“{gap.afterName}” 之间。"
      }
    },
    {
      "condition": {
        "all": [
          {
            "field": "gap.durationSeconds",
            "operator": "greaterThanOrEqual",
            "value": {
              "field": "options.minSeconds"
            }
          },
          {
            "any": [
              {
                "field": "gap.kind",
                "operator": "equals",
                "value": "inner"
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "leading"
                  },
                  {
                    "field": "options.leading",
                    "operator": "equals",
                    "value": true
                  }
                ]
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "trailing"
                  },
                  {
                    "field": "options.trailing",
                    "operator": "equals",
                    "value": true
                  }
                ]
              }
            ]
          },
          {
            "all": [
              {
                "field": "gap.hasBefore",
                "operator": "equals",
                "value": false
              },
              {
                "field": "gap.hasAfter",
                "operator": "equals",
                "value": true
              }
            ]
          }
        ]
      },
      "message": {
        "en_US": "No audio for {gap.durationSeconds} s ({gap.startTimecode} to {gap.endTimecode}) before \"{gap.afterName}\" on {gap.afterTrack}.",
        "de_DE": "Kein Audio für {gap.durationSeconds} s ({gap.startTimecode} bis {gap.endTimecode}) vor „{gap.afterName}“ auf {gap.afterTrack}.",
        "es_ES": "Sin audio durante {gap.durationSeconds} s (de {gap.startTimecode} a {gap.endTimecode}) antes de \"{gap.afterName}\" en {gap.afterTrack}.",
        "fr_FR": "Aucun audio pendant {gap.durationSeconds} s ({gap.startTimecode} à {gap.endTimecode}) avant « {gap.afterName} » sur {gap.afterTrack}.",
        "it_IT": "Nessun audio per {gap.durationSeconds} s (da {gap.startTimecode} a {gap.endTimecode}) prima di \"{gap.afterName}\" su {gap.afterTrack}.",
        "ja_JP": "「{gap.afterName}」（{gap.afterTrack}）の前に{gap.durationSeconds} sのオーディオの欠落があります（{gap.startTimecode}～{gap.endTimecode}）。",
        "ko_KR": "{gap.durationSeconds} s 동안 오디오 없음({gap.startTimecode}~{gap.endTimecode}): {gap.afterTrack}의 \"{gap.afterName}\" 앞.",
        "pt_BR": "Sem áudio por {gap.durationSeconds} s ({gap.startTimecode} a {gap.endTimecode}) antes de \"{gap.afterName}\" em {gap.afterTrack}.",
        "ru_RU": "Нет звука в течение {gap.durationSeconds} с (с {gap.startTimecode} по {gap.endTimecode}) перед «{gap.afterName}» на {gap.afterTrack}.",
        "zh_CN": "{gap.durationSeconds} s 无音频（{gap.startTimecode} 至 {gap.endTimecode}），位于 {gap.afterTrack} 上的“{gap.afterName}” 之前。"
      }
    },
    {
      "condition": {
        "all": [
          {
            "field": "gap.durationSeconds",
            "operator": "greaterThanOrEqual",
            "value": {
              "field": "options.minSeconds"
            }
          },
          {
            "any": [
              {
                "field": "gap.kind",
                "operator": "equals",
                "value": "inner"
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "leading"
                  },
                  {
                    "field": "options.leading",
                    "operator": "equals",
                    "value": true
                  }
                ]
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "trailing"
                  },
                  {
                    "field": "options.trailing",
                    "operator": "equals",
                    "value": true
                  }
                ]
              }
            ]
          },
          {
            "all": [
              {
                "field": "gap.hasBefore",
                "operator": "equals",
                "value": true
              },
              {
                "field": "gap.hasAfter",
                "operator": "equals",
                "value": false
              }
            ]
          }
        ]
      },
      "message": {
        "en_US": "No audio for {gap.durationSeconds} s ({gap.startTimecode} to {gap.endTimecode}) after \"{gap.beforeName}\" on {gap.beforeTrack}.",
        "de_DE": "Kein Audio für {gap.durationSeconds} s ({gap.startTimecode} bis {gap.endTimecode}) nach „{gap.beforeName}“ auf {gap.beforeTrack}.",
        "es_ES": "Sin audio durante {gap.durationSeconds} s (de {gap.startTimecode} a {gap.endTimecode}) después de \"{gap.beforeName}\" en {gap.beforeTrack}.",
        "fr_FR": "Aucun audio pendant {gap.durationSeconds} s ({gap.startTimecode} à {gap.endTimecode}) après « {gap.beforeName} » sur {gap.beforeTrack}.",
        "it_IT": "Nessun audio per {gap.durationSeconds} s (da {gap.startTimecode} a {gap.endTimecode}) dopo \"{gap.beforeName}\" su {gap.beforeTrack}.",
        "ja_JP": "「{gap.beforeName}」（{gap.beforeTrack}）の後に{gap.durationSeconds} sのオーディオの欠落があります（{gap.startTimecode}～{gap.endTimecode}）。",
        "ko_KR": "{gap.durationSeconds} s 동안 오디오 없음({gap.startTimecode}~{gap.endTimecode}): {gap.beforeTrack}의 \"{gap.beforeName}\" 뒤.",
        "pt_BR": "Sem áudio por {gap.durationSeconds} s ({gap.startTimecode} a {gap.endTimecode}) depois de \"{gap.beforeName}\" em {gap.beforeTrack}.",
        "ru_RU": "Нет звука в течение {gap.durationSeconds} с (с {gap.startTimecode} по {gap.endTimecode}) после «{gap.beforeName}» на {gap.beforeTrack}.",
        "zh_CN": "{gap.durationSeconds} s 无音频（{gap.startTimecode} 至 {gap.endTimecode}），位于 {gap.beforeTrack} 上的“{gap.beforeName}” 之后。"
      }
    },
    {
      "condition": {
        "all": [
          {
            "field": "gap.durationSeconds",
            "operator": "greaterThanOrEqual",
            "value": {
              "field": "options.minSeconds"
            }
          },
          {
            "any": [
              {
                "field": "gap.kind",
                "operator": "equals",
                "value": "inner"
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "leading"
                  },
                  {
                    "field": "options.leading",
                    "operator": "equals",
                    "value": true
                  }
                ]
              },
              {
                "all": [
                  {
                    "field": "gap.kind",
                    "operator": "equals",
                    "value": "trailing"
                  },
                  {
                    "field": "options.trailing",
                    "operator": "equals",
                    "value": true
                  }
                ]
              }
            ]
          },
          {
            "all": [
              {
                "field": "gap.hasBefore",
                "operator": "equals",
                "value": false
              },
              {
                "field": "gap.hasAfter",
                "operator": "equals",
                "value": false
              }
            ]
          }
        ]
      },
      "message": {
        "en_US": "No audio for {gap.durationSeconds} s ({gap.startTimecode} to {gap.endTimecode}).",
        "de_DE": "Kein Audio für {gap.durationSeconds} s ({gap.startTimecode} bis {gap.endTimecode}).",
        "es_ES": "Sin audio durante {gap.durationSeconds} s (de {gap.startTimecode} a {gap.endTimecode}).",
        "fr_FR": "Aucun audio pendant {gap.durationSeconds} s ({gap.startTimecode} à {gap.endTimecode}).",
        "it_IT": "Nessun audio per {gap.durationSeconds} s (da {gap.startTimecode} a {gap.endTimecode}).",
        "ja_JP": "{gap.durationSeconds} sのオーディオの欠落があります（{gap.startTimecode}～{gap.endTimecode}）。",
        "ko_KR": "{gap.durationSeconds} s 동안 오디오 없음({gap.startTimecode}~{gap.endTimecode}).",
        "pt_BR": "Sem áudio por {gap.durationSeconds} s ({gap.startTimecode} a {gap.endTimecode}).",
        "ru_RU": "Нет звука в течение {gap.durationSeconds} с (с {gap.startTimecode} по {gap.endTimecode}).",
        "zh_CN": "{gap.durationSeconds} s 无音频（{gap.startTimecode} 至 {gap.endTimecode}）。"
      }
    }
  ],
  "data": {
    "gapStart": "gap.start",
    "gapEnd": "gap.end",
    "gapTicks": "gap.durationTicks",
    "kind": "gap.kind",
    "gapSeconds": "gap.durationSeconds",
    "minSeconds": "options.minSeconds"
  }
}
```
