This page is about mp3guessenc, a small utility for analyzing audio mpeg
files and detecting the encoder used (when layer III).
Further, it can detect many details about the mpeg audio stream and print out lots of useful
Supported streams are mpeg 1, mpeg 2 and unofficial mpeg 2.5 - layer I, layer II and layer III
Xing tag, lame tag, VBRI tag, Id3 tags (both 1.x and 2.x), APE tags (both v1 and v2), Lyrics3
tags (both v1 and v2) and MusicMatch tag (any version) are detected as well.
Now you can look inside your digital audio collection as you never did before!
There is more to come, so stay tuned!
Please note, however, that most of those information are only available into layer III streams.
- Scan mpeg 1/2/2.5 streams, layer I/II/III
- Full statistics about the stream:
- audio mode
- global gain
- flags (crc, copy protection, original content, emphasis)
- joint stereo frame usage
- long/mixed/short/switch block usage
- ancillary data details
- bit reservoir, scalefactor usage and padding detection
- frame histogram
- Decoding of both Xing/lame and FhG VBRI vbr information tags
- Encoding details from lame tag
- Large file support up to 2^60 bytes (not available in x86 real mode (16 bit!) machines and arm32 architectures, though)
- Support for freeformat bitstreams (up to 640 kbps)
- CRC-16 verification in layer I, II and III
- Validity check in bit allocation block (layer I) and in side information block (layer III)
- Detected encoders:
- xing (new, old and very old)
- fraunhofer encoders (new, old and ancient)
- Enhanced FhG bitstreams recognition: mp3Pro and mp3Surrond with detection of OFL block
- Detection of the following metadata tags:
- ID3v1.0 and ID3V1.1
- ID3v2 (versions 2, 3 and 4)
- APE (both v1 and v2)
- Lyrics3 (both v1 and v2)
- MusicMatch (any versions)
mp3guessenc cannot get the same fine details from mpeg layer I and layer II streams.
Systems mp3guessenc will run on
mp3guessenc is available for POSIX
systems such as Linux
(it is actually developed on
distribution) and recent releases of Haiku
(both gcc2 and gcc4 may be used for the build).
provides mp3guessenc port & package for FreeBSD too.
I successfully built mp3guessenc in both x86 (32 bit) and AMD64 (64 bit) linux environments using
tcc, the Tiny C Compiler.
Also, you will find a ready-to-go Windows(R) command line executable (mp3guessenc.exe) into the tarball,
built using mingw. It is a 32 bit executable and it runs
under ReactOS as well.
Further, a prerelease version of 0.25beta2 builds into a
16 bit executable
and runs pretty well in
thanks to DJGPP
I recently built 0.26 preview for Android
also, and it runs smoothly on my samsung gt-i9100 (equipped with an arm v7 processor) under the geek-ish "Terminal Emulator" app.
This step is pretty straightforward (oh well, you're a dev, aren't you?) using Google's Android NDK.
If you want to feel the breeze, I suggest you to download the latest installer, unpack it and read the docs about Standalone Toolchain,
you will be able to build mp3guessenc for your preferred device using both gcc and
Last, (atm) mp3guessenc has no dependencies.
Screenshot1 - Screenshot2
- Screenshot3 - Screenshot4
Here you can download the latest release of mp3guessenc.
2016/12/15, "Ancient Melodies Enchanting Lightnings Into Art"
More messy files analyzed, more coherency checks, more crc16, more reliability, MORE SPEED!!!
2016/12/14, "Dark Black"
- mp3guessenc-0.26.2 (107.8 kb)
Fix-only release with the only relevant change of a misplaced reference operator, now gone.
- mp3guessenc-0.26.1 (104.8 kb)
Detection of mp3 streams wrapped into Wave Riff, ID3v2.4 may be found at the file tail also, various fixes (also speed related).
2016/01/17, "Hotel Torino"
- mp3guessenc-0.26 (125.1 kb)
More and more tags detected and better Android support.
My mistake, the MS Windows executables shipped into this tarball were built using a non-tested build environment, and they need a further dll (msys-2.0.dll) to run properly. I re-built the whole thing and re-packaged them into a new tarball for those who care. No changes in source code, so if you aren't a MS Windows user, there's no need to download this again.
2015/02/19, "Let It Snow"
- mp3guessenc-0.26preview (109 kb)
More tags detected, Blade encoder detected and (clap, please) command line options!
2014/07/16, "25 Days A Stranger"
- mp3guessenc-0.25.2 (101 kb)
Still a few more ancillary bits came to the analysis call. Furthermore, prepare for an impressive speed gain as you didn't see in the last two years!
2014/04/28, "Fuori Dal Tempo"
- mp3guessenc-0.25.1 (98 kb)
Extended analysis to the last broken frame of the stream, more accuracy in ancillary detection (and there's a recently added screenshot too!).
UPDATE! The tarball was replaced due to a last minute critical bug fix! If you got it within 24 hours from release time, I recommend you to update!
- mp3guessenc-0.25.0 (84.2 kb)
Small fix, source cleanup.
- mp3guessenc-0.25beta2 (84.2 kb)
Added encoder delay and original file length for fraunhofer-encoded streams, several minor fixes
"Please Please Please Let Me Release What I Want"
- mp3guessenc-0.25beta1 (82.6 kb)
Support for audio mpeg files up to 2^60 bytes (!!!), APE tag v1/v2 are now recognized, detection of
mp3Surround (here the site on the Wayback Machine) and mp3PRO streams
"Owner Of A Lonely Release"
- mp3guessenc-0.25alpha24 (64.6 kb)
Finally updated the guessing engine, support for freeformat streams is now
waaay better and (I hope) complete - lots of bug-fixes, as usual
"Sparrow's Nightmare" Haiku Powered
Added compatibility with Haiku R1 alpha3 (here's a
patch against previous v0.25-a23)
2012/04/21, "Sparrow's Nightmare"
Less warnings during analysis and more compatibility with layer III
2012/01/16, "70 Years Are Not Enough"
- mp3guessenc-0.25alpha22 (48.1 kb)
Free format bitstreams are now supported, new calculation for framesize
now brings great speed gain
2011/12/26, "Smells Like Release Spirit"
- mp3guessenc-0.25alpha21 (44.0 kb)
This release fixes a buffer overflow, fixes printed information and
adds a Makefile
2011/11/30, "A Release With No Name"
- mp3guessenc-0.25alpha20 (44.2 kb)
This release brings code optimizations, an enriched frame histogram and
compliancy with latest lame tags
- mp3guessenc-0.25alpha19 (24.6 kb)
Added workaround for a random appearing stack smashing error
(I can't remember when it came)
- mp3guessenc-0.25alpha18 (23.3 kb)
Reworked the code for extracting lame string
until 2011/03/04 (the code itself prints alpha 15)
- mp3guessenc-0.25alpha (40.3 kb)
Beginning of the journey... Added support for VBR tags and lame tag,
better support for id3v1/id3v2 tags, added lots of comments, fixed
compiler warnings, added early support for all layers (I/II/III),
string alignment, small code modifications and more, more, more...
(guess what? larger packages include win32 executable built using mingw)
You can browse all mp3guessenc releases here.
Full changelog is available here.
Lots of internet docs and technical details I've read before putting my hands into mp3guessenc.
Of course there is also some stuff you can download.
In early months of 2011 I stumbled upon this small utility, released back in
2002 by Naoki
Shibata. I enjoyed it very soon. I realized the code was fully
functional and reliable, nevertheless it offered room for improvements.
I made several small and tiny modifications and, after receiving
Naoki's agreement, I took over the task (and fun) to update the whole
The project has now its custom page on
mp3guessenc is released under the
GNU Lesser General Public License, version 2.1.
Contribute to the project!
Found a bug?
A challenging file?
Looking for usage guidelines?
Wrote a useful patch?
Great ideas for new features?
Ask your questions and support the development on
the project ticket page.
|project hosting by
|page authored by