Compress FLAC Online — Free File Size Reducer
Recompress a FLAC file to a different FLAC compression level using the lossless FLAC codec — reducing file size without sacrificing a single bit of audio quality. This tool lets you tune the trade-off between encoding time and storage footprint while keeping the audio bitstream bit-for-bit identical at any compression level.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your FLAC file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
FLAC compression works by applying lossless prediction algorithms (linear predictive coding) and entropy coding (Rice coding) to reduce file size. The compression level (0–8) controls how aggressively FFmpeg searches for the most efficient prediction model: level 0 is the fastest encode with the largest file size, while level 8 spends the most CPU time finding optimal predictors for the smallest possible file. Crucially, every level produces a mathematically identical decoded audio stream — no audio data is removed or approximated at any point. This tool re-encodes your source FLAC through FFmpeg's native FLAC encoder at level 5 (the widely-used default balance point), producing a new .flac file that is fully compatible with all standard FLAC decoders. Metadata tags such as artist, album, and ReplayGain values are preserved through the process.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg command-line tool, which handles all audio decoding, re-encoding, and container muxing for this FLAC-to-FLAC recompression. |
-i input.flac
|
Specifies the source FLAC file to read. FFmpeg will fully decode this lossless audio stream into raw PCM internally before passing it to the FLAC encoder. |
-c:a flac
|
Selects FFmpeg's built-in FLAC encoder for the audio stream, ensuring the output is written as a valid FLAC-encoded audio file rather than any other codec. |
-compression_level 5
|
Sets the FLAC compression aggressiveness to level 5, the standard default that balances encoding speed against output file size. Increase to 8 for maximum compression or decrease to 0 for the fastest possible encode. |
output.flac
|
Defines the output filename and, by its .flac extension, tells FFmpeg to wrap the encoded audio in a FLAC container — the same format as the input, now recompressed at the specified level. |
Common Use Cases
- Recompressing a FLAC archive ripped at level 0 (fast, large) to level 8 for long-term cold storage where disk space matters more than encoding speed
- Standardising a music library of FLAC files encoded at mixed compression levels into a consistent level 5 for predictable file sizes and compatibility
- Reducing the size of high-resolution 24-bit/96kHz FLAC files before syncing them to a portable DAP with limited internal storage
- Preparing FLAC files for distribution on a self-hosted music server where bandwidth or quota constraints make smaller lossless files preferable
- Verifying the exact FFmpeg FLAC compression command to use in a local batch-processing script for a large lossless music collection exceeding 1GB
Frequently Asked Questions
No — FLAC is a lossless format at every compression level from 0 to 8. The compression level only controls the efficiency of the encoding algorithm, not the fidelity of the audio. A file encoded at level 0 and a file encoded at level 8 will produce byte-for-byte identical PCM audio when decoded. The only differences are file size and how long encoding takes.
The size reduction depends heavily on the audio content and the source compression level. Moving from level 0 to level 8 typically saves roughly 10–20% in file size for typical music. Files with a lot of silence or simple, repetitive waveforms (like sparse classical recordings) compress more efficiently than dense, loud material like heavily mastered rock. If your source file was already encoded at level 5 or higher, the savings from further recompression will be minimal.
Yes. FFmpeg copies FLAC Vorbis comment metadata (artist, album, title, track number, ReplayGain tags, etc.) into the output file by default during this re-encode. Embedded cue sheets, if present in the source FLAC, are also retained. You should verify critical tags with a tag editor after processing if exact metadata preservation is essential to your workflow.
This can happen when the source FLAC was encoded with a different encoder (such as the reference libFLAC) that applies slightly different internal optimisations compared to FFmpeg's FLAC encoder. Even at the same nominal compression level, minor implementation differences can produce files that are a few kilobytes larger or smaller. The decoded audio remains identical regardless.
Replace the value after -compression_level with any integer from 0 to 8. For example, use -compression_level 8 for maximum compression (smallest file, slowest encode) or -compression_level 0 for the fastest possible encode at the cost of a larger file. The default used by this tool is level 5, which is the standard balance between file size and encoding speed used by most FLAC software.
The single-file command shown works for one file at a time, but you can adapt it for batch processing in a shell script. On Linux or macOS, use: for f in *.flac; do ffmpeg -i "$f" -c:a flac -compression_level 5 "compressed_$f"; done. On Windows (PowerShell), use: Get-ChildItem *.flac | ForEach-Object { ffmpeg -i $_.Name -c:a flac -compression_level 5 ("compressed_" + $_.Name) }. This is especially useful for large libraries over 1GB that exceed the browser tool's file size limit.
Technical Notes
FLAC's compression levels map directly to the -compression_level parameter in FFmpeg's FLAC encoder, which internally controls the LPC (Linear Predictive Coding) order search range and the Rice partition order. Level 5 (the default) uses up to LPC order 8 and is the same default used by the reference libFLAC encoder. Level 8 enables exhaustive LPC order searching up to order 12, producing marginally smaller files at a significant CPU cost — often 3–4× longer encode times versus level 5. For archival use cases, level 8 is worth considering; for real-time or frequent re-encoding workflows, level 5 is almost always the right choice. Note that re-encoding a FLAC file multiple times is perfectly safe — because decoding is always lossless, each re-encode starts from the same perfect audio data. The output file will have a new FLAC stream header reflecting the new encoder settings but will be fully compatible with all FLAC-compliant decoders including foobar2000, VLC, Apple Music, and hardware DAPs. FLAC does not support multiple audio tracks, subtitles, or chapter markers, so none of those considerations apply to this workflow.