Hanapan ng MIME Type

[ MIME TYPES ]
49
Maghanap ayon sa extension, type o pangalan.
Nakalistang type49
Kailangan ng charset8
Tumutugma49
.htmltext/html; charset=utf-8

HTML document

Nakikita rin bilang application/xhtml+xml

Serve with charset=utf-8. Without it the browser guesses, and a page of UTF-8 renders as mojibake.

.htmtext/html; charset=utf-8

HTML document

.csstext/css; charset=utf-8

Cascading style sheet

.jstext/javascript; charset=utf-8

JavaScript

Nakikita rin bilang application/javascript · application/x-javascript

text/javascript is what the WHATWG specification requires. The application/ forms are historical and still widely seen.

.mjstext/javascript; charset=utf-8

JavaScript module

.jsonapplication/json

JSON

No charset parameter. JSON is defined as UTF-8, so adding one is redundant and technically invalid.

.jsonldapplication/ld+json

JSON-LD

Structured data. Must NOT be served as application/json if you want it treated as linked data.

.xmlapplication/xml

XML

Nakikita rin bilang text/xml

text/xml defaults to US-ASCII when no charset is given, which is almost never what is meant. Prefer application/xml.

.csvtext/csv; charset=utf-8

Comma-separated values

.txttext/plain; charset=utf-8

Plain text

.mdtext/markdown; charset=utf-8

Markdown

.svgimage/svg+xml

SVG vector image

An image and a document at once. It can carry script, so never serve an uploaded SVG from your own origin.

.pngimage/png

PNG image

.jpgimage/jpeg

JPEG image

The type is image/jpeg for both .jpg and .jpeg. There is no image/jpg.

.jpegimage/jpeg

JPEG image

.gifimage/gif

GIF image

.webpimage/webp

WebP image

.avifimage/avif

AVIF image

.icoimage/x-icon

Icon

Nakikita rin bilang image/vnd.microsoft.icon

image/x-icon carries a deprecated x- prefix and is nonetheless what every browser expects.

.bmpimage/bmp

Bitmap image

.tiffimage/tiff

TIFF image

.heicimage/heic

HEIC image

What an iPhone produces by default. Browser support is still thin.

.mp3audio/mpeg

MP3 audio

audio/mpeg, not audio/mp3 — which is not a registered type.

.wavaudio/wav

WAV audio

.oggaudio/ogg

Ogg audio

.m4aaudio/mp4

MPEG-4 audio

.mp4video/mp4

MPEG-4 video

.webmvideo/webm

WebM video

.movvideo/quicktime

QuickTime video

.avivideo/x-msvideo

AVI video

.pdfapplication/pdf

PDF document

.docapplication/msword

Word document (legacy)

.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document

Word document

The long Office types are correct and are routinely truncated by hand. Copy them rather than typing them.

.xlsapplication/vnd.ms-excel

Excel workbook (legacy)

.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Excel workbook

.pptapplication/vnd.ms-powerpoint

PowerPoint (legacy)

.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation

PowerPoint

.rtfapplication/rtf

Rich text

.wofffont/woff

WOFF font

.woff2font/woff2

WOFF2 font

font/woff2, not application/font-woff2. The font/ tree was registered in RFC 8081 and supersedes the older forms.

.ttffont/ttf

TrueType font

.otffont/otf

OpenType font

.zipapplication/zip

ZIP archive

.gzapplication/gzip

Gzip archive

.tarapplication/x-tar

Tar archive

.7zapplication/x-7z-compressed

7-Zip archive

.rarapplication/vnd.rar

RAR archive

.binapplication/octet-stream

Arbitrary binary

The fallback for anything unknown. Browsers download it rather than trying to render it, which is usually the safe choice.

.wasmapplication/wasm

WebAssembly module

Must be served with this exact type — streaming compilation refuses anything else.

[ ANO ITO ]

Isang bagay ang gumagawa ng pinakamaraming problema: ang nawawalang charset. Ang text/html na walang charset ay iniiwan sa browser ang paghula ng encoding — at madalas hindi UTF-8 ang hula. Doon nanggagaling ang mga basurang karakter sa halip na tamang titik at piso sign.

Pero hindi lahat ay kailangan ng charset. Ang JSON ay nakatakdang UTF-8 sa sarili nitong espesipikasyon, kaya ang pagdagdag ng charset doon ay labis. Kaya minamarkahan ng pahinang ito kung alin ang nangangailangan.

At ang pabalik na hanap ay hindi function. Isa lang ang tamang sagot mula extension papuntang type — pero ang image/jpeg ay .jpg at .jpeg. Ibinabalik dito ang lahat sa halip na pumili ng isa at magmukhang awtoridad tungkol dito.

