How to compress audio to fit whatsapp's 16 mb cap
- Step 1Drop the audio (or video) file onto the tool — Drag any MP3, WAV, FLAC, M4A, OGG, Opus, or video file onto the dropzone above. The tool decodes it locally to read the duration — nothing is transmitted. If you dropped a video, only the audio track is kept.
- Step 2Let the tool size the bitrate to 16 MB — There are no options to set. The tool computes
16 MB × 8 ÷ duration × 0.96to get the bitrate that would just fill the cap, then rounds down to the nearest standard MP3 bitrate so the result lands safely under 16 MB rather than slightly over. - Step 3Click the run button — FFmpeg WebAssembly re-encodes the audio to MP3 at the chosen bitrate. A short clip finishes in a second or two; a feature-length recording takes longer because every sample is decoded and re-encoded in the browser.
- Step 4Check the reported output size — The result panel shows input bytes, output bytes, and processing time. Output is always at or below 16 MB. For short clips it will be far below the cap (the bitrate hit the 320 kbps quality ceiling), which is expected — quality is preserved instead of being padded out to fill the limit.
- Step 5Download the WhatsApp-ready MP3 — Download
yourfile-16mb.mp3. Send it in WhatsApp as a document/audio attachment (paperclip → Document, or the audio file picker), not as a recorded voice note. - Step 6If you need different quality trade-offs, switch tools — This tool is fixed to 16 MB / MP3. To pick your own target size, use audio-compressor. To set an exact bitrate (CBR/VBR), use bitrate-changer. To trim dead air first and shrink further, use audio-trimmer.
What output bitrate you get, by clip length
The tool picks the highest standard MP3 bitrate whose file would still fit 16 MB. Output-size figures are the resulting MP3 at that bitrate (≈ bitrate × duration ÷ 8). Real files vary slightly with VBR framing and tags.
| Clip duration | Bitrate that would fill 16 MB | Standard bitrate selected | Approx. MP3 output size |
|---|---|---|---|
| 1 min | ~2147 kbps | 320 kbps (quality ceiling) | ≈ 2.3 MB |
| 3 min | ~716 kbps | 320 kbps (quality ceiling) | ≈ 6.9 MB |
| 5 min | ~429 kbps | 320 kbps (quality ceiling) | ≈ 11.4 MB |
| 10 min | ~215 kbps | 192 kbps | ≈ 13.7 MB |
| 15 min | ~143 kbps | 128 kbps | ≈ 13.7 MB |
| 30 min | ~72 kbps | 64 kbps | ≈ 13.7 MB |
| 60 min | ~36 kbps | 32 kbps | ≈ 13.7 MB |
| 90 min | ~24 kbps | 16 kbps | ≈ 10.3 MB |
What this tool does — and does not — let you change
whatsapp-fit is a one-click, zero-option tool. Anything you'd want to configure lives in a sibling tool.
| Setting | In this tool? | Where to do it instead |
|---|---|---|
| Target file size | No — fixed at 16 MB | audio-compressor lets you set 0.5–500 MB |
| Output format | No — always MP3 | bitrate-changer outputs MP3/WAV/FLAC; converters output to MP3 |
| Exact bitrate / CBR-VBR | No — chosen for you | bitrate-changer for 32–320 kbps explicit |
| Opus voice-note encoding | No — MP3 only | WhatsApp re-encodes its own in-app voice notes; no JAD tool emits Opus via the UI |
| Trim / cut the clip | No | audio-trimmer before compressing |
| Loudness / volume | No | loudness-normalizer |
Input limits by tier (audio family)
Limits apply to the file you drop in. The output is always ≤ 16 MB regardless of tier. Values from the audio tier table.
| Tier | Max input size | Max duration | Files at once |
|---|---|---|---|
| Free | 50 MB | 30 min | 1 |
| Pro | 200 MB | 120 min | 10 |
| Pro-media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | Unlimited |
Cookbook
Concrete before/after runs. Numbers come from the actual bitrate formula: target = floor(16 × 1024 × 1024 × 8 ÷ duration × 0.96), snapped down to a standard MP3 bitrate.
45-minute lecture MP3 rejected by WhatsApp
A 128 kbps recording of a 45-minute lecture is about 43 MB — over the 16 MB cap. The tool sizes the bitrate to the duration and re-encodes.
Input: lecture.mp3 (128 kbps, 45:00, 43.2 MB) Math: 16MB*8*0.96 / 2700s = ~48 kbps target Snap: nearest standard <= 48 -> 48 kbps Output: lecture-16mb.mp3 (48 kbps, 45:00, ~15.4 MB) Status: fits — send as a document attachment
Short voice memo stays high-quality
A 2-minute WAV memo would fit 16 MB at ~1 Mbps, but the tool caps at 320 kbps because higher MP3 bitrates add no audible quality. Output ends up far under the limit — that is correct behaviour, not a bug.
Input: memo.wav (1411 kbps PCM, 2:00, 20.2 MB) Math: 16MB*8*0.96 / 120s = ~1073 kbps target Snap: capped at the 320 kbps ceiling Output: memo-16mb.mp3 (320 kbps, 2:00, ~4.6 MB) Status: well under 16 MB, full quality kept
FLAC concert recording for sharing
A lossless FLAC of a 25-minute live set is ~250 MB (needs Pro for the input). The tool transcodes to a 16 MB-safe MP3 in one pass.
Input: liveset.flac (lossless, 25:00, ~250 MB) [Pro tier] Math: 16MB*8*0.96 / 1500s = ~86 kbps target Snap: nearest standard <= 86 -> 80 kbps Output: liveset-16mb.mp3 (80 kbps, 25:00, ~14.3 MB) Status: fits — playable inline on WhatsApp
Extract audio from a video clip
Dropping an MP4 keeps only the audio track, then sizes it to 16 MB. Useful for sharing the soundtrack of a long video without sending the whole file.
Input: interview.mp4 (audio track, 38:00) Step 1: FFmpeg extracts the audio stream Step 2: 16MB*8*0.96 / 2280s = ~56 kbps -> snap 48 kbps Output: interview-16mb.mp3 (48 kbps, 38:00, ~13.0 MB) Status: audio-only MP3, fits WhatsApp
Two-hour podcast — trim first for better quality
At 120 minutes the auto bitrate falls to 16 kbps, which sounds thin. Trimming to a highlight clip first lets the tool keep a higher bitrate.
Whole episode: podcast.mp3 (120:00) -> 16 kbps -> 13.7 MB (thin, low quality) Better: audio-trimmer to a 20-minute highlight, then this tool: highlight.mp3 (20:00) -> 96 kbps -> ~13.7 MB (clear speech) See: /audio-tools/audio-trimmer
Edge cases and what actually happens
Output is much smaller than 16 MB on a short clip
ExpectedFor clips under about 3.5 minutes, the bitrate that would fill 16 MB exceeds 320 kbps, so the tool caps at the 320 kbps quality ceiling. A 2-minute clip comes out around 4–5 MB. This is intentional: padding MP3 to a higher bitrate adds file size without audible benefit, so the tool keeps quality high and the file small.
Very long file gets a low, thin-sounding bitrate
By designA 90-minute recording is sized to 16 kbps to stay under 16 MB — intelligible for speech but obviously degraded for music. The cap is the constraint, not the tool. Either split the recording with audio-splitter and send parts, or trim to the section you actually need with audio-trimmer so a higher bitrate fits.
You wanted an Opus voice note, not an MP3
MP3 onlyThis tool always emits MP3 — it does not produce WhatsApp's in-app Opus voice notes. WhatsApp generates those itself when you hold the mic and record in-chat, re-encoding to low-bitrate Opus on send. There is no UI option here to pick Opus. If you specifically need an Opus/OGG file from a recording, that is a different conversion path and not what whatsapp-fit does.
Input file exceeds your tier's size or duration limit
RejectedFree tier caps inputs at 50 MB and 30 minutes; Pro at 200 MB and 120 minutes. A 3-hour raw WAV will be refused on Free with a limit message. Upgrade, or pre-trim the clip with audio-trimmer so it fits the limit before compressing.
Sent the MP3 but WhatsApp shrank it again
ExpectedSending audio as a recorded voice note (hold-to-record) makes WhatsApp re-encode to its own low-bitrate Opus. To preserve your MP3 bitrate, send it as a document/audio attachment (paperclip → Document or the audio file picker), not by recording into the chat.
WAV or FLAC plays externally instead of inline
Use MP3This is exactly why the tool outputs MP3 rather than the input format. WhatsApp's inline player handles MP3, M4A/AAC, and OGG/Opus, but WAV and FLAC usually open in an external app. Because whatsapp-fit always produces MP3, the result plays inline — keep the .mp3 it gives you.
Corrupt or zero-length file dropped
ErrorIf the decode step can't read a valid duration (truncated download, renamed non-audio file), the tool reports a load error and does not produce output. Re-download or re-export the source, then retry. A duration of zero would otherwise make the bitrate math meaningless.
Tags / cover art on the source
Not carried overwhatsapp-fit re-encodes the audio stream for size; it is a size tool, not a tag tool, so ID3 tags and embedded artwork are not preserved through this pass. If metadata matters, restore it afterward with id3-editor.
Output still feels close to the cap
PreservedMid-length clips (10–60 min) land around 13–15 MB because the snapped bitrate nearly fills the 16 MB budget. That is the point — maximum quality under the cap. If you want a comfortable margin for email or another platform, use audio-compressor with a smaller target such as 8 MB.
Frequently asked questions
What size limit does this tool target?
A fixed 16 MB, matching WhatsApp's audio/document attachment cap. There's no setting to change it — the target is built in. If you need a different target size, use audio-compressor, which lets you choose anywhere from 0.5 MB to 500 MB.
Why is my compressed file well under 16 MB instead of right at it?
The tool snaps down to a standard MP3 bitrate (320, 256, 192, … kbps) rather than using an arbitrary number, and short clips hit the 320 kbps quality ceiling. So a 2-minute clip lands around 4–5 MB, not 16 MB. That keeps quality high and the file safely under the cap — it never overshoots.
Can I choose Opus or M4A output for smaller voice files?
No. whatsapp-fit always outputs MP3 because MP3 plays inline in WhatsApp on every device. There is no format picker. If you want a different container you'd use a converter or bitrate-changer, but for direct WhatsApp playback MP3 is the safe choice.
Does the file get uploaded anywhere?
No. Compression runs entirely in your browser via FFmpeg 8.1 compiled to WebAssembly. The audio never leaves your device, which matters for private recordings, interviews, or copyrighted music. See the privacy-focused walkthrough at fit audio to WhatsApp with no upload.
What input formats are accepted?
MP3, WAV, FLAC, M4A, OGG, Opus, and video files. For a video, FFmpeg extracts the audio track and discards the picture, then sizes the audio to 16 MB.
How is the bitrate calculated?
It computes 16 MB × 8 bits ÷ duration in seconds × 0.96 (the 0.96 reserves about 4% for MP3 container overhead), then rounds down to the nearest standard MP3 bitrate so the file stays under the cap. Longer clips therefore get lower bitrates.
My 90-minute recording sounds thin after compressing — why?
To fit 90 minutes under 16 MB the bitrate drops to about 16 kbps. That's fine for speech intelligibility but poor for music. Split the file or trim to the part you need: a 20-minute clip can keep 96 kbps. Use audio-trimmer or the cut a podcast clip workflow.
Is this the same as a WhatsApp voice note?
No. A voice note is recorded in-app and WhatsApp encodes it to low-bitrate Opus itself. This tool produces a standalone MP3 you send as a document/audio attachment. To keep the bitrate you chose, send it as a file, not by holding the record button.
Will my ID3 tags and cover art survive?
No — this is a size tool that re-encodes the audio stream, so tags and embedded artwork aren't carried through. Re-add them afterward with id3-editor if you need them.
How big a file can I start with?
On the free tier, up to 50 MB and 30 minutes. Pro raises this to 200 MB and 120 minutes; Pro-media and Developer handle up to 100 GB with unlimited duration. The output is always ≤ 16 MB regardless of tier.
Can I compress several clips at once?
Free tier processes one file at a time. Pro allows up to 10 files, Pro-media up to 100. For a single over-cap clip, one pass is all you need.
What if I want a margin below 16 MB for safety?
whatsapp-fit already keeps output below the cap, but if you want a defined margin (say, an 8 MB ceiling for email or other apps), use audio-compressor and set the target you prefer. For Discord's 25 MB cap specifically, use discord-fit.
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.