Lightweight MIME Type Definitions

A minimal, type-safe collection of common MIME types for Node.js and browser applications. Zero dependencies, full TypeScript support.

npm install mime-types-lite

Features

Everything you need for MIME type handling in a lightweight package

Lightning Fast
Direct object access with zero computation overhead
Type Safe
Full TypeScript support with MimeType type definition
Lightweight
Tiny bundle size, zero dependencies
Universal
Works in Node.js and browsers

Simple API

Import MIME Types

Basic Usagetypescript
import mimeTypesLite from 'mime-types-lite';

// Access MIME types as constants
mimeTypesLite.HTML;        // 'text/html'
mimeTypesLite.CSS;         // 'text/css'
mimeTypesLite.JS;          // 'application/javascript'
mimeTypesLite.PNG;         // 'image/png'
mimeTypesLite.PDF;         // 'application/pdf'
mimeTypesLite.JSON;        // 'application/json'

TypeScript Support

TypeScript Usagetypescript
import mimeTypesLite, { type MimeType } from 'mime-types-lite';

// Type-safe MIME type references
const supportedTypes: MimeType[] = [
  'HTML',
  'CSS',
  'PNG',
  'JPEG',
  'PDF',
];

// Get MIME type string with type safety
const mimeType: string = mimeTypesLite[supportedTypes[0]];
// → 'text/html'

Create Lookup Functions

Custom Lookuptypescript
import mimeTypesLite from 'mime-types-lite';

// Create extension to MIME mapping
const extensionMap: Record<string, string> = {
  'html': mimeTypesLite.HTML,
  'css': mimeTypesLite.CSS,
  'js': mimeTypesLite.JS,
  'png': mimeTypesLite.PNG,
  'pdf': mimeTypesLite.PDF,
};

// Lookup function
function getMimeType(extension: string): string | undefined {
  return extensionMap[extension.toLowerCase()];
}

getMimeType('html');  // 'text/html'
getMimeType('PNG');   // 'image/png'

Use Cases

Common scenarios where mime-types-lite shines

File Upload Validation

import mimeTypesLite from 'mime-types-lite';

const ALLOWED_MIME_TYPES = [
  mimeTypesLite.JPG,
  mimeTypesLite.PNG,
  mimeTypesLite.PDF,
];

function validateUpload(file: File) {
  if (!ALLOWED_MIME_TYPES.includes(file.type)) {
    throw new Error('Invalid file type');
  }
}

Static File Server

import mimeTypesLite from 'mime-types-lite';
import http from 'http';
import fs from 'fs';

const EXTENSION_MAP: Record<string, string> = {
  'html': mimeTypesLite.HTML,
  'css': mimeTypesLite.CSS,
  'js': mimeTypesLite.JS,
  'png': mimeTypesLite.PNG,
};

http.createServer((req, res) => {
  const ext = req.url!.split('.').pop()!;
  const mimeType = EXTENSION_MAP[ext];
  
  if (mimeType) {
    res.setHeader('Content-Type', mimeType);
  }
  
  fs.createReadStream(req.url!).pipe(res);
});

Content-Type Headers

import mimeTypesLite from 'mime-types-lite';

async function sendFile(res: Response, filePath: string) {
  const ext = filePath.split('.').pop()!;
  
  const mimeTypeMap: Record<string, string> = {
    'json': mimeTypesLite.JSON,
    'xml': mimeTypesLite.XML,
    'html': mimeTypesLite.HTML,
  };
  
  const mimeType = mimeTypeMap[ext] || mimeTypesLite.TXT;
  
  return new Response(await readFile(filePath), {
    headers: { 'Content-Type': mimeType }
  });
}

API Response Formatting

import mimeTypesLite from 'mime-types-lite';

// Type-safe MIME type handling
type ApiFormat = 'JSON' | 'XML' | 'HTML';

const FORMAT_MAP: Record<ApiFormat, string> = {
  JSON: mimeTypesLite.JSON,
  XML: mimeTypesLite.XML,
  HTML: mimeTypesLite.HTML,
};

app.get('/export', (req, res) => {
  const format: ApiFormat = req.query.format as ApiFormat;
  res.setHeader('Content-Type', FORMAT_MAP[format]);
  sendExportedData(res, format);
});

Ready to get started?

Try the interactive demo or install mime-types-lite in your project