MIME Database

1.54.0 · active · verified Tue Apr 21

mime-db is a comprehensive, machine-readable database of media types and associated metadata. It aggregates data from official sources such as IANA, Apache, and nginx, providing detailed information including common file extensions, compressibility, and default charsets for thousands of MIME types. The current stable version is 1.54.0. The package maintains a frequent release cadence, primarily driven by updates to its upstream data sources and community contributions for custom types. A key differentiator is its minimalist approach: it is distributed as a pure JSON data file with no accompanying logic or API, making it lightweight and un-opinionated. This design ensures maximum flexibility, although consumers must implement their own lookup logic. Crucially, changes to the underlying MIME type data are *not* considered breaking changes under its semver policy for the programmatic API, meaning data can change between minor or patch versions.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates importing the mime-db and accessing information for specific MIME types. It also includes example logic for reverse lookup by extension, showing common usage patterns.

import db from 'mime-db';

interface MimeEntry {
  source?: 'apache' | 'iana' | 'nginx';
  extensions?: string[];
  compressible?: boolean;
  charset?: string;
}

// Access the entire database
console.log(`Total MIME types in database: ${Object.keys(db).length}`);

// Get data for a specific MIME type
const javascriptData: MimeEntry = db['application/javascript'];
if (javascriptData) {
  console.log(`
Information for application/javascript:
  Source: ${javascriptData.source ?? 'custom'}
  Extensions: ${javascriptData.extensions?.join(', ') ?? 'N/A'}
  Compressible: ${javascriptData.compressible ? 'Yes' : 'No'}
  Charset: ${javascriptData.charset ?? 'N/A'}
`);
}

// Find MIME types by extension (example logic, not built-in)
const findMimeTypeByExtension = (ext: string): string[] => {
  const matchingTypes: string[] = [];
  for (const mimeType in db) {
    if (db[mimeType].extensions?.includes(ext.toLowerCase())) {
      matchingTypes.push(mimeType);
    }
  }
  return matchingTypes;
};

const htmlMimeTypes = findMimeTypeByExtension('html');
console.log(`MIME types associated with '.html': ${htmlMimeTypes.join(', ')}`);

view raw JSON →