MIME Types Table

–type to filter - click any row to copy its exact MIME type
ExtensionMIME typeKind of document
.csvtext/csvComma-separated values (CSV)
.docapplication/mswordMicrosoft Word (legacy)
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentMicrosoft Word (OpenXML)
.gifimage/gifGIF image
.gzapplication/gzipGZip compressed archive
.htm, .htmltext/htmlWeb page
.icstext/calendariCalendar (calendar invite)
.jpeg, .jpgimage/jpegJPEG image
.jstext/javascriptJavaScript (RFC 9239)
.jsonapplication/jsonJSON data
.mdtext/markdownMarkdown
.mp3audio/mpegMP3 audio
.mp4video/mp4MP4 video
.pdfapplication/pdfPDF document
.pngimage/pngPNG image
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentationPowerPoint (OpenXML)
.rarapplication/vnd.rarRAR archive
.rtfapplication/rtfRich Text Format
.svgimage/svg+xmlSVG vector image
.tarapplication/x-tarTAR archive
.txttext/plainPlain text
.wasmapplication/wasmWebAssembly binary
.wavaudio/wavWAV audio
.webmvideo/webmWebM video
.webpimage/webpWebP image
.wofffont/woffWOFF font
.woff2font/woff2WOFF2 font
.xhtmlapplication/xhtml+xmlXHTML page
.xlsapplication/vnd.ms-excelMicrosoft Excel (legacy)
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetMicrosoft Excel (OpenXML)
.xmlapplication/xmlXML (RFC 7303)
.zipapplication/zipZIP archive
Types are verbatim from MDN's common media types table; click a row to copy the exact string an upload allowlist or HTTP header expects. Two Windows traps straight from that table: Windows uploads .zip as the non-standard application/x-zip-compressed and .gz as application/x-gzip, so a strict allowlist can reject an ordinary file. Since RFC 9239 the .js type is text/javascript - application/javascript is deprecated. application/octet-stream means unknown binary, and mail gateways often block it. Bottom line: the three OpenXML vnd strings for docx/xlsx/pptx are the most common upload-rejection cause - one typo and the server says no, so copy them rather than type them. Working with the files behind these types: JSON formatter, byte-level codes ASCII table and Unicode character inspector, transfer sizing download time calculator.

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

  1. Type in the filter box by extension, type, or purpose - "image", "openxml", "zip" - and the table narrows live.
  2. Click any row to copy its exact MIME type, ready for a form allowlist or a Content-Type header.
  3. 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.

Related tools