Oncea file clinic

Extract audio

Pull AAC or MP3 out of a small video or audio container, in this tab. No account. The download is just a file. Already have a voice note and just need another format? Convert audio.

Before you start. About 80 MB is the ceiling. Desktop Chrome or Firefox is the setup that works. iPhone and large files may fail — the work stays in this tab, and the browser can run out of memory.

Drop a video or audio container on the zone, or click it.

How to extract audio on this page

  1. Read the limit note above the zone first. About 80 MB. Desktop Chrome or Firefox. iPhone and large files may fail.
  2. Drop a video or an audio container on the zone, or click it and pick the file. mp4, mov, webm, m4v, m4a, mp3, ogg, and wav are the ones we try.
  3. Choose AAC or MP3. AAC (an .m4a) is the default because the wasm encoder we ship is most reliable there.
  4. Click Extract audio. The first run in a session loads the same ffmpeg core as Compress video — about 25 MB from this origin — and keeps it for the tab.
  5. If the file has a subtitle stream, Extract SRT is a small extra action on the same encoder. No stream means a clear error, not a fake file.
  6. Download the new file. There is no watermark and no signup.

Already have an audio file and just need another format — a WhatsApp voice note to MP3, WAV to AAC — that is Convert audio. This page pulls audio out of a video.

What this page actually does

The browser loads ffmpeg compiled to WebAssembly, the same stack as the compress verb. Your file is written into that virtual filesystem. We ask ffmpeg for the first audio stream only (-vn, no video), encode it, and read the bytes back as a Blob. The file is not uploaded to Once. There is no queue and no render farm. If the tab dies, the job dies with it.

Extract SRT uses the same wasm build. It asks ffmpeg for the first subtitle stream (0:s:0) and writes .srt when that stream exists and can be converted. Bitmap subs and empty maps fail on the page. This is not a new verb and not a captioner.

AAC is encoded with the built-in encoder at 192 kbps and wrapped as.m4a. MP3 is encoded with libmp3lame at 192 kbps when that encoder is in the wasm build. If the first pass fails, we retry with a simpler command. The point is a voice or soundtrack you can send, not a mastering suite.

Why the limits are loud

ffmpeg.wasm is a real encoder inside a browser memory cap. A two-hour lecture will not finish. A 4K camera dump will not finish. About 80 MB is the ceiling we advertise because past that the tab tends to crash before it helps you. Forty megabytes can already be painful. We warn, we do not pretend.

iPhone Safari is a bad host for this. Shared memory, wasm, and large ArrayBuffers are where mobile browsers cut you off. Use a laptop. If you are on a phone, AirDrop the clip to a computer and run this page there, or use the Photos / Files export on a machine you own.

SharedArrayBuffer needs Cross-Origin-Opener-Policy same-origin and Cross-Origin-Embedder-Policy require-corp. Next.js sets both in next.config.mjs. This version still loads the single-thread core so a missing header does not hard-fail the page. If isolation is off, the tool says so. Extract is just slower.

What you should expect

You get the soundtrack, not the picture. A screen recording with a voiceover becomes a small m4a. A WhatsApp video of someone talking becomes something you can drop on Transcribe or send as audio. Video is discarded on purpose.

192 kbps is speech-and-podcast quality, not an archive of a studio master. If the source was already a 64 kbps voice note, the output may be larger than the input. That is fine — we are not chasing the smallest possible file, we are making a normal audio file from a container that was awkward to open.

The first click in a session pays for the wasm core. After that, another short clip is just encode time. Leave the tab in the foreground. Background tabs get throttled and look frozen.

What this is not

This is not a format converter for a file that is already audio — that is /convert-audio. It is not a YouTube downloader, not a stem splitter, and not a ringtone factory. We will not add a login to unlock WAV. If you need a folder of files, install ffmpeg on a machine you control: ffmpeg -i in.mp4 -vn -c:a aac out.m4a. Once is for the one clip whose audio you need in the next minute.

FAQ

Is the file uploaded?

No. Local verb. The privacy page is the same sentence in writing. The encoder files are served from this origin after install, not used as a place to park your clip.

Which formats can I drop?

Video containers (mp4, mov, webm, m4v) and common audio containers (m4a, mp3, ogg, wav). The decoder inside ffmpeg.wasm is not a full desktop build. An odd codec in a .mkv can fail. If it fails, the error stays on this page.

Can I keep the original audio without re-encoding?

Not as a separate toggle in this version. We encode AAC or MP3 at 192 kbps so the download is a file other apps will open. If you need a bit-exact copy, use desktop ffmpeg with -c:a copy.

Why is it so slow?

Because it is ffmpeg in a sandbox, often on one thread, without hardware encode. Native ffmpeg on the same machine will always win.

Do you keep a copy or watermark it?

No copy, no watermark, no paywall on the result. A finished job only increments a localStorage counter on this device, key once:jobs.

The tab crashed. Did you get the file?

No. A crash is a crash. Try a shorter cut or a desktop with more RAM. The 80 MB cap exists so we say no before the browser does.