wavesurfer.js

Frameworks & Libraries

Audio waveform visualisation and player built on Web Audio.

Latest 7.12.11 · by katspaughWebsitekatspaugh/wavesurfer.js

Release activity

Release activity — 10 releases across 9 days since Mar 12, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Mar 12, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026
MondayNo releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 20262 releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026
TuesdayNo releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026
WednesdayNo releases on May 6, 20261 release on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026
ThursdayNo releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 20261 release on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026
FridayNo releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 20261 release on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 20261 release on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026
SaturdayNo releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026

10 releases since Mar 12, 2026, busiest day 2

Changelog

8.0.0-beta.2

Pre-release
Changed 3
  • Refactor plugin API to functional style with scope-owned teardown, porting six plugins to the new system
  • Implement declarative load and viewport handling with per-load Scope, loadPhase/visibleRange signals, pure canvas plan, and FrameScheduler
  • Unify Spectrogram implementation and enforce Scope lint
Fixed 1
  • Fix memory leaks across core and plugins with Scope and signal foundation improvements

From wavesurfer.js

  • 8.0.0-beta.2
  • chore: remove internal planning artifacts (docs/ is gitignored)
  • refactor: Post-refactor cleanup (#4346)
  • refactor: Spectrogram unification + GC leak harness + Scope lint enforcement (#4344)
  • docs: add digital ocean referral link
  • refactor: definePlugin: functional plugin API with scope-owned teardown; six plugins ported (#4342)
  • Declarative load & viewport: per-load Scope, loadPhase/visibleRange signals, pure canvas plan, FrameScheduler (#4341)
  • fix: Leak fixes across core and plugins + Scope/signal foundation (#4340)

npm

View originalPermalink
How 8.0.0-beta.2 went

7.12.11

Latest
Added 1
  • Add Praat-style display pre-emphasis and automatic gain to Spectrogram
Changed 1
  • Make the main-thread FFT fallback opt-out and re-create failed workers in Spectrogram
Fixed 4
  • Avoid closing a closed AudioContext in Decoder
  • Prune per-region subscriptions from plugin array on remove in regions
  • Prevent TypeError when Spectrogram plugin is destroyed during active render
  • Prevent dB-to-color mapping wraparound in Spectrogram high-energy regions

From wavesurfer.js

  • 7.12.11
  • fix(Decoder): avoid closing a closed AudioContext (#4336) by @mjlbach
  • fix(regions): prune per-region subscriptions from plugin array on remove (#4339) by @jens-lilt
  • fix(Spectrogram): prevent TypeError when plugin is destroyed during active render (#4335) by @Copilot
  • docs: clarify left/right default plotting for stereo audio (#4338) by @Copilot
  • fix(Spectrogram): prevent dB-to-color mapping wraparound in high-energy regions (#4333) by @Copilot
  • fix(Spectrogram): make the main-thread FFT fallback opt-out and re-create failed workers (#4331) by @koyukan
  • feat(Spectrogram): Praat-style display pre-emphasis and automatic gain (#4330) by @koyukan

npm

View originalPermalink
How 7.12.11 went

7.12.10

Added 1
  • Add fftSize option to decouple FFT size from the analysis window in Spectrogram
Fixed 2
  • Reject pending worker promises when the worker errors in Spectrogram
  • Use the same window alpha defaults in the worker and main thread in Spectrogram

From wavesurfer.js

  • 7.12.10
  • feat(Spectrogram): decouple FFT size from the analysis window (fftSize option) (#4329) by @koyukan
  • fix(Spectrogram): reject pending worker promises when the worker errors (#4328) by @koyukan
  • fix(Spectrogram): use the same window alpha defaults in the worker and main thread (#4327) by @koyukan

npm

View originalPermalink
How 7.12.10 went

7.12.9

Changed 1
  • Make the web worker FFT timeout configurable in Spectrogram
Fixed 1
  • Close ImageBitmap when its canvas is removed before it resolves in Spectrogram

From wavesurfer.js

  • 7.12.9
  • fix(Spectrogram): close ImageBitmap when its canvas is removed before it resolves (#4324) by @koyukan
  • fix(Spectrogram): make the web worker FFT timeout configurable (#4326) by @koyukan
  • ci: publish to npm before creating the tag and release

npm

View originalPermalink
How 7.12.9 went

7.12.8

Changed 1
  • Update devDependencies to latest compatible versions
Fixed 7
  • Accept container elements from other realms (iframes)
  • Prevent multi-touch from permanently blocking drag interactions
  • Place region labels in the first free row
  • Stop playback exactly at the requested stop position
  • Correct typo in blobMimeType handling
  • Keep the hover line hidden after pointer leave
  • Comprehensive bug fixes and memory leak fixes from holistic audit

From wavesurfer.js

  • 7.12.8
  • fix: accept container elements from other realms (iframes) (#4319)
  • fix: prevent multi-touch from permanently blocking drag interactions (#4320)
  • fix(Regions): place labels in the first free row (#4322) by @Copilot
  • fix: stop playback exactly at the requested stop position (#4318)
  • fix: correct 'overriden' typo in blobMimeType handling (#4317)
  • fix(hover): keep the hover line hidden after pointer leave (#4316) by @Copilot
  • fix: comprehensive bug fixes and memory leak fixes from holistic audit (#4314)
  • chore: update devDependencies to latest compatible versions (#4313)
  • Update docs links to the new /docs guide and /docs/api reference
  • chore: cypress chromium

npm

View originalPermalink
How 7.12.8 went

7.12.7

Fixed 4
  • Hover plugin now uses WaveSurfer duration for hover time formatting
  • zoom.js example updated to use hideScrollbar
  • WebAudio plugin sets iOS audio session to playback for silent mode
  • WebAudio plugin fires finish event consistently on playback end

From wavesurfer.js

  • 7.12.7
  • fix(Hover): use WaveSurfer duration for hover time formatting (#4309) by @Copilot
  • fix: zoom.js example to use hideScrollbar (#4307) by @87113
  • fix(WebAudio): set iOS audio session to playback for silent mode (#4306) by @Copilot
  • fix(webaudio): fire finish event consistently on playback end (#4304) by @Copilot

npm

View originalPermalink
How 7.12.7 went

7.12.6

Fixed 3
  • Spectrogram plugin now respects user-provided container option
  • Renderer caches container inline padding to avoid reading CSS values on each render
  • Hover plugin resets the transform on the onPointerLeave event

From wavesurfer.js

  • Bump version from 7.12.5 to 7.12.6
  • fix(Spectrogram): respect user-provided container option (#4302) by @Copilot
  • fix(Renderer): cache container inline padding to avoid reading CSS values on each render (#4298) by @Copilot
  • fix(Hover plugin): reset the transform on the onPointerLeave​ event (#4237) (3767) by @xiaoliyooo

npm

View originalPermalink
How 7.12.6 went

7.12.5

Fixed 3
  • clamp overlay to the visible range during zoom-out in Minimap
  • correct playbackRate test expectation and remove beads config
  • restore zoom-aware smooth auto-centering in Renderer

From wavesurfer.js

  • 7.12.5
  • fix(Minimap): clamp overlay to the visible range during zoom-out (#4296) by @Copilot
  • fix(test): correct playbackRate test expectation, remove beads config
  • fix(Renderer): restore zoom-aware smooth auto-centering (#4294) by @Copilot

npm

View originalPermalink
How 7.12.5 went

7.12.3

Fixed 2
  • re-render lazy regions after setOptions()
  • preserve high-precision notch positioning in timeline

From wavesurfer.js

  • 7.12.3
  • fix(regions): re-render lazy regions after setOptions() (#4291) by @Copilot
  • fix(timeline): preserve high-precision notch positioning (#4290) by @Copilot

npm

View originalPermalink
How 7.12.3 went
View all

Discussion

If you publish wavesurfer.js, you can claim this product by proving you administer its repository.