goldfire/howler.js
35.1
Weak · 1 October 2026
4k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is Howler.js, a JavaScript audio library that manages playback across Web Audio API and HTML5 Audio backends. It provides core capabilities for playing, pausing, seeking, and controlling volume of audio files, including support for modern codecs and live streaming. The library also features a spatial audio plugin for 3D positioning and stereo panning, along with utilities for audio sprites and playlist management.
Features
Add spatial audio plugin for stereo and 3D positioning
Introduces the new spatial audio plugin (howler.spatial.js) which adds support for stereo panning and 3D spatial audio on Web Audio-capable browsers. This plugin extends Howler with global methods to set the listener's position and orientation, and per-sound methods to control stereo balance, 3D position, and spatial attributes like cone angles and distance models, enabling immersive audio experiences.
src/plugins · high confidence
New 3D Spatial Audio demo example
Added a new interactive demo in the examples/3d directory that showcases howler.js's Spatial Plugin for immersive audio in 3D environments. The example includes a minimal ray-casting game engine with WASD/arrow key controls, demonstrating spatial sound effects driven by a single Howl instance and sprite, along with full-screen responsive styling for desktop and mobile.
examples/3d · high confidence
New 3D spatial audio demo with raycasting visuals
Added a new interactive 3D demo in the examples/3d/js directory that combines a raycasting engine with Howler.js spatial audio. The implementation includes a camera for rendering a skybox, walls, and a player hand, a map system for ray-casting and collision detection, and a player controller supporting both keyboard (WASD/arrows) and touch inputs. Audio is handled by a Sound class that manages background rain and random thunder, while placing speakers in the 3D grid that emit music with HRTF panning for realistic spatial positioning.
examples/3d/js · high confidence
New audio player demo with playlist and global volume control
A new audio player example has been added to the \examples/player\ directory, demonstrating how to build a full-featured player using howler.js. This demo includes playlist support with next/previous track navigation, real-time playback progress, and a SiriWave.js-based visualizer. A key behavioral detail is that the volume slider controls the global audio volume (affecting all Howl instances) rather than just the current track.
examples/player · high confidence
New audio sprite visualization demo
An interactive example has been added to the examples/sprite directory that visualizes how audio sprites work within howler.js. The demo displays a waveform with clickable sprite regions; clicking a region plays the corresponding audio segment and shows real-time playback progress, supporting overlapping playback of multiple sprites. The interface is fully responsive and includes mobile-specific styling adjustments.
examples/sprite · high confidence
New live streaming radio player demo
A new interactive radio player example has been added to the examples/radio directory, demonstrating how to use howler.js to stream live audio. The demo features a responsive, full-screen UI with five pre-configured stations (including BBC Radio 1, CNN, and others via TuneIn) that users can switch between. It highlights key capabilities for live streaming, such as using HTML5 Audio for playback, managing multiple stream instances, and providing visual feedback with 'LIVE' indicators and playing animations.
examples/radio · high confidence
Behavioural changes
Howler.js updated to v2.2.4
The core audio library has been updated to version 2.2.4. This release includes numerous bug fixes and behavioral improvements, such as ensuring the Howler context exists before destruction during unload, fixing edge cases where pause is called after seek before loading, and correctly accounting for global volume in fades. It also introduces a default setting for noAudio, disables WebM on older Safari versions, and adds support for Dolby Audio and FLAC formats.
dist, src · high confidence
Major version 2.0 release with rewritten architecture and API changes
Howler.js has been rewritten from the ground up, introducing a new object hierarchy (Howler, Howl, Sound) and a plugin system for spatial audio. This release includes several breaking API changes: the \urls\ option is now \src\, the \pos\ method is renamed to \seek\, and the \buffer\ option is replaced by \html5\ to force HTML5 Audio usage. The library now defaults to Web Audio API with HTML5 Audio fallback, supports modern codecs like WebM and FLAC, and adds features such as 3D spatial sound, global stop, and custom XHR headers.
(repo-wide) · high confidence
Test coverage
2 commits adding/updating tests in tests/audio; Added CSS styles for the test suite index page; Added audio playback and spatial positioning test suites; Added test runner pages for core and spatial audio tests.
Dependencies
Initial npm package release for Howler.js v2.2.4
The project is now available as an npm package (howler v2.2.4), enabling installation via standard package managers. The package includes the core audio library and the spatial plugin, with build scripts configured to generate minified distributions using uglify-js.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 34 → 35 (+0.7)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 23 → 22 (-0.7)
- Architecture 100 → 100 (+0.0)
- Maturity 43 → 43 (+0.0)
- Readiness 21 → 24 (+2.9)
- Security 100 → 98 (-1.7)
Resolved (2)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (10)
- FileTooLong: src/howler.core.js (src/howler.core.js)
- Medium: security finding (details withheld)
- Scanner failed to run — not a clean result
- howler.core.setupAudioContext (cognitive 18) (src/howler.core.js)
- howler.core.setupAudioContext (cyclomatic 18) (src/howler.core.js)
- howler.spatial.Howl.orientation (cognitive 35) (src/plugins/howler.spatial.js)
- howler.spatial.Howl.pannerAttr (cognitive 28) (src/plugins/howler.spatial.js)
- howler.spatial.Howl.pannerAttr (cyclomatic 30) (src/plugins/howler.spatial.js)
- howler.spatial.Howl.pos (cognitive 29) (src/plugins/howler.spatial.js)
- howler.spatial.Howl.stereo (cognitive 37) (src/plugins/howler.spatial.js)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
goldfire/howler.js was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1d3053576a860e9854645493ad6c4a72c6cc6e45 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.