AudioUtils

FFmpeg Compress Audio: MP3, FLAC, Opus & AAC One-Liners

FFmpeg one-liners for audio: MP3 with LAME presets, FLAC at max compression, Opus for voice, AAC for video. Every flag explained plus a bash batch loop.

FFmpeg is the canonical command-line tool for audio compression. Every browser-based audio tool, every desktop converter, every streaming service's ingest pipeline — most of them are wrappers around FFmpeg under the hood. If you are on the command line and want to shrink an audio file, this is the tool, and one line is usually all it takes.

This guide covers the flags that matter, the one-liners that do the work, and the honest comparison of when CLI beats a browser and when it does not. For the conceptual side of "what audio compression actually is" see audio compression explained.

Install FFmpeg

If you do not already have it:

  • macOS (Homebrew): 'brew install ffmpeg'
  • Windows (Chocolatey): 'choco install ffmpeg' — or download a static build from gyan.dev and add to PATH
  • Ubuntu/Debian: 'sudo apt install ffmpeg'
  • Fedora/RHEL: 'sudo dnf install ffmpeg' (after enabling RPM Fusion)
  • Arch: 'sudo pacman -S ffmpeg'

Verify: 'ffmpeg -version'. You want at least version 4.0; modern versions are 6.x or 7.x. Most distro packages are recent enough.

The Flags You Need

FFmpeg has thousands of flags. For audio compression you need a small handful.

| Flag | What it does | Example | |---|---|---| | -i | Input file | -i input.wav | | -c:a | Audio codec | -c:a libmp3lame | | -b:a | Audio bitrate (constant) | -b:a 192k | | -q:a | Quality level (VBR) for MP3/Vorbis | -q:a 2 | | -compression_level | FLAC compression effort (0–12) | -compression_level 8 | | -application | Opus mode (voip/audio/lowdelay) | -application voip | | -ar | Sample rate | -ar 44100 | | -ac | Channel count (1=mono, 2=stereo) | -ac 1 | | -vn | Strip video (for media containers) | -vn | | -y | Overwrite output without asking | -y | | -map_metadata | Copy or strip metadata | -map_metadata 0 |

The pattern is always: 'ffmpeg [input flags] -i input [output flags] output'.

The Essential One-Liners

Basic MP3 size reduction at 128 kbps

'ffmpeg -i input.mp3 -b:a 128k output.mp3'

This re-encodes the input MP3 to 128 kbps CBR. Use it when you have an MP3 that is too big and you do not have the original WAV. Note: re-encoding lossy to lossy is not free — quality drops slightly. If you have the WAV, encode from there directly.

VBR MP3 with LAME V2 preset (~190 kbps average)

'ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3'

The '-q:a 2' invokes LAME's V2 preset, the standard transparent setting. File size for a 4-minute song lands around 5–6 MB. For higher quality use '-q:a 0' (V0, ~245 kbps). For smaller files use '-q:a 4' (V4, ~165 kbps). See VBR vs CBR MP3 for the deeper trade-off.

Maximum FLAC compression (lossless)

'ffmpeg -i input.wav -c:a flac -compression_level 8 output.flac'

FLAC's '-compression_level' ranges from 0 (fastest) to 12 (slowest, smallest). Levels 8 through 12 produce nearly identical sizes — 8 is the sweet spot. The output is bit-perfect identical to the input WAV when decoded; the file is roughly 50–60% the WAV size with no quality loss whatsoever. See what is FLAC.

Opus for voice (VoIP-optimized)

'ffmpeg -i input.mp3 -c:a libopus -b:a 64k -application voip output.opus'

Opus is the best low-bitrate codec on the planet. The '-application voip' flag tunes the encoder for speech (narrower frequency emphasis, lower latency). 64 kbps Opus on voice is roughly equivalent to 128 kbps MP3 — half the file size at comparable intelligibility. For music, drop the '-application voip' flag (default is 'audio') and use 96–128 kbps.

AAC for compatibility (iPhone, video)

'ffmpeg -i input.wav -c:a aac -b:a 192k -movflags +faststart output.m4a'

FFmpeg's built-in AAC encoder is decent. For top-tier AAC, compile FFmpeg with libfdk_aac (license-restricted; not in most distro builds). 192 kbps AAC is roughly equivalent to 256 kbps MP3 in audible quality. The '-movflags +faststart' moves the moov atom to the front so playback can begin before the file fully downloads.

