MIME Types Table
| Extension | MIME type | Kind of document |
|---|---|---|
| .csv | text/csv | Comma-separated values (CSV) |
| .doc | application/msword | Microsoft Word (legacy) |
| .docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document | Microsoft Word (OpenXML) |
| .gif | image/gif | GIF image |
| .gz | application/gzip | GZip compressed archive |
| .htm, .html | text/html | Web page |
| .ics | text/calendar | iCalendar (calendar invite) |
| .jpeg, .jpg | image/jpeg | JPEG image |
| .js | text/javascript | JavaScript (RFC 9239) |
| .json | application/json | JSON data |
| .md | text/markdown | Markdown |
| .mp3 | audio/mpeg | MP3 audio |
| .mp4 | video/mp4 | MP4 video |
| application/pdf | PDF document | |
| .png | image/png | PNG image |
| .pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation | PowerPoint (OpenXML) |
| .rar | application/vnd.rar | RAR archive |
| .rtf | application/rtf | Rich Text Format |
| .svg | image/svg+xml | SVG vector image |
| .tar | application/x-tar | TAR archive |
| .txt | text/plain | Plain text |
| .wasm | application/wasm | WebAssembly binary |
| .wav | audio/wav | WAV audio |
| .webm | video/webm | WebM video |
| .webp | image/webp | WebP image |
| .woff | font/woff | WOFF font |
| .woff2 | font/woff2 | WOFF2 font |
| .xhtml | application/xhtml+xml | XHTML page |
| .xls | application/vnd.ms-excel | Microsoft Excel (legacy) |
| .xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Microsoft Excel (OpenXML) |
| .xml | application/xml | XML (RFC 7303) |
| .zip | application/zip | ZIP archive |
Every upload form, email attachment, and HTTP response carries a MIME type - and servers reject files when the type misses their allowlist. This table holds the 32 types that cover virtually all real traffic, verbatim from MDN’s common media types reference: filter to find yours and click the row to copy the exact string.
The killer rows are the OpenXML office formats: application/vnd.openxmlformats-officedocument.wordprocessingml.document is what a .docx actually is - one mistyped token and the upload fails, which is why the rows are copy-on-click.
How to use
- Type in the filter box by extension, type, or purpose - "image", "openxml", "zip" - and the table narrows live.
- Click any row to copy its exact MIME type, ready for a form allowlist or a Content-Type header.
- Watch the Windows traps: Windows uploads .zip as application/x-zip-compressed and .gz as application/x-gzip, both non-standard.
Frequently asked questions
Why is my .docx or .xlsx upload rejected?
The server’s allowlist almost certainly contains the full OpenXML string - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for .xlsx, for example - while the browser sent either the legacy .xls type or a near-miss of the 60-character vnd string. Copy the exact row above rather than retyping it.
Is JavaScript’s MIME type application/javascript?
Not anymore - RFC 9239 moved scripts to text/javascript, and MDN’s table now lists text/javascript for .js and .mjs. application/javascript is deprecated, and serving it can trip strict MIME checks on module scripts.
What is application/octet-stream and why do mail servers block it?
It means "unknown binary data" - the fallback when nothing better applies. Because any executable can hide behind that label, mail gateways and corporate filters frequently reject it; send files with their true type instead.
Does text/csv need a charset?
The default charset for text types is US-ASCII. If your CSV carries UTF-8 names or accents, declare text/csv; charset=utf-8 in the header - and know that some upload endpoints strip parameters, so non-ASCII CSV can still arrive scrambled.