How to compress audio file size in the browser
- Step 1Drop your audio or video file — Drag any MP3, WAV, FLAC, M4A, OGG, Opus or video file onto the dropzone, or click to browse. The file loads into the browser only — nothing uploads. JAD reads its duration, sample rate and channel count and shows them above the options.
- Step 2Read the source size and duration — The file row shows the current size and duration. These two numbers drive the result: target size ÷ duration sets the bitrate, so a long file needs a much lower bitrate than a short one to hit the same MB target.
- Step 3Enter your target size in MB — Type the number you need into Target size (MB) — for example
8for a chat upload or4for an email attachment. The field accepts 0.5 to 500 MB in 0.5 MB steps. JAD computes the bitrate and snaps to the nearest standard rate automatically. - Step 4Run the compression — Click Run Compress to Size. FFmpeg 8.1 re-encodes the audio to a constant-bitrate MP3 (
libmp3lame,-b:a <rate>k). A 5-minute clip typically finishes in a few seconds; a 60-minute file takes longer because the whole stream is decoded and re-encoded. - Step 5Check the output size against your target — The result card shows Output bytes next to Input bytes. Because the bitrate is snapped down, the output should sit at or just under your target. If it landed well under, you have headroom to raise the target a little for better quality and re-run.
- Step 6Download and verify in the player — Press Download to save the
-Nmb.mp3file (the suffix shows the target you asked for). The inline<audio>player lets you spot-check quality first — at very low bitrates voice stays intelligible but music thins out, so audition before sending.
What bitrate a target size produces, by duration
JAD computes bitrate from duration then snaps DOWN to the nearest standard rate. These are the snapped MP3 rates the tool actually picks for common (target MB, duration) pairs.
| Target size | 1 min clip | 5 min clip | 30 min episode | 60 min episode |
|---|---|---|---|---|
| 4 MB | 320 kbps | 96 kbps | 16 kbps | 8 kbps |
| 8 MB | 320 kbps (capped) | 160 kbps | 32 kbps | 16 kbps |
| 16 MB | 320 kbps (capped) | 320 kbps | 64 kbps | 32 kbps |
| 25 MB | 320 kbps (capped) | 320 kbps | 96 kbps | 48 kbps |
| 50 MB | 320 kbps (capped) | 320 kbps | 192 kbps | 112 kbps |
Bitrate quality guide for size compression
What each snapped MP3 rate sounds like, so you can judge whether a target is realistic for your content type.
| Bitrate | Voice / podcast | Music | Typical use |
|---|---|---|---|
| 320 kbps | Indistinguishable from source | Transparent | Music masters; ceiling JAD never exceeds |
| 192 kbps | Excellent | Very good | Default-quality distribution |
| 128 kbps | Excellent | Good, slight high-end loss | Standard podcast / streaming |
| 64 kbps | Clear, fully intelligible | Noticeably thin | Voice-only, tight size targets |
| 32 kbps | Intelligible, audibly compressed | Poor | Long talk recordings into small limits |
| 8–16 kbps | Robotic but understandable | Unusable | Last resort for very long files into tiny caps |
Tier limits for this tool
Audio family limits from JAD's tier configuration. Both file size and per-file duration are enforced.
| Tier | Max file size | Max duration | Files per job |
|---|---|---|---|
| Free | 50 MB | 30 min | 1 |
| Pro | 200 MB | 120 min | 10 |
| Pro + Media | 100 GB | Unlimited | 100 |
| Developer | 100 GB | Unlimited | Unlimited |
Cookbook
Real (source → target) compressions showing the bitrate JAD picks and the resulting size. Sizes assume MP3 output, which is what the browser tool produces.
Trim a 12 MB WAV voice memo to fit a 4 MB email cap
A lossless WAV is huge because it stores raw PCM, not a bitrate-bound stream. Converting to MP3 at a sensible rate alone fixes most of it; the target-size math just guarantees the ceiling.
Source: memo.wav · 4 min 10 s · 21.0 MB (1411 kbps PCM) Target: 4 MB Math: 4 MB → ~134 kbps → snaps DOWN to 128 kbps Output: memo-4mb.mp3 · ~3.8 MB · 128 kbps CBR Voice quality at 128 kbps: indistinguishable from source.
Squeeze a 58 min interview into a 16 MB messaging limit
Long talk content is the hardest case — duration dominates the equation, so the bitrate drops far. Voice survives; do not expect music in the bumpers to.
Source: interview.mp3 · 58 min · 80 MB (192 kbps) Target: 16 MB Math: 16 MB → ~38 kbps → snaps DOWN to 32 kbps Output: interview-16mb.mp3 · ~14.5 MB · 32 kbps CBR Result: clearly intelligible speech, audibly compressed.
Target lands well under — raise it for free quality
Because JAD snaps DOWN, a request can resolve below the next standard rate and leave headroom. Re-run with a higher target to recover quality you paid no size for.
Source: song.flac · 3 min 30 s · 34 MB Target: 6 MB → ~234 kbps → snaps DOWN to 192 kbps Output: song-6mb.mp3 · ~4.9 MB (1.1 MB under target) Re-run with Target 8 MB → ~312 kbps → snaps to 256 kbps Output: song-8mb.mp3 · ~6.4 MB · better quality, still < 8 MB
Short clip caps at 320 kbps — size won't drop below that
For short files, the computed bitrate can exceed 320 kbps; JAD caps there. The output may be smaller than the source but not as small as a generous target implies.
Source: jingle.wav · 20 s · 3.4 MB Target: 3 MB → computed ~1200 kbps → CAPPED at 320 kbps Output: jingle-3mb.mp3 · ~0.8 MB The file is already far under 3 MB at the 320 kbps ceiling — the target was never the binding constraint here.
Extract-and-shrink isn't this tool — convert first
This tool re-encodes audio; it does not pull audio out of video at a size target in one step. Convert with the video tool, then size the result here.
Goal: 4K screen-recording (450 MB) → 8 MB audio clip Step 1: /audio-tools/video-to-mp3 → talk.mp3 (audio only) Step 2: this tool, Target 8 MB → talk-8mb.mp3 Doing it in two steps keeps each operation predictable and lets you check the extracted audio before sizing it.
Edge cases and what actually happens
Target is larger than the source file
By designIf you ask for 50 MB but the file is already 6 MB, JAD still computes a bitrate from your target — which will exceed the 320 kbps ceiling and get capped. The output is a 320 kbps MP3, usually smaller than your target and possibly larger or smaller than the source depending on its original codec. This tool only ever lowers quality to meet a ceiling; it cannot add detail. To keep the source untouched, just don't compress it.
Very long file forces an extremely low bitrate
Quality lossDuration is in the denominator: a 3-hour recording targeted at 8 MB resolves to roughly 6 kbps and snaps to the 8 kbps floor. Speech remains barely intelligible; music is unusable. If the result is too rough, raise the target, split the file with Audio Splitter into multiple smaller uploads, or strip dead air first with Silence Stripper to cut duration before sizing.
File exceeds the 50 MB / 30 min free limit
Tier limitOn the free tier, inputs over 50 MB or 30 minutes are blocked before processing — the engine never starts and the attempt is recorded as limit-blocked. This is a per-file duration check separate from size, so a 45-minute 30 MB podcast is also blocked on free. Pro raises both to 200 MB / 120 min; Pro + Media streams up to 100 GB with no duration cap.
Result is a hair over the requested MB
ExpectedJAD reserves ~4% for container overhead and snaps the bitrate down, so the output normally lands under target. But MP3 frame padding and ID3 metadata add a small fixed amount, so a tiny clip can finish a few KB over a very small target. If a hard cap (like an exact upload limit) matters, set the target ~5% below the real ceiling — e.g. aim for 7.5 MB to stay under an 8 MB limit.
Compressing an already-low-bitrate MP3
Generational lossRe-encoding a 64 kbps MP3 down to 32 kbps is lossy-on-lossy: artefacts from the first encode get baked in and new ones added. The size drops but quality degrades faster than from a lossless source. Where possible, compress from the original WAV/FLAC master rather than a distributed MP3 to avoid stacking generations.
Output format selector isn't in the browser UI
By designThe in-browser tool produces MP3 (the format that gives predictable size-per-bitrate behaviour). The processor and API do accept a format option, so MP3, WAV, FLAC, M4A, OGG or Opus output is available via the @jadapps/runner or REST API. Note WAV and FLAC are not bitrate-bound, so target-size math behaves very differently for them — MP3 is the sensible default for hitting a size.
Corrupt or unsupported container
Decode errorIf FFmpeg cannot demux the input — a truncated download, a DRM-protected .m4p, or a file with the wrong extension — the run fails with a processing error rather than producing a silent or partial file. Re-export the source from its original app, or run it through a converter such as WAV to MP3 first to normalise the container.
Variable-bitrate source reports wrong duration
Edge caseA VBR MP3 with a missing or broken Xing/Info header can mis-report its duration to the browser. Since duration drives the bitrate math, a wrong duration produces a wrong-sized output. If the result is far off, re-encode the source to a clean CBR file first with Bitrate Changer, then size it here.
You wanted loudness compression, not size compression
Wrong toolDynamic-range compression (evening out loud and quiet parts) is a different operation. This tool only changes the bitrate to hit a size; it does not touch dynamics. For consistent loudness use Loudness Normalizer (EBU R128 two-pass) or Speech Leveler for talk content, then size the result here if needed.
Frequently asked questions
How does target-size compression actually work?
File size ≈ bitrate × duration. JAD takes your target in MB, converts it to bits, reserves ~4% for container overhead, divides by your file's exact duration to get a target bitrate, then snaps down to the nearest standard MP3 rate (320, 256, 192, 160, 128, 112, 96, 80, 64, 48, 32, 24, 16 or 8 kbps). Snapping down means the output lands at or just under your target rather than over it.
Is this dynamic-range compression like a studio compressor?
No. This tool reduces file size by lowering the bitrate; it does not change the dynamics of the audio (it won't bring up quiet speech or tame loud peaks). If you want that kind of compression, use Loudness Normalizer or Speech Leveler, which are separate tools built for it.
Why is my output smaller than the target I asked for?
Because JAD snaps the bitrate down to a standard step. If your computed bitrate falls between two standards (say 234 kbps), it drops to the lower one (192 kbps), which produces a smaller file. If you have headroom, raise the target and re-run — you may get the next standard up at no penalty to your size limit.
Can it ever produce a file larger than my target?
Rarely, and only by a small margin. MP3 frame padding plus any ID3 metadata add a few KB on top of the audio data, so a very small target on a tiny file can finish slightly over. For hard upload limits, aim ~5% below the real cap (e.g. 7.5 MB for an 8 MB limit).
What input formats can I compress?
MP3, WAV, FLAC, M4A, OGG, Opus, and video files. Lossless sources (WAV, FLAC) shrink the most because they were never bitrate-limited. The browser tool outputs MP3; other output formats are available through the @jadapps/runner or REST API via the format option.
Does my file get uploaded anywhere?
No. All processing runs in your browser through FFmpeg 8.1 compiled to WebAssembly. The audio bytes never leave your device. For a guarantee in writing aimed at sensitive recordings, see the no-upload size reducer guide.
How large a file can I compress?
Free tier: up to 50 MB and 30 minutes per file, no sign-in. Pro: 200 MB / 120 min and batches of 10. Pro + Media: up to 100 GB with no duration cap. Both size and duration are checked, so a long but small file can still be blocked on free.
Will compressing hurt the audio quality?
It depends on the resulting bitrate. Above ~128 kbps, voice and most music sound excellent. At 64 kbps voice is still clear but music thins. Below 32 kbps speech becomes audibly compressed though usually intelligible. The quality table above maps each rate to what you can expect.
Can I choose the exact bitrate instead of a size?
Not in this tool — it derives the bitrate from your size target. If you'd rather pick the bitrate directly (CBR or VBR, 64–320 kbps), use Bitrate Changer. Use this size tool when the constraint is a size limit; use Bitrate Changer when the constraint is a quality/bitrate target.
What's the difference between this and the Discord / WhatsApp tools?
Same underlying engine, fixed targets. Discord Fit presets the target to 25 MB (Discord's free upload limit) and WhatsApp Fit to 16 MB, so you don't type a number. This tool lets you set any target from 0.5 to 500 MB.
My file is too long even after compressing — what now?
Lower the target only goes so far before quality collapses. Better: cut dead air with Silence Stripper to shorten duration, or break the file into parts with Audio Splitter and send each under the limit. Shorter duration means a higher bitrate fits the same MB target.
Can I automate this for a folder of files?
Yes. Pair the @jadapps/runner once, then POST to the local audio-compressor endpoint with targetMb (and optionally format). The runner processes files on your machine — nothing uploads — so you can script batch size-compression as part of a publishing pipeline.
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.