Strip a track to mono and downsample (smallest voice files)

'ffmpeg -i input.wav -c:a libmp3lame -b:a 64k -ac 1 -ar 22050 output.mp3'

For voice memos and audiobooks where stereo is wasted and 44.1 kHz is overkill: '-ac 1' forces mono, '-ar 22050' halves the sample rate. A 10-minute voice memo at this setting is around 4.5 MB. Music sounds bad with these settings — voice is fine.

Extract and compress audio from video

'ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3'

The '-vn' flag drops the video stream entirely. The audio gets re-encoded to MP3 V2. For lossless extraction (no re-encode), use '-c:a copy' instead, but the output codec must match what is already in the container.

Bash Batch Loop

For folders of files, a shell loop beats opening a GUI every time:

``` for f in *.wav; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.wav}.mp3" done ```

This converts every .wav in the current directory to an MP3 at LAME V2, preserving filenames. The '${f%.wav}.mp3' strips the .wav extension and appends .mp3. Quote the variable as "$f" to handle filenames with spaces.

For parallel processing on multi-core machines, GNU parallel makes it trivial:

``` ls *.wav | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 {.}.mp3 ```

This runs N jobs simultaneously where N = number of CPU cores. Install with 'brew install parallel' or 'apt install parallel'.

VBR vs CBR Quality Reference

LAME quality presets in FFmpeg ('-q:a' values):

| -q:a value | LAME preset | Average bitrate | Best for | |---|---|---|---| | 0 | V0 | ~245 kbps | Audiophile, archival from masters | | 2 | V2 | ~190 kbps | Default for music — transparent | | 4 | V4 | ~165 kbps | Casual listening | | 6 | V6 | ~130 kbps | Voice with some music tolerance | | 9 | V9 | ~65 kbps | Lowest quality, voice only |

For Opus, '-b:a' alone is enough:

| Bitrate | Best for | |---|---| | 32 kbps | Speech in a low-bandwidth pinch | | 64 kbps | High-quality voice | | 96 kbps | Music, transparent for most listeners | | 128 kbps | Music, transparent for trained ears |

For format ranges by use case see audio bitrate explained.

Honest Verdict: When CLI Beats the Browser, and When It Doesn't

FFmpeg wins when:

  • You have dozens or hundreds of files to process. A shell loop with parallel hits CPU saturation; the browser handles one file at a time.
  • You need specific encoder flags (libfdk_aac, custom Opus tuning, multi-pass encoding) the browser tool does not expose.
  • You are automating as part of a pipeline — CI builds, podcast publishing scripts, server-side transcoding.
  • The file is multi-gigabyte and would not fit in browser memory.
  • You are already in a terminal and do not want a context switch.

The browser wins when:

  • It is a one-off file. By the time you remember the right flags, you would already be done in a browser.
  • You are on a device without FFmpeg — Chromebook, locked-down work laptop, mobile.
  • The audio is sensitive and you prefer not to involve the OS-level filesystem path your shell history records.
  • You want visual feedback — a progress bar, a sane filename suggestion, a download button.

For one-off compression, /audio-compressor and the per-format tools at /compress-mp3, /compress-wav, /compress-m4a, /compress-ogg, and /compress-flac are the lower-friction option. Behind the scenes they run the same LAME/FLAC/Opus encoders FFmpeg wraps, compiled to WebAssembly. The output is byte-identical for the same input and settings.

Common FFmpeg Pitfalls

  • Forgetting '-c:a' on a transcode: FFmpeg defaults to a sensible codec based on the output extension, but for non-standard combinations (e.g., '.m4a' with non-AAC audio) you should specify explicitly.
  • Using '-b:a' with a VBR-only codec: Opus uses '-b:a' as a target. MP3 with LAME accepts both '-b:a' (CBR) and '-q:a' (VBR); use one or the other, not both.
  • Re-encoding when 'copy' would do: 'ffmpeg -i in.mp4 -vn -c:a copy out.m4a' extracts the audio with no re-encoding — instant, lossless. Only use the libmp3lame route when you actually need to change the format or bitrate.
  • Forgetting '-y' in scripts: without '-y', FFmpeg prompts on overwrite, which hangs unattended scripts.
  • Sample rate mismatches: if the input is 48 kHz and you target an output container that expects 44.1 kHz (rare, but happens with some MP3 players), add '-ar 44100' explicitly.

