← Back to blog

Essentia HPCP: Harmonic Fingerprinting for Covers, Live Recordings, and Musical Similarity

Sakarto's Essentia HPCP algorithm finds duplicate and similar audio files by harmonic content—catching cover versions, live recordings, and alternate arrangements that spectral methods miss. Free, browser‑based, and 100% private.

Sakarto Essentia HPCP audio duplicate finder interface showing harmonic groups and audio players

Chromaprint is fast. It finds re‑encoded tracks and different bitrates reliably. But it has a blind spot: it compares spectral energy shape, not which notes are being played. A cover version performed on piano instead of guitar has a completely different spectral fingerprint—even though it’s the same song.

That’s where Essentia HPCP comes in. Instead of comparing spectral energy, it compares harmonic content—the actual musical notes and chords being played at each moment. Two recordings of the same song activate the same pitch classes in similar proportions, regardless of what instrument is playing or how the audio was recorded.

For covers, live recordings, and any two performances that share the same harmonic structure, Essentia HPCP is the algorithm that finds the duplicates the others miss.


What makes Essentia HPCP different from Chromaprint and Meyda?

Sakarto gives you three audio algorithms for a reason. Each one measures a different property of sound:

AlgorithmWhat it measuresBest forThreshold direction
ChromaprintSpectral energy shape (frequency bands)Re‑encoded tracks, different bitrates, format conversionsLower = stricter
Essentia HPCPHarmonic pitch class content (musical notes)Cover versions, live recordings, harmonic similarityHigher = stricter (inverted)
Meyda MFCCTimbral texture (spectral envelope)Speech, podcasts, voice memos, sound effectsLower = stricter

