How to save BPM values inside ID3 tags

Saving BPM to metadata is a vital function of any music tempo analyzer. Of course, you can memorize the tempo of a couple of your favorite tracks, but doing so for a huge audio collection is problematic. Running track-by-track analysis every time is not an option either. You need a reliable way to save BPM for each song, which will be supported by all music software. Fortunately, most popular audio tag formats have built-in BPM support, which allows smooth data exchange between different applications and even between different operating systems.

Let's start with the most common format ID3v2, which is used in MP3 files. In the latest ID3v2 specification there are 84 types of frame, and applications can also define their own types. There are standard frames for containing BPM values. BPM detector can add or update standard BPM frame. With that done, it's a simple matter of sorting your music library by the beats-per-minute field.

The WAV format is much more complicated. The RIFF standard does not provide standard fields for BPM, so each program can use its own, custom field, not compatible with the others. Another option is to save ID3 tags inside the WAV files. Although this option is not the most popular, it is still supported by a limited number of software and guarantees compatibility.

The BPM is an integer and represented as a numerical string according ID3 standard. Many customers required better accuracy, so we decided to use a floating point values. Most audio software will ignore decimal values, but if you have compatibility issues you can set the number of decimal digits to zero in BPM Counter options.