Open source · Rust + Tauri · macOS · Windows · Linux

Is your lossless actually lossless?

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

The analysis at a glance

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.

FlacCompagnon
4 files 2 clean 1 upsampled 1 transcoded
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 detections

Three independent checks examine sample precision, frequency bandwidth and traces of lossy codecs. Their methods and limits are explained in the documentation.

Upscaled

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

Upsampled

Upsampling — fake sample rate

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

Transcoded

Transcoding — lossy source

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

Every measurement answers a question.

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

See what the numbers suggest

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.

Tags

Fix it, don't just flag it

Select one or more tracks and an editing panel opens on the left, with the usual fields: title, artist, album, album artist, composer, year, genre, track and disc numbers, comment, compilation. It is the only place in the app that writes to your files, and only when you click Save.

Batch editing

Select a whole album: each field shows either the shared value or a “multiple values” badge. Only the fields you actually touch are written — fixing the album on 12 tracks never flattens their individual titles. A dedicated button renumbers the selection 1 through N in one go, in table order.

Cover art

Choose the image role: front cover, back cover, booklet… The selection displays the corresponding picture, and imports or exports follow that role. Original proportions are preserved; click to view it full size.

Online lookup

The Search online button queries MusicBrainz and, if you supply your own personal token, Discogs. When the file already carries a MusicBrainz ID (tagged with Picard), the right release is found directly — no fuzzy searching.

Online results pre-fill the panel: nothing is written until you have reviewed it and pressed Save — and Reset discards everything. This is the only feature that uses the network, and never without a click from you.

Conversion

Convert without wrecking your filing

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.

FLAClossless Opusroyalty-free MP3plays everywhere WAV16-bit PCM

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

Take your results with you

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

The same engine. One simple command.

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 →
flaccompagnonExamples

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

Your music, with Aède.

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.

Discover Aède ↗

Developing in Rust? The core is reusable without a Tauri dependency.

Rustdoc · API Rust ↗

Pipeline

How it works

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.

1 dropped folder
2 decode · symphonia
3 streaming analyzer
FFT ▸ cut-off AAC / MP3 ▸ grids effective bits LUFS · phase · levels
4 results table

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

A small native app

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.

References

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.