Aller au contenu

Types MIME

Un type MIME — la valeur de l'en-tête Content-Type — est comment un serveur dit ce qu'est un fichier. Rien du nom de fichier n'atteint le navigateur, donc l'extension est un indice pour vous et le type est un fait pour le client. Une erreur et une feuille de style est ignorée, une police ne se charge pas, ou un PDF télécharge au lieu de s'ouvrir.

Cette page liste l'extension et le type que l'outil de recherche du site renvoie pour elle, donc les deux ne peuvent jamais diverger. Quand plusieurs extensions partagent un type — jpg, jpeg et jpe, ou yaml et yml — chacune est listée seule, parce que vous cherchez celui que vous avez.

Deux règles expliquent la plupart des surprises ci-dessous. Un type commençant par application/vnd. est une registration du vendeur plutôt qu'une norme ouverte, c'est pourquoi les types Office sont si longs. Et un type que le serveur ne connaît pas se mieux envoyer comme application/octet-stream, ce qui dit au navigateur de télécharger au lieu de deviner.

Web et texte

21

text/* est la famille qu'un navigateur affichera au lieu de télécharger, et la seule où un paramètre charset compte — text/html; charset=utf-8.

ExtensionType MIMEC'est quoi
.htmltext/htmlDocument HTML
.htmtext/htmlDocument HTML, extension courte
.shtmltext/htmlHTML avec server-side includes
.xhtmlapplication/xhtml+xmlDocument XHTML
.csstext/cssFeuille de style
.csvtext/csvValeurs séparées par virgules
.txttext/plainTexte brut
.mdtext/markdownSource Markdown
.icstext/calendarÉvénement calendrier
.xmlapplication/xmlDocument XML
.jstext/javascriptJavaScript
.mjstext/javascriptModule JavaScript ES
.jsonapplication/jsonDonnées JSON
.jsonldapplication/ld+jsonDonnées structurées JSON-LD
.webmanifestapplication/manifest+jsonManifeste d'application web
.yamlapplication/yamlDocument YAML
.ymlapplication/yamlYAML, extension courte
.tomlapplication/tomlConfiguration TOML
.sqlapplication/sqlScript SQL
.shapplication/x-shScript shell
.wasmapplication/wasmModule WebAssembly

Documents

12

Les types Office sont longs parce qu'ils codent le vendeur, la norme et la partie — vnd. signifie une registration de vendeur, pas un format ouvert.

ExtensionType MIMEC'est quoi
.pdfapplication/pdfDocument PDF
.rtfapplication/rtfTexte enrichi
.docapplication/mswordDocument Word, binaire hérité
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentDocument Word
.xlsapplication/vnd.ms-excelClasseur Excel, binaire hérité
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetClasseur Excel
.pptapplication/vnd.ms-powerpointPrésentation PowerPoint, binaire hérité
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentationPrésentation PowerPoint
.odtapplication/vnd.oasis.opendocument.textTexte OpenDocument
.odsapplication/vnd.oasis.opendocument.spreadsheetFeuille de calcul OpenDocument
.odpapplication/vnd.oasis.opendocument.presentationPrésentation OpenDocument
.epubapplication/epub+zipLivre électronique EPUB

Images

14

Chaque type d'image peut être détecté à partir de ses premiers octets, donc un navigateur l'affichera généralement correctement même avec une mauvaise étiquette du serveur. SVG est l'exception que vous ne devez jamais maletiquer — c'est un document qui peut contenir un script.

ExtensionType MIMEC'est quoi
.pngimage/pngImage PNG
.jpgimage/jpegImage JPEG
.jpegimage/jpegImage JPEG, extension longue
.jpeimage/jpegImage JPEG, extension rare
.gifimage/gifImage GIF
.webpimage/webpImage WebP
.avifimage/avifImage AVIF
.svgimage/svg+xmlImage vecteur SVG
.bmpimage/bmpImage bitmap
.icoimage/vnd.microsoft.iconFichier icône
.tifimage/tiffImage TIFF
.tiffimage/tiffImage TIFF, extension longue
.heicimage/heicImage HEIC
.heifimage/heifImage HEIF

Audio

11

Conteneur et codec sont deux questions différentes. audio/ogg dit comment le fichier est emballé ; ce qui est à l'intérieur peut être Vorbis, Opus ou FLAC.

ExtensionType MIMEC'est quoi
.mp3audio/mpegAudio MP3
.wavaudio/wavAudio WAV
.oggaudio/oggAudio Ogg
.ogaaudio/oggAudio Ogg, extension explicite
.opusaudio/opusAudio Opus
.m4aaudio/mp4Audio AAC dans un conteneur MP4
.flacaudio/flacAudio FLAC sans perte
.webaaudio/webmAudio WebM
.aacaudio/aacAudio AAC brut
.midaudio/midiSéquence MIDI
.midiaudio/midiMIDI, extension longue

Vidéo

9

Pour streamer une vidéo, il faut plus que le bon type — le serveur doit aussi répondre à des range requests, sinon le navigateur télécharge tout le fichier avant de jouer.

ExtensionType MIMEC'est quoi
.mp4video/mp4Vidéo MP4
.m4vvideo/mp4Vidéo MP4, extension Apple
.webmvideo/webmVidéo WebM
.ogvvideo/oggVidéo Ogg
.movvideo/quicktimeVidéo QuickTime
.avivideo/x-msvideoVidéo AVI
.mkvvideo/x-matroskaVidéo Matroska
.wmvvideo/x-ms-wmvVidéo Windows Media
.3gpvideo/3gppVidéo mobile 3GPP

Polices

5

La famille font/* a été enregistrée tard ; les anciens outils envoient encore application/font-woff et application/x-font-ttf, que les navigateurs acceptent mais ne devraient pas s'écrire pour du nouveau.

ExtensionType MIMEC'est quoi
.wofffont/woffPolice Web WOFF
.woff2font/woff2Police Web WOFF2
.ttffont/ttfPolice TrueType
.otffont/otfPolice OpenType
.eotapplication/vnd.ms-fontobjectEmbedded OpenType, Internet Explorer uniquement

Archives et binaires

12

application/octet-stream est la réponse honnête quand rien de mieux n'est su, et c'est aussi ce qui force un téléchargement au lieu d'une lecture.

ExtensionType MIMEC'est quoi
.zipapplication/zipArchive ZIP
.gzapplication/gzipArchive Gzip
.tarapplication/x-tarArchive Tar
.7zapplication/x-7z-compressedArchive 7-Zip
.rarapplication/vnd.rarArchive RAR
.bz2application/x-bzip2Archive Bzip2
.isoapplication/x-iso9660-imageImage de disque
.binapplication/octet-streamDonnées binaires inconnues
.exeapplication/x-msdownloadExécutable Windows
.apkapplication/vnd.android.package-archivePaquet Android
.debapplication/vnd.debian.binary-packagePaquet Debian
.swfapplication/x-shockwave-flashAnimation Flash, longtemps obsolète

FAQ

Que se passe-t-il si le type MIME est mauvais ?
Cela dépend du type. Les navigateurs refusent intentionnellement une feuille de style qui n'arrive pas sous text/css et un script de module qui n'arrive pas sous un type JavaScript. Les images sont vérifiées à partir de leurs premiers octets et survivent généralement à une mauvaise étiquette. Et tout ce qui est servi comme text/plain s'affiche au lieu de télécharger.
text/javascript ou application/javascript est-il correct ?
text/javascript. C'était la forme historique, application/javascript l'a remplacée, et la norme actuelle est revenue à text/javascript et marque l'autre obsolète. Chaque navigateur accepte les deux, donc cela n'importe que pour ce que vous écrivez dans la nouvelle configuration.
Pourquoi le type .docx de Word est-il si long ?
Parce qu'il code le chemin entier du format : une registration de vendeur (vnd.), la famille OOXML, et lequel des documents de cette famille c'est. La longueur est le prix d'une registration qui ne peut pas entrer en collision avec quelqu'un d'autre.
Dois-je mettre un charset sur chaque type ?
Seulement sur les types de texte, et en pratique seulement où la valeur par défaut serait mauvaise. text/html; charset=utf-8 vaut la peine d'être explicite ; image/png; charset=utf-8 n'a pas de sens. JSON est défini comme UTF-8 déjà, donc application/json ne prend pas de charset.
Comment en rechercher un rapidement ?
L'outil de recherche de type MIME sur ce site convertit une liste d'extensions en types, ou des types en extensions, et peut émettre le résultat comme un bloc de configuration nginx ou Apache.