#mime #extension #media-types #filesystem #no-std

no-std mime2ext

Given a mimetype, suggest a file extension

9 releases

Uses old Rust 2015

0.1.52 Feb 21, 2022
0.1.51 Nov 9, 2021
0.1.50 Sep 16, 2021
0.1.49 Aug 1, 2021
0.1.1 Feb 15, 2021

#129 in Filesystem

Download history 166/week @ 2023-02-02 261/week @ 2023-02-09 490/week @ 2023-02-16 342/week @ 2023-02-23 245/week @ 2023-03-02 415/week @ 2023-03-09 257/week @ 2023-03-16 386/week @ 2023-03-23 253/week @ 2023-03-30 272/week @ 2023-04-06 219/week @ 2023-04-13 146/week @ 2023-04-20 804/week @ 2023-04-27 4593/week @ 2023-05-04 4434/week @ 2023-05-11 2228/week @ 2023-05-18

12,097 downloads per month
Used in 6 crates (3 directly)

MIT license

175 lines


Crates.io API reference MSRV CI

A simple crate to look up a file extension for a mime type.

It embeds part of the mime-db database, packed efficiently into around 20 KiB. There are no dependencies, and it's no_std-compatible.

It was created for xh, which does at most one lookup per run. It prioritizes a small size over a high speed, but it should nevertheless be fast enough for most purposes.


use mime2ext::mime2ext;

assert_eq!(mime2ext("image/png"), Some("png"));
assert_eq!(mime2ext("application/octet-stream"), Some("bin"));
assert_eq!(mime2ext("text/html; charset=UTF-8"), Some("html"));
assert_eq!(mime2ext("nonexistent/mimetype"), None);
assert_eq!(mime2ext("invalid-mimetype"), None);

Interoperability with mime

mime's Mime type is supported through its implementation of AsRef<str>, without any dependency on the crate:

use mime::{Mime, TEXT_PLAIN};
use mime2ext::mime2ext;

assert_eq!(mime2ext(TEXT_PLAIN), Some("txt"));
let mime: Mime = "text/xml; charset=latin1".parse()?;
assert_eq!(mime2ext(&mime), Some("xml"));


mime2ext includes a static version of mime-db. A new version of mime2ext has to be released for each new version of mime-db.

mime2ext's version number tracks that of mime-db. mime2ext version 0.1.49 corresponds to mime-db version 1.49.0.

See CHANGELOG.md for differences between versions, including relevant changes to mime-db.


Both mime2ext and mime-db are licensed under the MIT license. See LICENSE and mime-db/LICENSE.

See also

  • mime_guess, which mainly converts in the opposite direction. It can also convert mime types to extensions but often suggests rarely-used extensions.

No runtime deps