Saltar al contenido

Tipos MIME

Un tipo MIME — el valor de la cabecera Content-Type — es cómo un servidor dice qué es un archivo. Nada sobre el nombre de archivo llega al navegador, así que la extensión es una pista para ti y el tipo es el hecho para el cliente. Arruinarlo y un archivo de estilos se ignora, una fuente no carga, o un PDF se descarga cuando debería haberse abierto.

Esta página enumera la extensión y el tipo que la herramienta de búsqueda del sitio devuelve para ella, así que los dos nunca pueden diferir. Donde varias extensiones comparten un tipo — jpg, jpeg y jpe, o yaml y yml — cada una aparece en su propia fila, porque buscas la que tienes.

Dos reglas explican la mayoría de las sorpresas abajo. Un tipo que comienza con application/vnd. es un registro de proveedor en lugar de un estándar abierto, por eso los tipos de Office son tan largos. Y un tipo que el servidor no conoce se envía mejor como application/octet-stream, que dice al navegador que descargue en lugar de adivinar.

Web y texto

21

text/* es la familia que un navegador mostrará en lugar de descargar, y la única donde importa el parámetro charset — text/html; charset=utf-8.

ExtensiónTipo MIMEQué es
.htmltext/htmlDocumento HTML
.htmtext/htmlDocumento HTML, extensión corta
.shtmltext/htmlHTML con server-side includes
.xhtmlapplication/xhtml+xmlDocumento XHTML
.csstext/cssHoja de estilos
.csvtext/csvValores separados por comas
.txttext/plainTexto plano
.mdtext/markdownFuente Markdown
.icstext/calendarEvento de calendario
.xmlapplication/xmlDocumento XML
.jstext/javascriptJavaScript
.mjstext/javascriptMódulo ES de JavaScript
.jsonapplication/jsonDatos JSON
.jsonldapplication/ld+jsonDatos estructurados JSON-LD
.webmanifestapplication/manifest+jsonManifiesto de aplicación web
.yamlapplication/yamlDocumento YAML
.ymlapplication/yamlYAML, extensión corta
.tomlapplication/tomlConfiguración TOML
.sqlapplication/sqlScript SQL
.shapplication/x-shScript de shell
.wasmapplication/wasmMódulo WebAssembly

Documentos

12

Los tipos de Office son largos porque codifican el proveedor, estándar y parte — vnd. significa un registro de proveedor, no un formato abierto.

ExtensiónTipo MIMEQué es
.pdfapplication/pdfDocumento PDF
.rtfapplication/rtfTexto enriquecido
.docapplication/mswordDocumento Word, binario heredado
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentDocumento Word
.xlsapplication/vnd.ms-excelLibro de Excel, binario heredado
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetLibro de Excel
.pptapplication/vnd.ms-powerpointPresentación PowerPoint, binario heredado
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentationPresentación PowerPoint
.odtapplication/vnd.oasis.opendocument.textTexto OpenDocument
.odsapplication/vnd.oasis.opendocument.spreadsheetHoja de cálculo OpenDocument
.odpapplication/vnd.oasis.opendocument.presentationPresentación OpenDocument
.epubapplication/epub+zipLibro electrónico EPUB

Imágenes

14

Cada tipo de imagen se puede detectar desde sus primeros bytes, así que un navegador generalmente lo renderizará correctamente incluso cuando el servidor lo etiquete mal. SVG es la excepción que nunca debes etiquetar mal — es un documento que puede llevar script.

ExtensiónTipo MIMEQué es
.pngimage/pngImagen PNG
.jpgimage/jpegImagen JPEG
.jpegimage/jpegImagen JPEG, extensión larga
.jpeimage/jpegImagen JPEG, extensión rara
.gifimage/gifImagen GIF
.webpimage/webpImagen WebP
.avifimage/avifImagen AVIF
.svgimage/svg+xmlImagen vectorial SVG
.bmpimage/bmpImagen de mapa de bits
.icoimage/vnd.microsoft.iconArchivo de icono
.tifimage/tiffImagen TIFF
.tiffimage/tiffImagen TIFF, extensión larga
.heicimage/heicImagen HEIC
.heifimage/heifImagen HEIF

Sonido

11

Contenedor y codec son dos cosas diferentes. audio/ogg dice cómo se envuelve el archivo; lo que hay dentro puede ser Vorbis, Opus o FLAC.

ExtensiónTipo MIMEQué es
.mp3audio/mpegAudio MP3
.wavaudio/wavAudio WAV
.oggaudio/oggAudio Ogg
.ogaaudio/oggAudio Ogg, extensión explícita
.opusaudio/opusAudio Opus
.m4aaudio/mp4Audio AAC en contenedor MP4
.flacaudio/flacAudio sin pérdida FLAC
.webaaudio/webmAudio WebM
.aacaudio/aacAudio AAC sin procesar
.midaudio/midiSecuencia MIDI
.midiaudio/midiMIDI, extensión larga

Video

9

Transmitir video requiere más que el tipo correcto — el servidor también debe responder solicitudes de rango, o el navegador descarga el archivo completo antes de reproducirse.

ExtensiónTipo MIMEQué es
.mp4video/mp4Video MP4
.m4vvideo/mp4Video MP4, extensión de Apple
.webmvideo/webmVideo WebM
.ogvvideo/oggVideo Ogg
.movvideo/quicktimeVideo QuickTime
.avivideo/x-msvideoVideo AVI
.mkvvideo/x-matroskaVideo Matroska
.wmvvideo/x-ms-wmvVideo Windows Media
.3gpvideo/3gppVideo móvil 3GPP

Fuentes

5

La familia font/* se registró tarde; las herramientas antiguas todavía emiten application/font-woff y application/x-font-ttf, que los navegadores aceptan pero no debería escribirse para nada nuevo.

ExtensiónTipo MIMEQué es
.wofffont/woffFuente web WOFF
.woff2font/woff2Fuente web WOFF2
.ttffont/ttfFuente TrueType
.otffont/otfFuente OpenType
.eotapplication/vnd.ms-fontobjectEmbedded OpenType, solo Internet Explorer

Archivos y binarios

12

application/octet-stream es la respuesta honesta cuando nada mejor se sabe, y también lo que fuerza una descarga en lugar de un renderizado.

ExtensiónTipo MIMEQué es
.zipapplication/zipArchivo ZIP
.gzapplication/gzipArchivo gzip
.tarapplication/x-tarArchivo tar
.7zapplication/x-7z-compressedArchivo 7-Zip
.rarapplication/vnd.rarArchivo RAR
.bz2application/x-bzip2Archivo bzip2
.isoapplication/x-iso9660-imageImagen de disco
.binapplication/octet-streamDatos binarios desconocidos
.exeapplication/x-msdownloadEjecutable de Windows
.apkapplication/vnd.android.package-archivePaquete Android
.debapplication/vnd.debian.binary-packagePaquete Debian
.swfapplication/x-shockwave-flashPelícula Flash, hace mucho obsoleta

Preguntas frecuentes

¿Qué sucede si el tipo MIME es incorrecto?
Depende del tipo. Los navegadores rechazan deliberadamente una hoja de estilos que no llega como text/css y un script de módulo que no llega como un tipo JavaScript. Las imágenes se detectan desde sus primeros bytes y generalmente sobreviven una etiqueta incorrecta. Y cualquier cosa servida como text/plain se muestra en lugar de descargarse.
¿Es correcto text/javascript o application/javascript?
text/javascript. Fue la forma histórica, application/javascript lo reemplazó, y el estándar actual ha vuelto a text/javascript y marca el otro como obsoleto. Cada navegador acepta ambos, así que esto solo importa para lo que escribas en configuración nueva.
¿Por qué el tipo .docx de Word es tan largo?
Porque codifica la ruta completa al formato: un registro de proveedor (vnd.), la familia OOXML, y cuál de esos documentos de esa familia es. La longitud es el precio de una entrada de registro que no puede chocar con ningún otro.
¿Necesito charset en cada tipo?
Solo en tipos de texto, y en la práctica solo donde el predeterminado sería incorrecto. text/html; charset=utf-8 vale la pena ser explícito; image/png; charset=utf-8 no tiene sentido. JSON se define como UTF-8 ya, así que application/json no toma charset.
¿Cómo busco uno rápidamente?
La herramienta de búsqueda de tipo MIME en este sitio convierte una lista de extensiones a tipos, o tipos de vuelta a extensiones, y puede emitir el resultado como un bloque de configuración nginx o Apache.