Works with any backend npm install Zero dependencies

Microphone source via openAudioCapture()

Records from the user's microphone with a live VU meter for input-level feedback. Resolves with an opus-in-webm File on browsers that support it (most), or m4a / ogg as a fallback. Useful for voice notes, comment threads, podcast intake forms, accessibility transcription workflows.

Max 60 seconds
Try it: grant microphone permission, click Record, watch the VU meter ride your input level. Click Stop to add the clip to the queue.
JavaScript API
uploader.openAudioCapture({
 maxDurationSec: 60, // auto-stop
 mimeType: 'audio/webm;codecs=opus', // optional
 fileName: 'voice-note.webm' // optional
}).then(file => uploader.addFile(file));
Output formats by browser
  • Chrome / Edge / Opera / Firefox: audio/webm;codecs=opus - small, high-quality, universally re-decodable.
  • Safari: audio/mp4 (m4a) - server-side transcoding only required for downstream consumers that don't speak m4a.
  • Custom: pass mimeType to override the auto-pick.
Auto-transcribe recipe

Pipe the captured file straight into a transcription endpoint via taskComplete:

uploader.on('taskComplete', (task, result) => {
 fetch('/api/transcribe', {
 method: 'POST',
 body: JSON.stringify({ fileGuid: result.fileGuid }),
 headers: { 'Content-Type': 'application/json' }
 }).then(r => r.json())
 .then(txt => {
 document.getElementById('transcriptOut').textContent = txt.text;
 });
});