A JavaScript library that records audio from Web Audio API nodes and encodes to WAV, Ogg Vorbis, or MP3 files.
WebAudioRecorder.js is a client-side JavaScript library that captures audio from Web Audio API sources and encodes it into downloadable audio files directly in the browser. It solves the problem of needing server-side processing for audio recording by providing efficient, in-browser encoding to WAV, Ogg Vorbis, and MP3 formats. The library uses Web Workers to handle encoding tasks, ensuring the main thread remains responsive for a smooth user experience.
Frontend developers and web application creators who need to implement client-side audio recording features, such as for voice memos, podcast recording tools, or audio annotation applications. It is also suitable for projects requiring browser-based audio processing without server dependencies.
Developers choose WebAudioRecorder.js for its multi-format support (WAV, Ogg Vorbis, MP3) and efficient Web Worker-based encoding that prevents UI blocking. Its configurable options, like bit rate, quality, and encoding modes, offer flexibility not always found in simpler alternatives.
.wav/.ogg/.mp3 recorder with Web Audio API
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports WAV, Ogg Vorbis, and MP3 formats, providing flexibility for different use cases as highlighted in the key features.
Uses separate worker threads for encoding, keeping the main thread responsive and preventing UI blocking, which is central to the library's philosophy.
Offers adjustable parameters like bit rate, quality, and encoding modes, with options for real-time or post-recording encoding, detailed in the setOptions method.
Provides event-driven API with handlers for loading, progress, completion, and errors, enabling precise control over the recording lifecycle.
MP3 encoding is fixed to 2-channel stereo only, as specified in the constructor, restricting mono recordings without using alternative formats.
Requires multiple worker and memory files (e.g., .mem files) to be correctly deployed, adding to setup and maintenance overhead.
The library is purely functional, so developers must create their own user interface for recording controls and status displays.