Remove Silence from Audio

Cut the dead air out of a recording throughout, not just at the ends, with three silence thresholds and a minimum gap length. Runs in your browser.

🌐 Español

Drop your file here (.mp3, .wav, .m4a, .ogg, .flac)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

Two settings that decide everything

Silence removal has exactly two questions in it, and both are exposed rather than hidden behind a single sensitivity slider.

The first is what counts as silence. That is a level, expressed in decibels below full scale, and the right answer depends entirely on your room. A treated booth might be genuinely silent between words. A kitchen table with a fridge running is not, and a threshold that assumes it is will find nothing to cut.

The second is how long a quiet stretch has to last before it counts as dead air rather than as a breath. This is the setting that separates a natural sounding edit from one that sounds like a machine chopped it up, and it is why the default is a full second.

Everything else is fixed, and fixed deliberately, after measuring the actual behaviour of the engine rather than reading its documentation.

Tightening up a recorded interview

  1. Drop your file on the box or use Choose a file. MP3, WAV, M4A, OGG and FLAC are accepted.
  2. Set What counts as silence. Start on Quiet room tone (recommended, -40 dB).
  3. Set Cut pauses longer than. 1 second (recommended) is the safe default.
  4. Click Remove Silence from Audio.
  5. Download the result, named after your file with a no-silence suffix and an mp3 extension.
  6. Listen to a passage where you know there was a pause. If the speech now sounds clipped, raise the minimum gap; if nothing was cut at all, loosen the threshold.
  7. Process another clears the box.

The two settings interact, so change one at a time. Loosening the threshold and shortening the gap together will take a conversational recording apart.

Why the middle of the file is the hard part

The underlying filter’s default behaviour is to trim silence at the beginning and end of a file and leave everything between alone. That is useful for topping and tailing a clip and useless for tightening up a twenty minute interview.

Getting it to work throughout requires telling it to restart its search after every gap it removes, which turns a one shot edge trim into a pass over the whole recording. That single setting is the difference between this tool and a trimmer.

The leading edge needs its own handling too. The filter’s start side only begins counting once it has seen at least one quiet sample, so a recording that opens at full volume on its very first sample never satisfies it, and it keeps discarding audio until the first real pause. Measured on this engine, a file that began abruptly with a second of tone lost that entire second. The fix is a tenth of a second of digital silence spliced onto the front before the filter sees the stream, which gives the start side the quiet sample it is waiting for. That injected silence costs nothing, because it is silence at the start of a file and gets trimmed away along with whatever leading silence you already had.

Numbers that were measured, not assumed

The engine here is built from a specific FFmpeg release, and this particular filter was rewritten afterwards. Recipes copied from current documentation genuinely do not transfer: the same command that collapses a three second gap almost entirely on this build leaves well over a second of it on a modern one.

So every parameter was checked by running the actual engine over synthetic files of known layout. That is how the leading silence problem was found, and it is how one appealing option was ruled out. Leaving a fraction of a second of each removed pause behind sounds like a way to keep the edit natural. On this build, setting it also disables the path that flushes short pauses back into the stream, so the short pauses you wanted to preserve vanish and reappear as trailing silence at the end of the file. Keeping it at zero is what makes the minimum gap promise true.

What it will not do

It will not remove a pause that is not quiet. If somebody says nothing while a fan runs at a level above your threshold, that stretch is not silence as far as the filter is concerned.

It will not shorten a pause. Gaps are removed entirely or left entirely; there is no partial trim.

And it will not decide what is interesting. Removing every gap above the threshold can leave a recording feeling rushed, because pauses carry meaning in speech. Pick the two second option if you only want genuine dead air gone.

The order to run things in

Denoise first with Remove Background Noise from Audio. Lowering the noise floor lets a stricter threshold see the gaps, which is often the difference between this tool cutting everything and cutting nothing.

Level afterwards with Normalize Audio, so the loudness is set on the finished edit. If the file also needs shortening at the ends, Cut MP3 does the plain trim. For a transcript of the tightened result, Transcribe Audio is the next step, and Audio Joiner reassembles several cleaned segments. The rest is on the audio tools hub.

See it in action

Screenshot of the Remove Silence from Audio tool with sysfenix-sample.wav (517 KB) loaded, What counts as silence set to Quiet room tone (recommended, -40 dB), Cut pauses longer than set to 1 second (recommended)
Remove Silence from Audio mid-process: sysfenix-sample.wav (517 KB) loaded, What counts as silence set to Quiet room tone (recommended, -40 dB), Cut pauses longer than set to 1 second (recommended).
Screenshot of the Remove Silence from Audio result screen showing sysfenix-sample-no-silence.mp3 ready to download (72 KB, 86% smaller)
The finished result: sysfenix-sample-no-silence.mp3 ready to download (72 KB, 86% smaller). The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

Does it only trim the start and end, or the middle too?

Throughout. That is the whole point, and it is a specific setting rather than the default behaviour of the underlying filter. Left alone, that filter only removes silence at the edges of a file. Here it is told to restart after every gap it removes, which is what makes it work on the pauses in the middle of a recording.

Why does my recording still have all its pauses?

Almost always because the threshold is stricter than your room. If your background noise sits above the level you selected, the filter never sees anything it considers silent, so nothing is cut. Move from the strictest setting toward the loosest and try again. Denoising first also helps, by lowering the floor so a stricter threshold can reach it.

What decides whether a pause survives?

Its length, measured against the minimum gap you chose. Anything shorter passes through completely untouched, which is what keeps normal speech rhythm intact, and anything longer is removed entirely. That is why the default is one second rather than something shorter, since half a second is close enough to a natural breath that cutting them all makes speech sound artificially clipped.

Is any of the pause left behind?

No, a removed gap is removed completely. Leaving a fraction of a second behind sounds like a natural option and it was tried, but on the engine version used here setting it also switches off the path that lets short pauses through, so the pauses you wanted to keep disappear instead. Keeping it at zero is what makes the minimum gap rule actually hold.

How is the level measured?

As a root mean square average over a twenty millisecond window rather than sample by sample. That is the convention audio levels in decibels are quoted in, and the window is short enough to react at speech speed while being long enough that one stray sample cannot trigger a cut. Both settings are stated explicitly rather than left to the engine's defaults, so a future engine update cannot quietly change what the thresholds mean.

Can the original encoding be kept instead of an MP3?

No. Cutting audio out rewrites the sample stream, so there is no way to copy the original encoding through, and everything is re-encoded at 192 kbps whatever went in. Embedded cover art is dropped rather than carried across, since a still image has no place in a filter chain that is rearranging samples.

Should I run this before or after other cleanup?

After denoising and before levelling. Denoising lowers the noise floor, which makes the silence threshold far more effective. Levelling afterwards means the loudness is set on the finished edit rather than on a version that still has dead air in it.

Related tools