How to convert video audio to opus for discord voice messages
- Step 1Open the extractor — Load audio-track-extractor. FFmpeg.wasm runs in your browser; the video is never uploaded.
- Step 2Drop your video clip — Add one MP4, MOV, MKV, WebM, or AVI. Free tier accepts up to 1 GB. The extractor takes the default audio track from whatever you drop in.
- Step 3Choose Opus in the Format dropdown — Set Format to Opus. This runs
-vn -c:a libopus -b:a 128k— a re-encode to 128 kbps Opus. There's no bitrate control; 128k is the fixed setting, which is plenty for speech. - Step 4Run the extraction — JAD encodes the full default audio track to an
.opusfile locally. Because libopus runs in WebAssembly, encoding a long source takes longer than a short one — but short voice-message clips are quick. - Step 5Trim down to the snippet — This tool extracts the whole track, not a snippet. Cut the Opus down to the moment you want before sending — trim the source video first with lossless-trimmer, or trim the audio in any editor.
- Step 6Send it on Discord — Attach the trimmed
.opusclip as your Discord voice message (or drag it into a chat). For other platforms with size caps, see discord-compressor for the video side.
Opus vs the other formats for a voice clip
Opus is the Discord-native choice. Here's how it compares to the other dropdown options for a short speech clip.
| Format | FFmpeg args | Fit for Discord voice | Note |
|---|---|---|---|
| Opus | -c:a libopus -b:a 128k | Native — best fit | The codec Discord voice messages use |
| MP3 | -c:a libmp3lame -b:a 192k | Plays, larger | Universal but less efficient at low bitrate |
| AAC | -c:a copy | Plays, no re-encode | Only if source audio is already AAC |
| WAV | -c:a pcm_s16le | Big, overkill | Lossless but huge for a voice clip |
| FLAC | -c:a flac | Big, overkill | Lossless archive, not a voice message |
What the Opus path does and doesn't do
Set expectations: the extractor outputs Opus but doesn't trim, mix, or let you change the bitrate.
| Capability | Supported? | Detail |
|---|---|---|
| Re-encode to Opus | Yes | libopus at a fixed 128 kbps |
| Choose Opus bitrate | No | Fixed 128k; no slider on the page |
| Trim to a snippet | No | Extracts the full track — trim separately |
| Stream-copy (no re-encode) | No (for Opus) | Only AAC offers -c:a copy |
| Pick a non-default track | No | Default audio stream only |
| Free-tier source size | Up to 1 GB | No duration cap |
Cookbook
Real Opus-extract jobs for Discord. Remember: this extracts the full track at 128 kbps — trimming to the snippet is a separate step.
Funny clip from an MP4 to an Opus voice message
A short MP4 clip with AAC audio. You want the sound as Opus to send on Discord. Opus re-encodes at 128 kbps.
Source: clip.mp4 (20 s, AAC) Format: Opus Command: ffmpeg -i clip.mp4 -vn -c:a libopus -b:a 128k clip.opus Result: clip.opus (20 s, Opus 128 kbps, tiny) If the clip is already short, send as-is.
Grab one line from a long video
The line you want is buried in a 30-minute video. Extract the whole audio to Opus, then trim to the line. (The extractor itself doesn't trim.)
Source: stream.mp4 (30 min) Format: Opus Result: stream.opus (30 min, Opus 128 kbps) Next: trim stream.opus down to the 5-second line in an editor, or trim the source video first with lossless-trimmer.
WebM source (Opus already) re-encoded to Opus
A WebM often already has Opus audio. Choosing Opus here re-encodes it (not a copy) at 128 kbps — fine for a voice message, though a tiny extra generation.
Source: download.webm (Opus audio) Format: Opus Result: download.opus (re-encoded to 128 kbps libopus) There is no Opus stream-copy; AAC is the only -c:a copy path.
Why Opus over MP3 for a voice clip
For a short speech clip, Opus at 128 kbps is smaller than MP3 at 192 kbps and is what Discord expects — a clean win for voice messages.
Same 30-second speech clip: Opus 128 kbps -> ~0.48 MB, Discord-native MP3 192 kbps -> ~0.72 MB, universal but not voice-tuned For Discord voice: choose Opus.
Source has no usable audio
If the clip is silent (no audio track), there's nothing to encode and the job fails — confirm the source has sound first.
Source: silent-screen-capture.mp4 (no audio stream) Format: Opus Result: FAILS — nothing to encode after -vn drops the video Fix: use a source that actually contains audio.
Edge cases and what actually happens
Opus is always a re-encode — never stream-copy
By designSelecting Opus runs libopus at 128 kbps even when the source audio is already Opus (e.g. a WebM). There's no -c:a copy for Opus in this tool, so a WebM→Opus extract is a small extra generation. For a byte-identical copy you'd need an AAC source and the AAC format.
Bitrate is fixed at 128 kbps
By designThere's no bitrate control — Opus output is always 128 kbps. That's well-tuned for speech voice messages. If you need a different bitrate, the tool can't change it; 128k is the only Opus setting.
The tool extracts the full track, not a snippet
By designMany people expect to clip a moment here — but the extractor outputs the entire default audio track. Trim to the snippet you want to send separately: cut the source video with lossless-trimmer first, or trim the resulting Opus in an editor.
Source has no audio
FailsA silent screen recording or muted clip has no audio stream. After -vn removes the video there's nothing for libopus to encode, so FFmpeg exits with an error. Use a source that contains sound.
Only the default audio track is extracted
By designNo track-picker exists. The first/default audio stream is encoded. A multi-track source won't let you choose a non-default stream in the current build.
Discord voice-message length/size limits still apply
Platform limitThe tool produces a valid Opus file, but Discord enforces its own voice-message duration and attachment-size limits. A long extract may exceed them — trim it down. The extractor has no knowledge of Discord's caps; that's on you to respect after exporting.
libopus encoding of a long source is slow in WASM
Slow but supportedEncoding runs in browser WebAssembly, so a 30-minute source takes a while to encode to Opus. Short voice-clip-length sources are fast. If you only need a few seconds, trim the source first so there's less audio to encode.
Original audio timing/offset is preserved
PreservedThe re-encode keeps the source's original timing. For a standalone voice message this rarely matters, but if you later sync the Opus against video, an inherited offset may need a small nudge in your editor.
Frequently asked questions
Why Opus for Discord voice messages?
Discord voice messages are encoded as Opus — it's the codec the platform uses for efficient, clear speech. Extracting to Opus gives you a file in exactly the format Discord expects, smaller than an equivalent MP3 at the same quality.
What bitrate is the Opus output?
A fixed 128 kbps via libopus. There's no bitrate control on the page — 128k is well-suited to speech and voice clips. If you need a different bitrate, this tool doesn't offer it.
Can I trim the clip to just the part I want?
Not in this tool — it extracts the full default audio track. Trim to the snippet separately: cut the source video first with lossless-trimmer, or trim the exported Opus in any audio editor before sending.
My source is WebM with Opus audio — is the extract lossless?
No. Choosing Opus always re-encodes (libopus -b:a 128k), even from an Opus source, so it's a small extra generation. There's no Opus stream-copy. For a voice message that's perfectly fine; for a perfect copy you'd need an AAC source and the AAC format.
Is my video uploaded?
No. The extraction runs in your browser via FFmpeg.wasm. Your clip is processed locally and never sent to a server.
What file extension do I get?
An .opus file named after the source. It contains the 128 kbps Opus audio of the default track. Attach it to Discord as a voice message or drag it into a chat.
Why did the Opus extract fail?
Usually because the source has no audio track — after -vn removes the video there's nothing to encode. Confirm the clip actually contains sound. (Note: Opus output works regardless of source codec, since it always re-encodes.)
Will it fit Discord's voice-message limits?
The tool makes a valid Opus file but doesn't enforce Discord's duration or size caps. A long extract may exceed them — trim it down to a short snippet before sending.
Can I extract a non-default audio track for the voice message?
No — the extractor uses the default (first) audio stream. There's no track-picker, so a multi-track source gives you the primary track only.
Is Opus better than MP3 for a short voice clip?
For speech at typical voice-message length, yes — Opus at 128 kbps is smaller than MP3 at 192 kbps and is the format Discord uses. MP3 is more universal across non-Discord apps but less efficient for voice.
How long a source can I extract from?
There's no duration cap, only file size. Free tier allows sources up to 1 GB. For a voice message you'll trim to a short snippet anyway, so even a long source is fine — though encoding a long file to Opus in the browser takes longer.
I want to send the whole video, not just audio — what then?
This tool is audio-only. To share a video under a size cap, compress it with discord-compressor instead. The Opus path is specifically for turning a clip's sound into a Discord voice message. If your source is already AAC and you'd rather keep it untouched, see the AAC stream-copy guide.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.