This page was created on Tue Mar 07 2017 and last changed on Sat Oct 05 2024.
This page compares CPAN Perl modules which can be used to detect the
mime type of a file. (The mime type is a short string like "image/png",
or "text/html", which is used when sending files over the internet so
that the receiver can work out what kind of file was sent.)
In this section, I show the outputs of the modules on various types of
files. The source code which produces these results is shown
at Test program. The accuracy scores of the
modules are shown at Scores.
If there is an official MIME type for the file type, the results of
the modules which get the MIME type correct are highlighted in
blue. Some of these file types do not have recognised MIME types and
are not highlighted.
Very long C file in UTF-8
File::LibMagic encoding
binary
File::LibMagic mime type
application/octet-stream
File::LibMagic::FFI
application/octet-stream
File::MMagic
text/plain
File::MMagic::XS
text/plain
File::MimeInfo
text/x-csrc
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
text/plain; text/x-csrc
MIME::Detect: from name
text/x-csrc
MIME::Type::FileName
text/x-c
MIME::Types
text/x-csrc
Media::Type::Simple
text/x-csrc
Valid-UTF-8
Yes
Short SVG image file in UTF-8 ("image/svg+xml")
File::LibMagic encoding
us-ascii
File::LibMagic mime type
image/svg+xml
File::LibMagic::FFI
image/svg+xml
File::MMagic
text/plain
File::MMagic::XS
text/xml
File::MimeInfo
image/svg+xml
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
text/plain; application/xml
MIME::Detect: from name
image/svg+xml
MIME::Type::FileName
image/svg+xml
MIME::Types
image/svg+xml
Media::Type::Simple
image/svg+xml
Valid-UTF-8
Yes
GIF image ("image/gif")
File::LibMagic encoding
binary
File::LibMagic mime type
image/gif
File::LibMagic::FFI
image/gif
File::MMagic
image/gif
File::MMagic::XS
image/gif
File::MimeInfo
image/gif
File::Type
image/gif
File::Type::WebImages
image/gif
MIME::Detect: from file
image/gif
MIME::Detect: from name
image/gif
MIME::Type::FileName
image/gif
MIME::Types
image/gif
Media::Type::Simple
image/gif
Valid-UTF-8
No
Binary executable
File::LibMagic encoding
binary
File::LibMagic mime type
application/x-executable
File::LibMagic::FFI
application/x-executable
File::MMagic
application/octet-stream
File::MMagic::XS
application/x-executable
File::MimeInfo
application/octet-stream
File::Type
application/x-executable-file
File::Type::WebImages
undefined
MIME::Detect: from file
MIME::Detect: from name
MIME::Type::FileName
application/octet-stream
MIME::Types
unknown
Media::Type::Simple
no extension
Valid-UTF-8
No
PNG image ("image/png")
File::LibMagic encoding
binary
File::LibMagic mime type
image/png
File::LibMagic::FFI
image/png
File::MMagic
image/png
File::MMagic::XS
image/png
File::MimeInfo
image/png
File::Type
image/x-png
File::Type::WebImages
image/png
MIME::Detect: from file
image/png
MIME::Detect: from name
image/png
MIME::Type::FileName
image/png
MIME::Types
image/png
Media::Type::Simple
image/png
Valid-UTF-8
No
EUC-JP text data
File::LibMagic encoding
iso-8859-1
File::LibMagic mime type
text/plain
File::LibMagic::FFI
text/plain
File::MMagic
text/plain
File::MMagic::XS
text/plain
File::MimeInfo
text/plain
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
text/plain
MIME::Detect: from name
MIME::Type::FileName
application/octet-stream
MIME::Types
unknown
Media::Type::Simple
no extension
Valid-UTF-8
No
JPEG image data ("image/jpeg")
File::LibMagic encoding
binary
File::LibMagic mime type
image/jpeg
File::LibMagic::FFI
image/jpeg
File::MMagic
image/jpeg
File::MMagic::XS
image/jpeg
File::MimeInfo
image/jpeg
File::Type
image/jpeg
File::Type::WebImages
image/jpeg
MIME::Detect: from file
image/jpeg
MIME::Detect: from name
image/jpeg
MIME::Type::FileName
image/pjpeg
MIME::Types
image/jpeg
Media::Type::Simple
image/jpeg
Valid-UTF-8
No
BMP image file ("image/bmp")
File::LibMagic encoding
binary
File::LibMagic mime type
image/x-ms-bmp
File::LibMagic::FFI
image/x-ms-bmp
File::MMagic
image/bmp
File::MMagic::XS
image/x-ms-bmp
File::MimeInfo
image/bmp
File::Type
image/x-bmp
File::Type::WebImages
image/bmp
MIME::Detect: from file
MIME::Detect: from name
image/bmp
MIME::Type::FileName
image/x-windows-bmp
MIME::Types
image/x-bmp
Media::Type::Simple
image/x-ms-bmp
Valid-UTF-8
No
X bitmap (xbm) file
File::LibMagic encoding
us-ascii
File::LibMagic mime type
text/plain
File::LibMagic::FFI
text/plain
File::MMagic
text/plain
File::MMagic::XS
text/plain
File::MimeInfo
image/x-xbitmap
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
text/plain
MIME::Detect: from name
image/x-xbitmap
MIME::Type::FileName
image/xbm
MIME::Types
image/x-xbitmap
Media::Type::Simple
image/x-xbitmap
Valid-UTF-8
Yes
MNG video data
File::LibMagic encoding
binary
File::LibMagic mime type
video/x-mng
File::LibMagic::FFI
video/x-mng
File::MMagic
application/octet-stream
File::MMagic::XS
video/x-mng
File::MimeInfo
video/x-mng
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
video/x-mng
MIME::Detect: from name
video/x-mng
MIME::Type::FileName
application/octet-stream
MIME::Types
video/x-mng
Media::Type::Simple
video/x-mng
Valid-UTF-8
No
Microsoft Office Excel file (old format) ("application/vnd.ms-excel")
File::LibMagic encoding
application/vnd.ms-excelbinary
File::LibMagic mime type
application/vnd.ms-excel
File::LibMagic::FFI
application/vnd.ms-excel
File::MMagic
application/msword
File::MMagic::XS
application/msword
File::MimeInfo
application/vnd.ms-excel
File::Type
application/octet-stream
File::Type::WebImages
undefined
MIME::Detect: from file
application/x-ole-storage
MIME::Detect: from name
application/vnd.ms-excel
MIME::Type::FileName
application/vnd.ms-excel
MIME::Types
application/vnd.ms-excel
Media::Type::Simple
application/vnd.ms-excel
Valid-UTF-8
No
Microsoft Office Word file (old format) ("application/msword")
These scores give the number of times the module got the correct mime
type for the particular file, if there was an authoritative mime type
assigned for that file type. The "hits" are shown with a blue
background above.
Test program
The program I used to compare the modules is this: