Overview
A searchable table of 41 hand-picked file-extension to MIME type mappings, covering web standards, images, audio, video, fonts, archives, source code and Office documents. Search by extension or by type, and click either column to copy. Runs entirely offline against a built-in table.
How It Works
Type in the search box - by extension like .json or by type like application/ - and the table filters live on substring matches against both columns. Click any extension or MIME value to copy it. The footer shows how many of the 41 rows match. With an empty search, the full table renders in a scrollable panel.
Step-by-Step Usage Guide
- Type an extension (.pdf) or a MIME fragment (font/) into the search box.
- Read the matching rows - filtering runs on both columns simultaneously.
- Click the extension or MIME value to copy exactly that string for your header or config.
- Clear the search to browse the full 41-row table when you are not sure what type you need.
Technical Specifications & Standards
The table is a curated static list, not a queryable IANA dump, and that shapes when it is the right tool. It covers the extensions that appear in real work: the web core (html, css, js, json, xml, csv, txt, pdf), images (png, jpg, gif, svg, webp, ico, bmp), media (mp4, webm, mp3, ogg), fonts (woff2, ttf), archives (zip, gz, tar), and source languages (py, go, rs, java, kt, swift, ts, sh, sql, graphql, proto, md). A few entries deserve a flag because servers care about exact bytes: the YAML row uses application/x-yaml, the long-common de facto type, rather than the IANA-registered application/yaml that newer tooling emits; x-sh and x-icon are likewise the widely deployed x- forms. When a Content-Type matters - CORS responses, upload validation, defenses against content sniffing - cross-check against the IANA media types registry or your framework's mime database rather than trusting any single table, including this one. The practical use is fast recall during header debugging: searching image/ shows every image mapping at once, which is faster than any registry search.
Targeted Use Cases
- Setting a Content-Type header correctly when a server or CDN defaults to application/octet-stream and breaks rendering.
- Configuring upload validation to accept the right MIME types for images, documents or fonts.
- Checking the type for a font, WASM module or Office document when wiring a new static file server.
- Comparing an API response's Content-Type against what the extension implies during debugging.
Notes & Gotchas
- For anything with interop consequences, verify against the IANA media types registry - this table is a curated convenience, not the authority.
- Prefer the exact type your framework emits; some entries here are the x- legacy forms (application/x-yaml, application/x-sh) that newer tooling may not match.
- Remember MIME type and file extension are conventionally linked, not cryptographically: never trust a declared Content-Type as proof of file content.
- When a download renders instead of saving (or vice versa), the Content-Type and Content-Disposition pair is usually the culprit - check both.
Frequently Asked Questions
Does this cover every registered MIME type?
No. It is a curated table of 41 pairs chosen for everyday web, media, font, archive and source-code work. The IANA registry contains well over a thousand types; use it when you need the authoritative value or an obscure type.
Why does .yaml show application/x-yaml?
The table uses the long-established de facto type. application/yaml has since been registered with IANA, and newer tools emit it - so if a strict comparison fails, check which of the two your counterpart expects before assuming either side is wrong.
Can I look up a MIME type by file content?
No. The tool maps extensions to types and types to extensions by string search. Content-based detection - magic bytes - is a different technique, and a more trustworthy one for validating uploads.
Is the table searchable in both directions?
Yes. The filter matches substrings in either the extension or the MIME type, so typing font/ lists both font rows, and typing .js isolates the JavaScript entry.