Opus → MP3

Opus to MP3 converter

Opus audio is decoded and re-encoded as MP3 so it opens in software that does not understand Opus. Opus is lossy, so the MP3 is a second-generation encode.

MP3

…or drag files and folders here. Add as many as you like — everything is processed on this device.

.caf .mkv .oga .ogg .opus .weba .webm

Opus is what messaging apps send. A WhatsApp voice note arrives as .opus, Discord clips and Telegram voice messages are Opus, and so is most modern web-conferencing audio. Editors like Audacity handle it, but plenty of transcription tools, legal e-discovery systems, DAWs and phone systems still expect MP3.

Opus is nearly always 48 kHz and often mono at a very low bitrate, which changes what a sensible MP3 setting looks like. Sonic Batch shows the source bitrate and channel count for every file so you can pick a target that does not waste space or add damage.

Does this change the audio quality?

Opus at 24–32 kbps mono already sounds like usable speech, a bitrate at which MP3 is barely intelligible. Transcoding needs 3–4× the source bitrate in MP3 to avoid making things audibly worse.

  • Voice notes are usually mono. Leaving Channels on “Same as source” keeps them mono and keeps the file small.
  • Opus decodes at 48 kHz. MP3 supports 48 kHz, so no resampling happens unless you ask for it.
  • Opus can encode audio in wider-than-stereo layouts; anything above stereo is downmixed and reported.

A worked example

Sending a month of voice notes to a transcription service that wants MP3

  1. Export the voice notes from your messaging app to a folder, then drop the folder in.
  2. The Podcast/voice preset is already selected: mono, 96 kbps, loudness-matched to −16 LUFS.
  3. Loudness matching matters here — voice notes recorded at arm’s length and at the chin differ by 15 dB or more.
  4. Download the ZIP with its manifest so you have a record of the settings applied to each file.

Do not try to match Opus bitrate numbers

A 32 kbps Opus voice note converted to a 32 kbps MP3 sounds broken. Use 96 kbps mono for speech, which is roughly 0.7 MB per minute, and 160–192 kbps for anything musical. The MP3 will be several times larger than the Opus source; that is the cost of the compatibility, not a mistake in your settings.

Supported formats, limits and browser notes

Sonic Batch decodes with the browser when it can (faster, no engine download) and falls back to the self-hosted WebAssembly engine when it cannot. Every combination below works in every listed browser; the column only tells you which decoder does the work.

Input formats accepted by this page
InputWhat it isChromeFirefoxSafariiOS
OpusThe best-sounding lossy codec below 128 kbps. Used by WhatsApp, Discord and YouTube.NativeNativePartialPartial
OGGRoyalty-free lossy codec. Standard in game engines, Godot, Unity and Wikimedia.NativeNativeEngineEngine
WebMOpen container used by browser recorders and YouTube downloads. Audio is Opus or Vorbis.NativeNativePartialPartial
CAFApple container used by older iOS Voice Memos. Usually holds ALAC, IMA4 or raw PCM.EngineEnginePartialPartial
Output formats this page can write
OutputEncoderBitrates / depthSample ratesTags
MP3libmp3lame32–320 kbps8–48 kHzYes + artwork
Max per file
400.0 MB
Max per queue
4.00 GB
Max duration
4:00:00
Max archive
1.50 GB

These are enforced ceilings, checked before any decoding starts, not measured maximums — a file over the limit is rejected rather than allowed to exhaust the tab’s memory. Real-world capacity is lower on older phones, which is why the scheduler runs one file at a time on iOS and Safari.

Where your audio goes

Nowhere. Your file is read from disk into this browser tab with the File API, decoded and encoded by code running in that same tab, and handed back to you as a download. It is never transmitted.

That is a structural property of the application, not a policy promise: there are no API routes, no server actions and no third-party processing services in this project, so there is nothing capable of receiving a file. The page’s Content-Security-Policy also restricts connections to this origin, and the automated test suite includes a browser test that fails if any network request during import, preview, conversion or download carries media bytes.

The trade-off, stated plainly:results live in your tab’s memory until you download them. Closing or reloading the page discards them. There is nothing on a server to recover, because nothing was ever put there.

Read the full privacy detail

Troubleshooting

Safari cannot preview the source file.

Safari’s Opus support depends on the container: it handles Opus in CAF and MP4 but not always in Ogg. The engine decodes it regardless, so conversion works even when preview does not.

My WhatsApp file has no extension at all.

Sonic Batch sniffs the container from the file’s magic bytes rather than trusting the extension, so extension-less exports are identified correctly. The detected container is shown per file.

The MP3 sounds muffled compared with the original.

Low-bitrate Opus applies a lowpass around 8–12 kHz; the MP3 encoder then applies its own. Raising the MP3 bitrate to 128 kbps stops the second lowpass from stacking on the first, but it cannot restore what Opus removed.

Frequently asked questions

Why is my MP3 so much bigger than the Opus file?

Opus is roughly three times more efficient than MP3 at speech bitrates. Getting comparable perceived quality out of MP3 genuinely requires more bits. A 1 MB voice note becoming a 3 MB MP3 is normal.

Can I convert MP3 back to Opus?

Yes, on the MP3 to Opus page. Each lossy round trip costs quality, so avoid making it a habit.

Does this work with .ogg files that contain Opus?

Yes. Opus is commonly wrapped in Ogg. Both .opus and .ogg are accepted and the real codec is detected and displayed.

Is the audio sent to a server to be decoded?

No. The Opus decoder is part of the WebAssembly engine served from this site and runs inside your tab.