Audio and video · Edition No. 20 · 14 Sep 2026

bbc/audiowaveform

Reads MP3, WAV, FLAC, Ogg Vorbis and Opus and writes either a PNG image of the waveform or the peak data behind it, from the command line.

← Audio and videoRead the whole edition →
12

bbc/audiowaveform

💎 hidden gem

2.2k stars · GPL-3.0 · 1.10.3 (2026-08-20), read from /releases/latest; the bare date '20 Aug' is in the past, so it is 2026 · Track this in Scout

Reads MP3, WAV, FLAC, Ogg Vorbis and Opus and writes either a PNG image of the waveform or the peak data behind it, from the command line.

Repo detailsthe review · specs · pros & cons · install

What it is

A command-line program written in C++ that reads MP3, WAV, FLAC, Ogg Vorbis and Opus and writes either a PNG image of the waveform or a data file of the peaks. It was built at the BBC to feed their browser component peaks.js.What it is good for. Anyone who publishes audio or video and wants to see the shape of it before editing. The problem it removes is scrubbing back and forth to find where you stopped talking. Edition 13 gave Gennady auto-editor (#3), which cuts silence out automatically; this is the other approach, where you look at the silence and decide by eye. It is also the piece you need if you ever want a waveform drawn on your own website under a recording.

Stars2.2k
LicenceGPL-3.0
Latest1.10.3 (2026-08-20), read from /releases/latest; the bare date '20 Aug' is in the past, so it is 2026
Good
  • Very fast, because it does one job in C++ and nothing else.
  • It writes both a picture and the raw numbers, so you can use its output in a web page rather than only looking at it.
  • It reads the common sound formats directly, with no conversion step first.
Watch for
  • GPL-3.0, so you cannot bundle it inside a closed product.
  • Ongoing development has moved to Codeberg, at codeberg.org/chrisn/audiowaveform. Releases still appear on GitHub — 1.10.3 landed on 20 August 2026 — but the GitHub page is a mirror.
  • It is a building block, not a program with a window. You get a file, and something else has to display it.
Similar repositories
  • bbc/peaks.js

    Solves the other half: it is the browser component that draws and lets you click on the data this program produces, by the same maintainer, and it has also moved to Codeberg.

    Track this in Scout
  • katspaugh/wavesurfer.js

    Draws the waveform in the browser from the audio file itself, so it needs no pre-computed data and does more work on the visitor's machine.

    Track this in Scout
  • naomiaro/waveform-playlist

    Goes further than drawing and gives a multi-track editor in the browser with fades, cues and export, which is a whole application rather than a building block.

    Track this in Scout
Install
# Debian or Ubuntu
sudo apt install audiowaveform
# macOS
brew tap bbc/audiowaveform
brew install audiowaveform
# Make a picture of an episode's sound:
audiowaveform -i episode.mp3 -o episode.png -w 1800 -h 280
# Or get the numbers, for drawing on a web page later:
audiowaveform -i episode.mp3 -o episode.json -b 8
# Straight from a video, using ffmpeg to pull the sound out first:
ffmpeg -i episode.mp4 -f wav - | audiowaveform --input-format wav -o episode.png
Screenshots
bbc/audiowaveform: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.