Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for an audio file equivalent to ImageMagick's identify command.

For example, with identify, I can get brief information about a bunch of images:

% identify b*
banner1.jpg JPEG 134x614 134x614+0+0 8-bit DirectClass 38.4kb 
banner.jpg[1] JPEG 772x307 772x307+0+0 8-bit DirectClass 37.5kb 
bg2.jpg[2] JPEG 103x1500 103x1500+0+0 8-bit DirectClass 43kb 
bg_control_nav.png[3] PNG 13x39 13x39+0+0 8-bit DirectClass 1.73kb 
bg_direction_nav.png[4] PNG 104x52 104x52+0+0 8-bit DirectClass 3.3kb 

I would like to get similar information about my audio files.

My eventual goal is to create a script to go through my whole mp3 library and identify those ripped at lower bitrates and then use that data to re-rip my CDs (or purchase better quality versions from Amazon or iTunes).

Solutions for OS X/Linux preferred to Windows solutions

share|improve this question
And another one: MediaInfo – slhck Jun 21 '12 at 18:46
up vote 8 down vote accepted

On OS X you might just use mdls or mdfind.

$ mdls 01\ Kindred.mp3 
kMDItemAlbum                   = "Kindred EP"
kMDItemAudioBitRate            = 320000
kMDItemAudioChannelCount       = 2
kMDItemAudioSampleRate         = 44100
kMDItemAudioTrackNumber        = 1
kMDItemAuthors                 = (
kMDItemComment                 = "HDB059"
kMDItemContentCreationDate     = 2012-03-19 21:20:59 +0000
kMDItemContentModificationDate = 2012-06-04 16:07:09 +0000
kMDItemContentType             = "public.mp3"
kMDItemContentTypeTree         = (
kMDItemDateAdded               = 2012-04-02 19:49:07 +0000
kMDItemDisplayName             = "01 Kindred.mp3"
kMDItemDurationSeconds         = 686.08
kMDItemFSContentChangeDate     = 2012-06-04 16:07:09 +0000
kMDItemFSCreationDate          = 2012-03-19 21:20:59 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "01 Kindred.mp3"
kMDItemFSNodeCount             = 27457838
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 27457838
kMDItemFSTypeCode              = ""
kMDItemKind                    = "MP3 audio"
kMDItemLogicalSize             = 27457838
kMDItemMediaTypes              = (
kMDItemMusicalGenre            = "Dubstep"
kMDItemPhysicalSize            = 27459584
kMDItemRecordingYear           = 2012
kMDItemTitle                   = "Kindred"
kMDItemTotalBitRate            = 320000

mdfind -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'

share|improve this answer
Upvotes for all answers so far, but this one gets the checkmark because (a) it's native to OS X and (b) uses existing spotlight metadata info and that mdfind command is crazy fast. – Doug Harris Jun 21 '12 at 17:35
Combining both and producing a list of album names with substandard bit rates: mdfind -0 -onlyin ~/Music 'kMDItemFSName==*.mp3&&kMDItemAudioBitRate<=192000'| xargs -0 mdls -name kMDItemAlbum | sort | uniq – Doug Harris Jun 21 '12 at 18:39

EDIT: just found a Linux program

Under Linux, mp3info:

mp3info -p "%Q %L %v %o %r" test.mp3
48000 III 1.000000 joint stereo

I know you want a Linux solution; however, by the way you stated your question, it sounds like a Windows solution is not completely out...

Under Windows, tag.exe will do the job.


C:\mp3>tag.exe "test.mp3"
Tag - Automatic Tag from filename
Copyright (c) 2002-2003 Case.  Minor additions by Neil Popham, 2004-2007
Version 2.0.52, Compiled 2007-05-04

Format:  MPEG 1 Layer 3, Joint Stereo
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
Tag:     ID3v2

To just get the bitrate:

C:\mp3>tag.exe "test.mp3" 2>&1 | findstr /i "Details:"
Details: 44100 Hz Stereo, 128 kbps, playtime 05:24
share|improve this answer

For easy to parse output, try ffprobe -show_format 2>/dev/null from FFmpeg.

On OS X, you can install it through Homebrew via brew install ffmpeg.

$ ffprobe *.mp3 -show_format 2>/dev/null
filename=02. Salvadoro Dali.mp3
format_long_name=MPEG audio layer 2/3
TAG:title=Salvadoro Dali
TAG:genre=Gothic rock
TAG:replaygain_track_gain=-9.00 dB
TAG:replaygain_album_gain=-9.12 dB

In a script:

find -iname '*.mp3' | while read -r file; do
    bitrate=$(ffprobe "$file" -show_format 2>/dev/null |
              awk -F"=" '$1 == "bit_rate" {print $2}')
    if (( bitrate <= 128000 )); then
        echo "[$bitrate] $file"
share|improve this answer

mp3info was developed under Linux, but should work on most UN*X variants. ... MP3Info can also display various techincal aspects of an MP3 file including playing time, bit-rate, sampling frequency and other attributes in a pre-defined or user-specifiable output format.


MP3::Info - Manipulate / fetch info from MP3 audio files


  perl -MMP3::Info \
       -e 'print ($_, ": ",MP3::Info->new($_)->bitrate, "\n") for (@ARGV)' *.mp3


share|improve this answer

ffprobe is your friend (also you can use avconv, mplayer; all of them return media info, but ffprobe just returns the info you need)

With stream:



Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 31 kb/s

With local file:

ffprobe some_file.mp3 


encoder         : LAME 64bits version 3.99.5
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .