How to m4a to mp3 converter — zero upload, browser-based
- Step 1Open the converter (and go offline if you like) — Load the page once. After the FFmpeg WebAssembly engine has loaded, you can disconnect from the internet — the conversion runs entirely on your machine.
- Step 2Drop your M4A file — Drag the
.m4a(or.aac) onto the dropzone. It's read locally from disk; no upload request carries the audio anywhere. - Step 3Pick a bitrate — Choose from the Bitrate dropdown — the only control. 320 kbps for music, 64–128 for voice. Sample rate and channels pass through unchanged.
- Step 4Convert on your own CPU — FFmpeg WebAssembly decodes the AAC and re-encodes to MP3 in the tab, copying tags and re-attaching cover art. No server is involved at any point.
- Step 5Download — the file was never anywhere else — Save the MP3. There's no temporary server copy to delete and no link to expire, because the audio never left your device.
- Step 6Verify in DevTools if you need proof — Open your browser's Network tab before converting: you'll see the WASM engine load, but no request that uploads your audio. The file bytes stay client-side. The same is true of sibling tools like the silence stripper and the audio trimmer if you need to edit privately first.
Per-file limits by plan
Limits come straight from the audio tier table. Note the per-file DURATION cap is separate from the file-size cap — a long-but-small recording can hit the minutes limit before the megabytes limit. M4A to MP3 is on the Free tier.
| Plan | Max file size | Max duration / file | Files per run |
|---|---|---|---|
| Free | 50 MB | 30 minutes | 1 |
| Pro | 200 MB | 120 minutes | 10 |
| Pro + Media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | 100 |
Bitrate options in the picker
The Bitrate dropdown is the only control on this tool. MP3 is encoded with LAME (libmp3lame) at the constant bitrate (CBR) you choose; the default is 192 kbps. There is no sample-rate or channel control here — the source's sample rate and channel layout pass through unchanged.
| Picker value | FFmpeg flag | Typical use | Approx. size / minute (stereo) |
|---|---|---|---|
| 320 kbps · best | -b:a 320k | Music, mastered exports, the highest MP3 quality available here | ~2.4 MB |
| 256 kbps | -b:a 256k | Music and interviews where you want headroom but a smaller file than 320 | ~1.9 MB |
| 192 kbps · default | -b:a 192k | All-round default — transparent for most spoken-word and casual music | ~1.4 MB |
| 128 kbps · podcast | -b:a 128k | Podcasts and talk content where file size matters more than music fidelity | ~0.94 MB |
| 64 kbps · voice | -b:a 64k | Mono voice notes, dictation, transcription source where size is critical | ~0.47 MB |
What is preserved vs. changed in the transcode
The converter runs -c:a libmp3lame -b:a <bitrate> -map_metadata 0 -map 0:a -map 0:v? -c:v copy -disposition:v:0 attached_pic -id3v2_version 3. Tags and embedded artwork are carried across; the audio itself is re-encoded.
| Property | Behaviour | Why |
|---|---|---|
| Title / artist / album / year tags | Copied to the MP3 (ID3v2.3) | -map_metadata 0 carries container metadata; -id3v2_version 3 writes the most widely-read ID3 flavour |
| Embedded cover art | Re-attached, not re-encoded | -map 0:v? picks up the attached picture and -c:v copy copies it byte-for-byte, then marks it attached_pic |
| Sample rate (e.g. 44.1 / 48 kHz) | Passed through unchanged | No -ar flag is set for this tool |
| Channels (mono / stereo) | Passed through unchanged | No -ac flag is set for this tool |
| Audio fidelity | Re-encoded (lossy → lossy) | AAC is decoded then LAME re-encodes to MP3 — a second lossy generation |
Cookbook
Privacy-first conversions. The point of each is that the audio is processed locally — the FFmpeg call the engine runs is shown so you can see exactly what happens on-device.
Confidential interview converted offline
A recorded source interview that must not touch a third-party server. Load the page, go offline, convert. The audio is read off disk and never transmitted.
Input: source-interview.m4a (confidential) Network: disconnected after engine load Picker: 64 kbps · voice ffmpeg -i source-interview.m4a -c:a libmp3lame -b:a 64k ... \ source-interview.mp3 Result: MP3 produced with zero network activity for the audio.
Legal statement — no server copy, no retention
An upload-based converter would keep a temporary copy under its retention policy. Here there is no server copy, so there's nothing to delete and nothing to subpoena from a third party.
Input: client-statement.m4a Processing: 100% in-browser (FFmpeg WASM) Server copy: none — nothing uploaded Picker: 128 kbps · podcast Output: client-statement.mp3, stored only where you save it.
Unreleased track shared as MP3 without leaking
A mixdown bounced to M4A that you want to send as MP3 to a collaborator, without it sitting on a converter's servers first.
Input: rough-mix.m4a (unreleased)
Picker: 320 kbps · best (music — minimise transcode loss)
Output: rough-mix.mp3, generated locally; you control where the
only copy goes.Proving nothing uploads (DevTools check)
For audit or peace of mind, watch the Network panel. The engine assets load once; your audio bytes never appear in an upload request.
1. Open DevTools → Network, clear it. 2. Drop the M4A, convert. 3. Observe: ffmpeg-core / worker requests on first load only; NO request whose payload is your audio file. 4. Download the MP3 — produced entirely client-side.
Large file with no upload wait
Because there's no upload, a big file isn't bottlenecked by your connection — only by your plan's local size limit and your CPU.
Input: long-session.m4a (180 MB, Pro tier) Picker: 192 kbps · default No upload step — the 180 MB is read from disk and converted in place. Time depends on CPU, not bandwidth.
Edge cases and what actually happens
Page closed mid-conversion
Stays localIf you close the tab while converting, the in-progress work is discarded in memory — there's no partial file left on a server, because nothing was ever sent. Just reopen and convert again.
Offline before the engine has loaded
Engine load neededThe FFmpeg WebAssembly core has to download once. If you go offline before it loads, the tool can't start. Load the page online first, then disconnect — after that, conversions run with no network.
File larger than the plan's local limit
RejectedThere's no upload, but there is a local size cap: 50 MB on Free, 200 MB on Pro, 100 GB on Pro + Media / Developer. A file over your plan's cap is rejected client-side before processing.
DRM-protected M4A (.m4p)
Fails — DRMLocal processing doesn't change the fact that FairPlay-encrypted files can't be decoded by FFmpeg. DRM-free M4A converts; encrypted purchases and Apple Music downloads don't, server or not.
Very large file is slow on a weak CPU
ExpectedWithout an upload, speed is bound by your processor. WebAssembly uses multi-threading and SIMD where the browser supports them, but a 100 MB file on a low-power laptop still takes a while — there's no server doing the work.
Audio still appears in browser memory
By designThe file is loaded into the tab's memory to be processed — that's local RAM, not a server. Closing the tab releases it. 'No upload' means no transmission, not that the bytes are never read into memory to convert them.
Tags or cover art you'd rather strip for privacy
Handled separatelyTags and art are copied across by default. If a file's metadata is itself sensitive (a real name in the title, say), edit or clear it with the ID3 tag editor after converting — also entirely local.
Multiple confidential files at once on Free
LimitedFree converts one file per run. For a batch of sensitive recordings, a paid plan (10 or 100 per run) keeps them all local while doing them together.
Frequently asked questions
Does this converter actually avoid uploading my file?
Yes. It runs FFmpeg as WebAssembly inside your browser, so the M4A is decoded and re-encoded on your own CPU. No upload request carries the audio, and there's no server-side copy.
How can I verify nothing is uploaded?
Open your browser's DevTools → Network panel before converting. You'll see the engine assets load on first visit, but no request whose payload is your audio file. You can also disconnect the network after the page loads and still convert.
Does it work offline?
Yes, once the FFmpeg engine has loaded. Open the page online the first time; after that you can go offline and conversions still run, because the work happens locally.
Is there a temporary copy on a server I need to delete?
No. Upload-based converters keep a temporary copy under their retention policy; this one never sends the file, so there's nothing on a server to delete or that could be breached.
Is it safe for confidential interviews or legal statements?
It's designed for exactly that. The audio stays on your device, so there's no third party holding a copy. The metadata is also local — strip sensitive tags with the ID3 editor if needed.
Do I need an account?
No. There's no sign-in and nothing emailed. Drop the file, pick a bitrate, download.
Is the quality the same as a server-based converter?
Yes — it uses LAME for the MP3 at your chosen bitrate and preserves tags and cover art, identical output to any other FFmpeg-based converter, just done locally.
Is there an upload size limit?
There's no upload at all, but there is a local size cap: 50 MB on Free, 200 MB on Pro, 100 GB on the media/developer plans. Files over your plan's cap are rejected before processing.
Will a big file be slow because there's no server?
It depends on your CPU rather than your connection. WebAssembly uses multi-threading and SIMD when available, but very large files on weak hardware take longer because your machine does the encoding.
Can it convert DRM-protected files privately?
No — local or not, FairPlay-encrypted files (.m4p, Apple Music downloads) can't be decoded by FFmpeg. Only DRM-free M4A/AAC converts.
Does the audio touch the network in any form?
No. Only the engine code is fetched (once). Your audio bytes are never part of a network request. Closing the tab frees the in-memory copy.
Can I convert several private files at once?
Free does one per run; Pro and higher do 10 or 100 per run — all still processed locally with no upload.
Privacy first
Every JAD Audio tool runs entirely in your browser via FFmpeg (WebAssembly) and RNNoise. Your audio files never leave your device — verified by zero outbound network requests during processing.