architecture

how audoRa works

audoRa converts video to MP3 entirely inside your browser using WebAssembly. no data ever leaves your device.

architecture

audoRa uses ffmpeg.wasm, a port of ffmpeg compiled to WebAssembly, to transcode media files directly in your browser. the WASM binary is loaded from a CDN on first use and cached by the browser. after that, conversion works offline.

the conversion pipeline works as follows:

  1. you select a file or provide a direct URL to a media file.
  2. for uploads: the file is read directly from disk using the File API.
  3. for URLs: the browser fetches the resource. CORS must allow the request.
  4. the media data is written to ffmpeg's virtual in-memory filesystem.
  5. ffmpeg.wasm runs the transcoding with your chosen settings.
  6. the output MP3 is read back and offered as a download via a Blob URL.

limitations

performance depends on your device

webAssembly runs at near-native speed, but converting large files is CPU-intensive. a 500 MB file may take several minutes on a mobile device.

link mode requires CORS

browsers block cross-origin requests unless the server sends the right headers. most streaming platforms block this. use upload mode for reliable results.

memory usage

both the source and output file are held in memory during conversion. very large files may exhaust available RAM, especially on mobile.

SharedArrayBuffer requirement

ffmpeg.wasm requires SharedArrayBuffer, which requires the page to be cross-origin isolated (COOP/COEP headers). these are set in next.config.ts.

tech stack

Next.js 15

app router, TypeScript

Tailwind CSS v4

styling

ffmpeg.wasm 0.12

audio transcoding

@ffmpeg/util

file helpers

Vitest

unit tests

Vercel

hosting

open source

audoRa is open source. view the code, report issues, or contribute on GitHub.

view on GitHub