Verifying Output

After encoding, sanity-check with 'ffprobe':

'ffprobe -v error -show_entries stream=codec_name,sample_rate,bit_rate,channels output.mp3'

This prints codec, sample rate, bitrate, and channel count. If the bitrate is way off your target, something went wrong — usually a typo in '-b:a' (FFmpeg silently falls back to defaults).

Cross-Reference

For the conceptual breakdown of what audio compression actually is, including the file-size vs dynamic-range distinction, see audio compression explained. For the GUI-first equivalent, see how to compress audio in Audacity. For the trade-off between MP3, AAC, and the rest see what is MP3 and audio bitrate explained.

More to Read

How to Convert Audio Files: Complete GuideHow to Reduce Audio File Size Without Losing QualityHow to Convert iPhone Voice Memo to MP3 FreeHow Audio Compression WorksBest Audio Format for WebsitesHow to Batch Convert Audio FilesHow to Extract Audio from Video FilesDoes Converting MP3 to WAV Improve Quality?How to Convert MP3 to WAV for Music ProductionHow to Convert MP3 to WAV Without Losing QualityHow to Convert MP3 to WAV on Mac and WindowsHow to Convert WAV to MP3 Without Losing QualityWAV File Too Large? Convert to MP3How to Convert iPhone Voice Memo to MP3 FreeHow to Play M4A Files on Android (Convert to MP3)How to Convert FLAC to MP3 Without Losing QualityBest Bitrate for FLAC to MP3 ConversionConvert AAC to MP3: Best Quality SettingsHow to Extract Audio from MP4 FilesConvert iPhone MOV Video to MP3How to Convert WAV to MP3 (The Complete Guide)How to Convert MOV to MP3 (iPhone & QuickTime)How to Convert MP3 to WAV for Editing and DAWsHow to Convert YouTube to MP3 Legally (3 Ways)Best MP3 to WAV Settings for Editing and DAWsBest WAV to MP3 Bitrate for Music, Podcasts, and VoiceMOV to MP3 on Mac: Fastest Ways ComparedHow to Convert M4A to MP3 on iPhone Without a ComputerHow to Convert FLAC to MP3 on MacHow to Convert FLAC to MP3 on WindowsHow to Convert OGG to MP3 on MacHow to Convert MP4 to MP3 on MacHow to Convert MP4 to MP3 on iPhoneHow to Convert MP4 to MP3 on AndroidHow to Convert WMA to MP3 on MacHow to Convert AIFF to MP3 on MacHow to Convert MOV to MP3 on WindowsM4A to WAV: How to Convert and WhyHow to Convert FLAC to OGG VorbisHow to Convert AAC to WAV for EditingHow to Convert WMA to MP3 on WindowsHow to Convert AIFF to MP3 on WindowsHow to Convert OGG to MP3 on WindowsHow to Convert FLAC to MP3 on iPhoneHow to Convert AAC to MP3 on MacHow to Convert M4A to MP3 on Mac: 3 Easy MethodsHow to Convert Audio Files with AudacityHow to Convert Audio Files with VLCFLAC to AAC: Bitrate Guide and Practical StepsOGG to AAC: Cross-Platform Audio Migration GuideWMA to OGG: Escape the Windows Media EcosystemWMA to FLAC: Lossless Archiving of Your Old WMA LibraryFLAC to Opus: Web Streaming Optimization GuideAIFF to M4A: Apple Production Workflow GuideWAV to AIFF: Windows to Mac Audio WorkflowHow to Convert AAC to MP3 on iPhoneHow to Convert FLAC to MP3 on AndroidHow to Convert OGG to MP3 on AndroidHow to Convert WAV to MP3 on iPhoneHow to Convert AIFF to MP3 on iPhoneHow to Convert M4A to MP3 on WindowsOpus to MP3: Complete Conversion GuideConvert Audio on Linux: Command Line and Browser OptionsHow to Convert Audio Without Installing SoftwareHow to Convert WMA to MP3 on Mac (Step-by-Step Guide)OGG to FLAC: What to Expect from the ConversionAAC to FLAC: Convert and What to ExpectOpus to WAV: How to Convert and Why You Might Need ToWAV to Opus: The Web Developer's Audio GuideBest Audio Format for Speech-to-Text TranscriptionBest Audio Format for WhatsApp Voice MessagesAudio Formats Windows Media Player Plays NativelyAudio Formats VLC Supports and Its Conversion FeaturesAudio Formats Foobar2000 SupportsAudio Formats Plex Media Server SupportsKodi Audio Format: What Works & What Needs ConversionAudio Formats for PS4 and PS5 USB PlaybackAudio Formats for Xbox USB PlaybackAudio on Nintendo Switch: Limitations and WorkaroundsHow to Play FLAC on iPhone (iOS 11 and Later)How to Play FLAC on Android NativelyWAV to FLAC: Converting Without Any Quality LossAIFF to WAV: macOS to Windows Audio WorkflowM4A to OGG: Converting Apple Audio to Open-SourceOpus Bitrate Guide: 32, 64, 96, 128, 192 kbps ExplainedReduce Audio File Size Without Losing QualityAudio Format Support on Raspberry Pi with mpd and mopidyBest Audio Format in 2025: The Definitive GuideIs yt-dlp Legal? What You Need to KnowLegal Ways to Download Music for Offline ListeningCreative Commons Music for Content Creators: Full GuideWMA to MP3: What to Expect and How to ConvertAIFF to MP3: GarageBand Exports and Quality SettingsHow to Convert Audio on Mac: GarageBand & QuickTimeHow to Convert Audio on iPhone: Files App & BrowserHow to Batch Convert Audio Files: FFmpeg & BrowserExtract Audio from MP4 Without Software (Browser Method)How to Convert iPhone Voice Memo to MP3 (Free, No App)How to Convert Zoom Recording to MP3 (M4A or MP4 Export)How to Convert Google Meet Recording to MP3How to Extract Audio from a Zoom Webinar RecordingCompress MP3 Without Losing Quality: What's PossibleHow to Make a Ringtone From an MP3 (iPhone & Android)How to Trim an MP3 Without Losing QualityHow to Cut Audio in Audacity (2026 Step-by-Step)How to Merge Audio Files: Three Real MethodsHow to Remove Vocals From a Song (Honest 2026 Guide)How to Record Audio on Mac: 2026 GuideHow to Record Audio on Windows: 2026 GuideHow to Record Audio on iPhone: 2026 GuideHow to Edit MP3 Metadata: Tools & WorkflowsHow to Find BPM of a Song: 5 MethodsHow to Split Audio Files: 3 Methods That WorkWhat Is WAV? Everything You Need to KnowWhat Is FLAC? The Lossless Audio FormatWhat Is OGG? The Open Container Format ExplainedWhat Is M4A? Apple's Audio Format ExplainedWhat Is AAC? Advanced Audio Coding ExplainedWhat Is AIFF? Apple's Lossless Audio FormatWhat Is WMA? Windows Media Audio ExplainedSample Rate Explained: 44.1kHz vs 48kHz vs 96kHzMP3 vs WAV: Which Format Should You Use?MP3 vs FLAC: Lossy vs Lossless ComparedMP3 vs AAC: Which Codec Sounds Better?MP3 vs OGG (Vorbis): The Complete ComparisonFLAC vs WAV: Lossless Formats ComparedM4A vs MP3: Which Should You Choose?Lossless vs Lossy Audio: The Complete GuideAudio Formats Explained: The Complete GuideBest Audio Format for Music ProductionBest Audio Format for PodcastsBest Audio Format for GamingBest Audio Format for Music StreamingBest Audio Format for Archiving MusicWhy WAV Files Are So Large (And What to Do About It)MP3 vs WAV for Audio Editing in a DAWWhen Should You Convert MP3 to WAV?Convert WAV to MP3 for Sharing and EmailM4A vs MP3: Which Has Better Quality and Smaller Size?What Is M4A? The iPhone Audio Format ExplainedHow to Convert MP3 to OGG for Unity Game DevelopmentOGG vs MP3 for Web Audio: Which Should You Use?WAV vs AIFF: Which Uncompressed Format?AAC vs OGG: Which Lossy Codec Wins?Opus vs MP3: The Modern Codec ShowdownM4A vs AAC: What's the Difference?What Is Opus? The Modern Audio Codec ExplainedMP3 vs WMA: Which Format Should You Choose?AAC vs FLAC: Lossy or Lossless — Which to Choose?OGG vs Opus: What's the Difference?Best Audio Format for Discord in 2026Best Audio Format for Video EditingAudio File Size Comparison: MP3, WAV, FLAC, OGG, AACOpus Audio for Web Developers: A Practical GuidePrivacy-First Audio Conversion: Why Browser-Based MattersAudacity vs AudioUtils: Which Should You Use?AIFF vs FLAC: Which Lossless Format Is Better?WMA vs MP3: Which Sounds Better?OGG vs AAC: Which Audio Codec Is Better?M4A vs OGG: Which Lossy Audio Codec to UseBest Audio Format for Zoom RecordingsBest Audio Format to Use in AudacityBest Audio Format for Voice RecordingWhat Is Vorbis? The Open Audio Codec ExplainedWhat Is ALAC? Apple Lossless Audio ExplainedGarageBand Audio Formats: What to Use and WhyiTunes and Apple Music Audio Formats ExplainedAudio Sample Rates: 44.1, 48, 96 kHz ExplainedWhat Is HLS Audio? HTTP Live Streaming ExplainedAIFF vs. AIF: What Is the Difference?Best Audio Format for iMovie: Import and Export GuideAdobe Premiere Pro Audio Format GuideLogic Pro Audio Guide: Best Import & Export SettingsOBS Studio Audio Format and Settings GuideTwitch Audio Requirements: Format, Bitrate & QualitySpotify Audio Format: What You Need to KnowYouTube Audio Requirements: Quality, Format & LUFSTikTok Audio Requirements: Format, Bitrate, and QualityAndroid Audio Formats: Native Support and Best PracticesiPhone Audio Formats: What iOS Supports & Doesn'tBest Audio Format for Ringtones: iPhone and AndroidBest Audio Format for Car USB: MP3, FLAC, or WAV?MP3 Bitrate Guide: 128 to 320 kbps ExplainedFLAC vs Opus: When to Use Each Audio CodecWAV vs MP3: The Honest Quality ComparisonAAC vs. MP3 for Streaming: Which Is Better?Best Audio Format for AudiobooksFFmpeg vs. AudioUtils: When to Use EachAudio Formats for Podcast Apps: Spotify, Apple, and MoreAudio Bitrate vs. Sample Rate: What's the Difference?Audio Transcoding vs. Converting: What Is the Difference?OGG vs FLAC: Which Should You Use?Opus vs AAC: Which Codec Is Better?WAV vs FLAC for Archiving: Which Is Best?M4A vs FLAC: Apple AAC vs Lossless Quality ComparedMP3 vs AAC for AirPods: Does the Codec Matter?Audio Normalization: Peak vs Loudness — When to Use EachAudio Quality Settings: Bitrate, Sample Rate, Bit DepthMP3 vs. WAV for Podcasting: Which Format to UseBest Audio Format for Discord: Opus, MP3, and File LimitsBest Audio Format for TikTok: Specs and Upload TipsBest Audio Format for Instagram Reels and StoriesAudio Sample Rate Explained: 44.1 vs 48 vs 96kHzFLAC vs. ALAC: Lossless Audio Format ComparisonWhat Is VBR vs CBR? Bit Allocation in Audio EncodingAudio File Too Large? How to Reduce Audio File SizeAudio Formats for Zoom: Recordings, Uploads, and SharingContainer vs Codec: The Most Confusing Thing in AudioPCM Audio Explained: Why WAV Files Are So LargeMP3 128 kbps vs 320 kbps: Does the Difference Matter?FLAC vs WAV for Music Production: The Practical AnswerM4A vs MP3 for iPhone: Which Format to Use and WhenOGG Vorbis vs MP3: Quality, Compatibility & When OGG WinsBest Audio Format for YouTube Uploads in 2026Best Audio Format for Audacity: Import, Edit, and ExportBest Audio Format for Premiere Pro: Timelines & ExportAudio Bitrate Guide: Right Settings for Every Use CaseWhy Is My Audio File So Large? How to Reduce ItLossless Audio: Is It Worth It? The Honest AnswerMP3 File Corrupted: How to Diagnose and Fix ItAudio Format for Spotify: Upload Specs & What HappensBest Free Audio Converter: Browser-Based vs DesktopID3 Tags Explained: MP3 Metadata Standard