The key insight: HPCP extracts a 12‑element Harmonic Pitch Class Profile from each frame—one bin for each semitone of the chromatic scale (C, C#, D, D#, E, F, F#, G, G#, A, A#, B). It measures how strongly each note is present in the audio at each moment. Two recordings of the same chord progression will activate the same pitch class bins, regardless of instrument. A cover version on piano and the original on guitar produce near‑identical HPCP profiles because they’re playing the same notes.


How the algorithm works: a deep dive

Let’s walk through exactly what happens when you scan a folder with Essentia HPCP.

Step 1: Load Essentia.js WASM

Before any file is processed, Sakarto initialises the Essentia.js WebAssembly module. This downloads the WASM binary from CDN and compiles it in the browser. The process takes 1–4 seconds and happens once per session. The progress bar stays at 0% until initialisation completes. The WASM is cached after first load, so subsequent visits are faster.

Step 2: Decode each audio file at 44,100 Hz

Each file is decoded using AudioContext.decodeAudioData() at the native 44,100 Hz sample rate. Only the left channel is used. Files larger than 100 MB are skipped to avoid memory issues.

Step 3: Split into overlapping frames

The decoded audio stream is divided into overlapping 4,096‑sample frames with a 2,048‑sample hop (~50% overlap). At 44,100 Hz, each frame is about 93 ms. More overlap than Chromaprint means finer temporal resolution and more precise harmonic tracking.

Step 4: Extract HPCP via Essentia’s hpcpExtractor()

For each frame, Essentia’s built‑in hpcpExtractor(frame, sampleRate, false) method computes a 12‑element Harmonic Pitch Class Profile. This maps the frequency spectrum to the 12 semitones of the chromatic scale, measuring how strongly each pitch class is present. The output is essentially a chord fingerprint for that moment in time.

Step 5: Store the full HPCP sequence

One 12‑element vector is produced per frame. A 3‑minute song at hop 2,048 produces roughly 3,800 vectors. The full sequence is stored in memory for comparison. This uses more RAM than a compact hash, but captures harmonic progression over time rather than just an average.

Step 6: Compare using cosine similarity

To compare two files, their HPCP sequences are aligned (using the shorter length) and the average cosine similarity is computed frame by frame. Cosine similarity measures the angle between two vectors; a score of 1.0 means identical harmonic content; 0.0 means completely orthogonal. If the average meets or exceeds the threshold set by the slider, the files are grouped as duplicates.

A duration pre‑check rejects pairs where one file is shorter than 50% of the other. This prevents a short snippet from matching a full track simply because they share a few chords.


What Essentia HPCP finds well

Type of duplicateHow well it worksWhy
The same track at different bitrates (320k vs 128k MP3)✅ ExcellentBitrate changes affect audio quality but not harmonic content.
Lossless vs. lossy exports of the same master (WAV vs MP3)✅ Very GoodHarmonic structure is preserved even when compression discards data.
Cover versions with the same chord progressionExcellentIdentical notes = similar HPCP vectors regardless of instrument.
Transposed recordings (same song, different key)Very GoodHPCP bins shift with transposition but maintain relative structure.
Different arrangements sharing the same harmonic structureGoodSame chord progression = similar HPCP profile.
Re‑mastered versions with similar harmonic content✅ GoodHarmonic content is unchanged by mastering.
Heavily distorted or processed recordings⚠️ May struggleDistortion adds harmonic noise that changes HPCP patterns.
Very short clips (under ~15 seconds)⚠️ May struggleLess data = less reliable matching.
Atonal or noise‑based music❌ PoorNo clear pitch classes to extract.
Spoken word, podcasts, sound effects❌ PoorNo harmonic pitch content. Use Meyda MFCC instead.

Understanding the similarity threshold slider

The Similarity Threshold slider (50–95) controls how strictly two HPCP profiles must match to be grouped as duplicates. Higher values are stricter—cosine similarity of 1.0 means a perfect match. This is the opposite direction from the Hamming threshold sliders in Chromaprint.

Threshold rangeWhat it doesWhen to use
81–95 (Very strict)Only nearly identical harmonic profiles match. Very few false positives.Finding exact duplicates and same‑master re‑exports.
66–80 (Balanced)Catches cover versions, different‑bitrate re‑encodes, and transposed recordings.Default and recommended. The default of 75 is a good starting point for most music libraries.
50–65 (Loose)Groups files sharing broad harmonic character—same key, same genre, similar chord patterns.If you’re missing duplicates with significant harmonic variation. Expect false positives.

Tip: Start at 75. If you’re seeing unrelated songs grouped together (false positives), raise the threshold toward 80–85. If expected duplicates are not appearing, lower it toward 65–70.


How to use Essentia HPCP: step by step

Step 1: Wait for Essentia.js WASM to load

When the page opens, Essentia.js loads from CDN and compiles in the background. If you click Select Folder while it’s loading, the scanner waits—the progress bar stays at 0% until initialisation completes. This takes 1–4 seconds on a fast connection and happens once per session.

Step 2: Select a folder to scan

Go to the Essentia HPCP duplicate finder page. Click 📁 Select Folder to Scan or drag and drop a folder onto the page. Supported formats: MP3, WAV, FLAC, OGG, M4A, AAC. Files over 100 MB are skipped. Non‑audio files are silently ignored.

Tip: HPCP extraction is slower than Chromaprint (2–5 seconds per track). For very large libraries, scan subfolders or consider using Chromaprint for a first pass.

Step 3: Wait for the scan to run

A progress bar shows how many files have been processed. HPCP extraction at 44,100 Hz is more computationally intensive than Chromaprint’s 11,025 Hz spectral hashing. Duplicate groups appear live as they’re found—you don’t have to wait for the full scan to finish before reviewing results.

Click Stop at any time to halt the scan. Results found so far remain visible.

Step 4: Adjust the similarity threshold

After scanning, use the Similarity Threshold slider to control matching sensitivity. Moving the slider re‑groups all already‑processed HPCP sequences instantly—no re‑scanning is needed.

  • Start at the default of 75 (balanced—good for cover versions and bitrate differences)
  • Raise to 80–85 if you see false positives (unrelated songs grouped)
  • Lower to 65–70 if expected duplicates are not appearing

Step 5: Review the duplicate groups

Results appear in numbered groups. Each group contains audio files that the algorithm considers harmonically similar. Use the built‑in players to listen to each file before making decisions.

  • Click a card to select it (blue border)
  • Ctrl+Click (Cmd+Click on Mac) to add to the compare list (purple border)
  • Click the 🔍 icon on hover to open a full‑screen preview with the modal‑size player
  • Right‑click any card for the context menu
  • Click & drag on empty space to box‑select multiple cards

Step 6: Listen and compare

Use the custom audio player on every card:

  • ▶ Play — starts playback, pauses all other tracks on the page
  • Progress bar — click to seek, drag to scrub
  • 🔊 / 🔇 — mute/unmute this individual track
  • Time display — shows current position / total duration

Ctrl+Click two or more cards, then click ⚖️ Compare in the toolbar. A modal opens showing each file with its own modal‑size player, file metadata (duration, size, type, path), and a similarity percentage. For 3+ files, a full pairwise similarity matrix is shown.

Step 7: Take action—Move, Delete, or Copy

Select files and use the toolbar buttons. With Queue Mode on (recommended), files are staged for review first:

  • 📋 Copy — copy filename(s) to clipboard
  • 📂 Move — stage for move to Audio‑Duplicates folder
  • 🗑️ Delete — stage for permanent deletion
  • ⚖️ Compare — view and listen side‑by‑side

Warning: Deletions are permanent. The File System Access API bypasses the recycle bin. Always use Queue Mode to review before executing. There is no undo.

Step 8: Execute queued actions

Queue Mode (enabled by default) stages files instead of acting immediately. Switch to the Move Queue or Delete Queue tab in the sidebar. Review the queued files, listen to them, remove any you change your mind about, then click Move All Files or Delete All Files to execute.

The default destination folder for Move is Audio‑Duplicates, created inside the scanned folder. You can rename it in the queue input field.


When to use Essentia HPCP vs. the other 2 audio algorithms

Sakarto gives you three audio algorithms for a reason—each one handles a different type of duplication problem. Here’s when to pick Essentia HPCP over the others:

Chromaprint — spectral fingerprinting for re‑encoded tracks

Chromaprint is pure‑JavaScript spectral fingerprinting. It captures the overall “shape” of sound—which frequency bands are louder than others. It finds re‑encoded tracks, different bitrates, and format conversions with no CDN dependencies.

Use Essentia HPCP instead: You’re looking for cover versions, live recordings, or alternate arrangements of the same song. Chromaprint measures how the sound is shaped; Essentia measures which notes are being played.

Meyda MFCC — timbral texture for speech

Meyda MFCC extracts Mel‑Frequency Cepstral Coefficients—originally developed for speech recognition. It captures timbral texture (the “colour” of sound) and only analyses the first 10 seconds of each file.

Use Essentia HPCP instead: You’re working with music, not speech. HPCP is specifically designed for pitched musical content and captures harmonic structure that Meyda’s timbral texture approach misses.

Essentia HPCP — harmonic fingerprinting for music

Essentia HPCP is the specialist for music‑to‑music comparison. It extracts Harmonic Pitch Class Profiles using the Essentia.js WASM library, capturing which musical notes are present at each moment. It finds covers, live recordings, and any two performances that share harmonic content.

Use Essentia HPCP when: You want to find different versions of the same song—covers, live recordings, alternate studio takes, or transpositions. It’s the only algorithm that handles these cases reliably.


Algorithm quick reference

AlgorithmBest forWhat it measuresExternal libraryThreshold directionSpeed
ChromaprintRe‑encoded tracks, different bitrates, format conversionsSpectral band energy shapeNone—pure JSLower = stricterFastest
Essentia HPCPCover versions, live recordings, harmonic similarityMusical pitch class contentEssentia.js (CDN)Higher = stricter (inverted)Moderate
Meyda MFCCSpeech, podcasts, voice memos, sound effectsTimbral texture (spectral envelope)Meyda.js (CDN)Lower = stricterFast

Privacy: your files never leave your device

Like every Sakarto tool, the Essentia HPCP audio duplicate finder runs entirely in your browser:

  • Only the Essentia.js library loads from the network. Three script files are loaded from cdn.jsdelivr.net at page load. After that, all audio decoding and HPCP computation run locally. Open DevTools → Network tab during a scan: zero outbound requests to any server.
  • No accounts, no cookies, no analytics. The only localStorage data is your Queue Mode preference. No file names, paths, or HPCP data are ever saved or transmitted.
  • Folder access is scoped and session‑only. Permission covers only the folder you selected, lasts only while the tab is open, and can be revoked from browser site settings at any time.
  • Purely static—no backend. Sakarto is HTML, CSS, and JavaScript. There is no server‑side component, database, or API endpoint receiving any data from you.

Frequently asked questions (Essentia HPCP specific)

“The progress bar is stuck at 0% and nothing is scanning. What’s happening?”

Sakarto is waiting for the Essentia.js WebAssembly module to download and compile. This normally takes 1–4 seconds on a fast connection. If it takes more than 15 seconds, the most likely cause is a firewall or ad‑blocker blocking requests to cdn.jsdelivr.net. Try disabling your ad‑blocker for this page, or open DevTools → Network and look for a blocked or failed request to Essentia. If the CDN is unreachable on your network, switch to Chromaprint—it’s pure JavaScript, has no CDN dependency, and works completely offline.

”Why is Essentia’s threshold inverted? Higher = stricter feels backwards.”

Chromaprint and Meyda measure distance (how different two fingerprints are), so lower threshold = fewer differences allowed = stricter. Essentia HPCP measures cosine similarity (how similar two HPCP vectors are), which is a value between 0 and 1 where 1 means identical. So a threshold of 0.9 means “the two files must be at least 90% harmonically similar”—very strict. A threshold of 0.5 means “accept anything 50% or more similar”—loose. The slider direction is different, but the logic is the same: move the slider toward strict to reduce false positives, loosen it to catch more approximate matches.

”The same song in MP3 and FLAC isn’t being grouped. Why?”

Try lowering the Similarity Threshold slider toward 0.65–0.70. Lossless and lossy formats differ slightly in harmonic content because MP3 compression can alter the spectral envelope even though the music sounds the same to the ear. A threshold of 0.65–0.75 usually catches lossless vs. lossy pairs. Also confirm both files have similar duration—the duration pre‑check silently excludes pairs where one file is shorter than 50% of the other.

”Can Essentia HPCP find cover versions? How well does it work?”

Yes—this is HPCP’s core strength and what distinguishes it from Chromaprint and Meyda. A cover version that shares the same chord progression and melody will produce a similar 12‑bin chroma profile regardless of what instrument performs it or how it was recorded. At threshold 0.65–0.75 you can reliably detect covers, live recordings, and alternate studio takes of the same song. Heavily rearranged covers or remixes with significantly different chord structures may score lower and require a threshold of 0.55–0.60 to appear. Always listen before deleting—songs in the same key with similar chord progressions can occasionally match even when they’re different compositions.

”Two different songs are being grouped together. How do I fix it?”

Raise the Similarity Threshold slider (remember: higher = stricter for Essentia). At low threshold values, songs sharing a key or similar chord progressions can score high enough to appear as matches even when they’re completely different compositions. Pop songs in C major, for example, often share enough harmonic content that their HPCP vectors are closer than you’d expect. Try raising the threshold to 0.80–0.85 if false positives are common. Always use the built‑in player to audition both tracks before taking action.

”Why is scanning slower than Chromaprint?”

HPCP extraction at 44,100 Hz is more computationally intensive than Chromaprint’s 11,025 Hz spectral hashing. Each frame requires computing a full FFT and mapping it to 12 pitch class bins. A typical 3‑minute track takes 2–5 seconds. Add 1–4 seconds on first use for the WASM module to load and JIT‑compile—this happens once per session and then stays cached. Closing other browser tabs frees up CPU and significantly speeds up scanning. Unlike video scanning, audio processing continues fully in the background regardless of tab focus.

”What exactly is a Harmonic Pitch Class Profile, and why is it better for music than spectral fingerprinting?”

A Harmonic Pitch Class Profile (HPCP) is a 12‑element vector—one bin for each musical pitch class (C, C#, D, D#, E, F, F#, G, G#, A, A#, B)—that measures how strongly each note is present in a frame of audio. Two recordings of the same song will activate the same pitch class bins in similar proportions, regardless of what instrument is playing or how the audio was recorded. Chromaprint by contrast compares raw frequency band energy, which changes dramatically when the instrument changes. HPCP is instrument‑agnostic; spectral fingerprinting is not. That’s why HPCP finds covers and alternate recordings while Chromaprint misses them.

”Does Essentia HPCP work for speech, podcasts, or sound effects?”

Poorly—HPCP was designed for pitched musical content and extracts harmonic structure that simply doesn’t exist in speech or non‑pitched sounds. A podcast episode analysed with HPCP will produce a chroma vector dominated by noise rather than musical notes, making comparison unreliable. For speech, podcasts, and voice memos, use Chromaprint (good spectral match for re‑encoded speech) or Meyda MFCC (specifically designed for timbral texture and is the standard in speech recognition research). For sound effects, Meyda MFCC is the better choice.

”Does this work on Firefox or Safari?”

Scanning, HPCP extraction, the built‑in player, result display, and the Compare modal all work in Firefox and Safari. The limitation is Move and Delete, which require the File System Access API (Chrome 86+ and Edge 86+ only). In Firefox and Safari, scan and review results normally, then use Download List to export a report and manage files manually in your OS file manager.


Final thoughts

Essentia HPCP is the algorithm you reach for when you need to find music that is harmonically similar rather than spectrally identical. It’s not for finding re‑encoded tracks—Chromaprint is faster and more reliable for that. It’s not for matching speakers by voice—Meyda MFCC is better for timbral texture. But for cover versions, live recordings, alternate studio takes, and any two recordings that share the same chord progression, Essentia HPCP is the only algorithm that reliably works.

It’s particularly effective for:

  • Cover versions. The same song performed by different artists.
  • Live recordings. Studio versions vs. live performances.
  • Transpositions. The same song in different keys.
  • Alternate arrangements. Acoustic versions, orchestral versions, remixes with similar chord structures.
  • Harmonic similarity across a collection. Finding songs that share the same chord progressions.

Where Essentia HPCP falls short—speech, sound effects, and non‑harmonic audio—other Sakarto algorithms fill the gap. Use Chromaprint for spectral matching and Meyda MFCC for timbral texture.

But for harmonic similarity in music, Essentia HPCP is the tool that finds the duplicates the others miss.

Ready to find harmonically similar audio files?

March 15, 2026
⏱ 17 min read
🇬🇧 English