A clip maker for the recordings of Spaces, podcasts and voice notes. Drag over the moment worth sharing, and it becomes a video for X, TikTok, Reels or Shorts with your picture and name, bars that move with the voice, and captions that light up word by word. Time the captions by tapping along, pick a shape and colours, and export an MP4, all in the browser with nothing uploaded. Apps like this charge a monthly plan for clips without a watermark; this one is MIT licensed, plain TypeScript, with no dependencies.
Install
- Clone
git clone https://github.com/drkxbt/audiogram- Install
npm install github:drkxbt/audiogram- Use
audiogram(element, { audio, captions, handle })
Features
- Drag over the moment on the waveform and play it back with the picture following the voice
- Captions that light up word by word, timed by tapping along or from a pasted transcript, SRT or WebVTT
- Square, 4:5 or 16:9, bars, wave or pulse, five colour themes, your picture, name and handle
- An MP4 made faster than real time with WebCodecs and a muxer in the package
- Nothing uploaded and no watermark; runs under a strict Content Security Policy
How it works
- The recording is decoded at 48 kHz and mixed to one channel; the bars are an FFT of the 40 milliseconds around each frame, gathered into bands spaced the way ears hear pitch.
- Without word timings, words share a line's time by how long each takes to say; a tap moves a line's start and the end of the one before, and stretches their words to fit.
- Each frame is drawn to a canvas, encoded as H.264 through WebCodecs, and the sound as AAC, faster than the clip plays.
- The MP4 writer is part of the package: the index goes before the media so the video starts playing early, with sound and picture interleaved by time.
- Where WebCodecs can't make an MP4, the clip plays once into a MediaRecorder instead.
Where it shows here
Only in its own demo for now, on a made-up exchange read by two computer voices.
Screenshots
Stack
- TypeScript
- Canvas 2D
- WebCodecs
- Web Audio
- Node test runner
Run it locally
git clone https://github.com/drkxbt/audiogramcd audiogramnpm installnpm run demo


