Upscaling — fake resolution
The meter looks for consistently unused bits, then for a lower-depth grid beneath small residuals. Exact depth is distinguished from an estimate, marked with ≈.
Declared 24-bit — the 8 low bits are empty
Open source · Rust + Tauri · macOS · Windows · Linux
FlacCompagnon examines your audio: authenticity, loudness, stereo, dynamics and integrity. In a native app or from the terminal, find the measurements that help you understand your library.
Free · App MIT · Core MPL-2.0 · Analysis never modifies your files
▾Preview
Drop a folder or files: every track is decoded and screened in parallel. One coloured tag per detection — hover it for the reasoning behind the verdict.
| File | Format | Length | Sample rate | Real bits | Cut-off | Detections | MD5 |
|---|---|---|---|---|---|---|---|
| 01 · So What.flac | FLAC | 9:26 | 44.1k | 16-bit | 21.9 kHz (99%) | Clean | ✓ OK |
| 02 · Studio Master.flac | FLAC | 4:11 | 96k | 24-bit | 22.0 kHz (46%) | Upsampled | ✓ OK |
| 03 · Remaster 2019.flac | FLAC | 3:37 | 44.1k | 16-bit | 22.05 kHz (100%) | Transcoded | ✓ OK |
| 04 · Acoustic Live.flac | FLAC | 5:02 | 44.1k | 16-bit | 18.6 kHz (84%) | Clean | — no MD5 |
Illustrative interface preview — hover over detections to read their interpretation.
Detections
Three independent checks examine sample precision, frequency bandwidth and traces of lossy codecs. Their methods and limits are explained in the documentation.
The meter looks for consistently unused bits, then for a lower-depth grid beneath small residuals. Exact depth is distinguished from an estimate, marked with ≈.
Declared 24-bit — the 8 low bits are empty
In files above 48 kHz, the analysis searches for a persistently empty high band. This is consistent with a lower-rate source, but also with a naturally limited or filtered master.
The cut-off wall at 22.05 kHz
The analysis searches for quantization grids that AAC and MP3 can leave in decoded audio. Their presence is evaluated statistically, with calibration still preliminary.
Coefficients snapping onto the AAC grid
A detection is a clue, not a certificate of origin. Processing and artistic choices can imitate or hide a signature. Clean means no detector raised a finding. Combine measurements, spectrograms and listening.
All analyses
Explore the analyses by family. Each link opens a plain-language explanation, followed by the detailed method, limits and test examples.
The actual format is also read from the file header, independently of its extension. Hi-Res and DSD badges summarize container properties and available results.
Advanced columns after the MD5 signature are hidden by default. Show the ones you need using the app’s column chooser. A dash means a measurement is unavailable, not zero.
Spectrograms
One click renders a high-resolution spectrogram per track, with a labelled frequency axis up to the Nyquist frequency (half the sample rate, e.g. 22.05 kHz for a 44.1 kHz CD). The cut-off is visible to the naked eye.
Rendered via ffmpeg, located automatically on your system.
A spectrograms/ folder is created inside each folder that holds audio files, and one PNG per track is generated — only when you click the “Generate spectrograms” button.
Quicker still: listen. Clicking a row's thumbnail starts playback, with a transport bar under the list. This is not really an audio player — just enough to hold a verdict up against your own ears without leaving the app.
Conversion
A dedicated panel, mirroring the tag one: drop tracks or folders into it, pick a format, and the source folder structure is reproduced exactly under the destination you choose. Files imported for conversion never join the analysis table — the two lists are independent.
Opus and MP3 offer a bitrate; FLAC and WAV have none to choose. The WAV written is fixed at 16-bit, whatever the source depth.
A checkbox also copies everything that is not audio — covers, playlists, spectrograms you already generated — to the same place in the copied tree.
Your originals are neither moved nor modified: conversion always writes somewhere else. Playback pauses for the duration (the encoders take every core) and resumes on its own afterwards. Cancel stops the batch and deletes the files it had already written — leaving whatever the folder held beforehand untouched.
Export
Clicking Save… writes two files, same name, same folder: a .csv — one row per track, every analysis column, ready for a spreadsheet — and a .json that keeps the full analysis, including each detection's detail. The suggested name and location follow the analyzed folder.
Drop a previously-exported .json onto the list to reload the table as-is — no audio is re-decoded. No dedicated button: same gesture as dropping a folder.
Export playlist… writes an M3U playlist in the order shown on screen — including any manual reordering you did by dragging rows. Your choice of Extended M3U (.m3u8, with durations and “Artist — Title”) by default, or Simple M3U (.m3u, paths only).
Tip: the trash icon at the end of a row removes a file from the list — it will not appear in either exported file.
Also in your terminal
Analyze a file or folder, choose which results to display and save a JSON report the app can reopen. The command is called flaccompagnon.
Install and use the CLI →Show loudness and phase
flaccompagnon "Music/Album" \ --analysis loudness,phase
Save the complete report
flaccompagnon "Music/Album" \ --json "Music/Album/FlacCompagnon.json"--analysis filters the display. Computation and JSON remain complete.
One library, several uses
Aède is a music catalog written in Rust for organizing tracks and metadata. It integrates FlacCompagnon’s engine and can save analysis reports in artist or album folders, as you choose.
Developing in Rust? The core is reusable without a Tauri dependency.
Rustdoc · API Rust ↗Pipeline
Drag and drop a folder or files — or pick them with the import button. Each track is decoded, then run through a battery of analyses, and the verdict appears.
The Rust engine is shared by the app, CLI and Aède. Streaming measurements and FLAC MD5 verification share decoding; searching for codec signatures can require additional work.
Download
Installers built by GitHub Actions for all three platforms. Separate CLI archives are available in releases that include them.
ffmpeg is only needed for spectrograms and for DSD content analysis — the rest of the analysis works entirely without it.
No ffmpeg installed? See the README on GitHub to install it on macOS, Windows or Linux.
J. Lacroix, Y. Prime, A. Remy & O. Derrien — “Lossless Audio Checker: A Software for the Detection of Upscaling, Upsampling, and Transcoding in Lossless Musical Tracks”, AES 139th Convention, Paper 9416, New York, 2015.
O. Derrien et al. — “Detection of Genuine Lossless Audio Files: Application to the MPEG-AAC Codec”, Journal of the AES, 2019.
FlacCompagnon is an independent project. Measurements and their limits are documented; no detection alone constitutes proof of provenance.