[ MGA TANONG ]

Bakit nagiging kalat ang UTF-8 kong pahina?

Halos tiyak na kulang ang charset. Ang text/html na walang charset na parameter ay ipinapaubaya sa browser ang paghula sa encoding, at madalas na hindi UTF-8 ang hula nito — kaya nagiging mojibake ang letrang may tuldik at ang tandang piso. Ihain ang text/html; charset=utf-8. Ganoon din sa text/css, text/csv at text/plain.

Dapat ba akong magdagdag ng charset sa application/json?

Hindi. Nakatakda ang JSON bilang UTF-8 sa sariling espesipikasyon nito, kaya labis ang charset na parameter at teknikal na hindi pinapayagan sa uring iyon. Ang panuntunan ay hindi “laging magdagdag ng charset” — ito ay “magdagdag kung saan malabo ang uri kung wala ito”, at iyon ang dahilan kung bakit minamarkahan ng pahinang ito ang uring nangangailangan nito.

image/jpg ba o image/jpeg?

image/jpeg, palagi — para sa .jpg at .jpeg na extension. Walang nakarehistrong uring tinatawag na image/jpg, kahit palagi itong isinusulat nang kinamay. Ganoon ding bitag ang nakakahuli sa audio: audio/mpeg ito, hindi audio/mp3.

Bakit may ilang extension ang isang uri?

Dahil hindi function ang pagmamapa sa direksiyong iyon. Ang image/jpeg ay .jpg at .jpeg; ang image/tiff ay .tif at .tiff. Ang pagpunta mula extension patungong uri ay may iisang tamang sagot, pero ang pagbalik ay may ilan, kaya ibinabalik silang lahat ng pahinang ito sa halip na pumili ng isa at magmukhang awtoridad tungkol dito.

Ano ang dapat kong ihain para sa uri ng file na hindi ko kilala?

application/octet-stream. Dina-download ito ng browser sa halip na subukang ipakita, at iyon ang ligtas na default — ang mapanganib na palya ay ang paghain ng hindi kilalang nilalaman bilang bagay na patatakbuhin o ipapakita ng browser. Huwag kailanman huhulaan ang uri mula sa input na galing sa user.

Bakit mapanganib ang paghain ng na-upload na SVG?

Dahil dokumento rin ang SVG bukod sa larawan. Puwede itong magdala ng script, at kung inihain mula sa sarili mong origin ay tatakbo ang script na iyon na may mga pribilehiyo ng site mo. Ihain ang SVG na galing sa user mula sa hiwalay na origin, o gawin silang raster. Walang anumang daan ng pag-upload ang site na ito, at iyon ang pinakapayak na bersiyon ng parehong sagot.

Ano ang nangyari sa x- na unlapi?

Ibinasura ito ng RFC 6648 noong 2012 — ang ideyang dapat markahan ang eksperimental na uri ay lumabas na mas maraming ginugulo kaysa napipigilan. Ilang x- na uri ay permanente nang nakatakda sa ibang espesipikasyon at hindi na magbabago, lalo na ang application/x-www-form-urlencoded, na nakasulat sa HTML mismo. Nakalista sila rito bilang ang tamang anyo, dahil ang pagtatama sa kanila patungo sa bagay na walang server na tumatanggap ay mas walang silbi pa.

[ ANG KOMPUTASYON ]
Ang mga madalas na mali
image/jpgwala nito — image/jpeg
audio/mp3wala nito — audio/mpeg
application/font-woff2luma na — font/woff2
text/htmlkulang ang charset=utf-8

Ang una at pangalawa ay isinusulat sa kamay araw-araw at hindi kailanman nairehistro.

[ HINDI KILALANG NILALAMAN ]

Ihain ang application/octet-stream. Dina-download ito ng browser sa halip na subukang i-render, at iyon ang ligtas na default. Ang mapanganib ay ang paghain ng hindi kilalang nilalaman bilang isang bagay na ipapatakbo o ipapakita ng browser — kaya huwag kailanman huhulaan ang type mula sa input ng gumagamit.

[ SUSUNOD ]
72HTTP Status CodesThe other header you get wrong at 2am
44Base64 Encoder / DecoderFor a data URI, which needs the type too
43JSON FormatterThe type with no charset, and why
41Gumawa ng QR CodeProduces PNG and SVG — both listed here
[ MAHALAGA ]

Based on the IANA media types registry and the mappings browsers and web servers actually use. Where the registry and common practice differ, the form browsers require is listed as canonical and the other as an alias. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.