[][src]Crate tree_magic_fork

tree_magic is a Rust crate that determines the MIME type a given file or byte stream.


tree_magic is designed to be more efficient and to have less false positives compared to the old approach used by libmagic, or old-fashioned file extension comparisons.

Instead, this loads all known MIME types into a tree based on subclasses. Then, instead of checking against every file type, tree_magic will traverse down the tree and only check the files that make sense to check.


  • Very fast perfomance (~150ns to check one file against one type, between 5,000ns and 100,000ns to find a MIME type.)
  • Check if a file is a certain type.
  • Handles aliases (ex: application/zip vs application/x-zip-compressed)
  • Uses system FreeDesktop.org magic files on Linux systems, and built-in magic file on Windows and macOS.
  • Can delegate different file types to different "checkers", reducing false positives by choosing a different method of attack.

Feature flags

cli: Enable building of tmagic binary

staticmime: Change output of all from_* functions from String to &'static str. Disables ability to load system magic files. Slightly faster.


extern crate tree_magic;
// Load a GIF file
let input: &[u8] = include_bytes!("tests/image/gif");

// Find the MIME type of the GIF
let result = tree_magic::from_u8(input);
assert_eq!(result, "image/gif");

// Check if the MIME and the file are a match
let result = tree_magic::match_u8("image/gif", input);
assert_eq!(result, true);



The TypeStruct autogenerated at library init, and used by the library.


Information about currently loaded MIME types



Cache used for each checker for each file



Gets the type of a file from a filepath.


Gets the type of a file from a filepath, starting at a certain node in the type graph.


Gets the type of a file from a raw bytestream, starting at a certain node in the type graph.


Gets the type of a file from a byte stream.


Determines if a MIME is an alias of another MIME


Check if the given filepath matches the given MIME type.


Checks if the given bytestream matches the given MIME type.