Ir para o conteúdo

Tipos MIME

Um tipo MIME — o valor do cabeçalho Content-Type — é como um servidor diz o que um ficheiro é. Nada sobre o nome do ficheiro chega ao navegador, por isso a extensão é uma dica para si e o tipo é o facto para o cliente. Errar e uma folha de estilo é ignorada, uma fonte não carrega, ou um PDF descarrega em vez de abrir.

Esta página lista a extensão e o tipo que a ferramenta de procura do próprio site devolve para ela, para que os dois nunca discordem. Quando várias extensões partilham um tipo — jpg, jpeg e jpe, ou yaml e yml — cada uma é listada na sua linha, porque procura aquela que tem.

Duas regras explicam a maioria das surpresas abaixo. Um tipo começado com application/vnd. é um registo de fornecedor em vez de uma norma aberta, é por isso que os tipos Office são tão longos. E um tipo que o servidor não conhece é melhor enviado como application/octet-stream, que diz ao navegador para descarregar em vez de adivinhar.

Web e texto

21

text/* é a família que um navegador mostra em vez de descarregar, e a única onde um parâmetro charset importa — text/html; charset=utf-8.

ExtensãoTipo MIMEO que é
.htmltext/htmlDocumento HTML
.htmtext/htmlDocumento HTML, extensão curta
.shtmltext/htmlHTML com inclusões do lado do servidor
.xhtmlapplication/xhtml+xmlDocumento XHTML
.csstext/cssFolha de estilo
.csvtext/csvValores separados por vírgula
.txttext/plainTexto simples
.mdtext/markdownFonte Markdown
.icstext/calendarEvento de calendário
.xmlapplication/xmlDocumento XML
.jstext/javascriptJavaScript
.mjstext/javascriptMódulo JavaScript ES
.jsonapplication/jsonDados JSON
.jsonldapplication/ld+jsonDados estruturados JSON-LD
.webmanifestapplication/manifest+jsonManifesto de aplicação web
.yamlapplication/yamlDocumento YAML
.ymlapplication/yamlYAML, extensão curta
.tomlapplication/tomlConfiguração TOML
.sqlapplication/sqlScript SQL
.shapplication/x-shScript shell
.wasmapplication/wasmMódulo WebAssembly

Documentos

12

Os tipos Office são longos porque codificam o fornecedor, a norma e a parte — vnd. significa um registo de fornecedor, não um formato aberto.

ExtensãoTipo MIMEO que é
.pdfapplication/pdfDocumento PDF
.rtfapplication/rtfTexto formatado
.docapplication/mswordDocumento Word, binário legado
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentDocumento Word
.xlsapplication/vnd.ms-excelLivro Excel, binário legado
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetLivro Excel
.pptapplication/vnd.ms-powerpointApresentação PowerPoint, binário legado
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentationApresentação PowerPoint
.odtapplication/vnd.oasis.opendocument.textTexto OpenDocument
.odsapplication/vnd.oasis.opendocument.spreadsheetFolha de cálculo OpenDocument
.odpapplication/vnd.oasis.opendocument.presentationApresentação OpenDocument
.epubapplication/epub+zipLivro electrónico EPUB

Imagens

14

Cada tipo de imagem é farejável a partir dos primeiros bytes, por isso um navegador geralmente o apresenta correctamente mesmo com um rótulo errado do servidor. SVG é a excepção que nunca deve rotular incorrectamente — é um documento que pode conter script.

ExtensãoTipo MIMEO que é
.pngimage/pngImagem PNG
.jpgimage/jpegImagem JPEG
.jpegimage/jpegImagem JPEG, extensão comprida
.jpeimage/jpegImagem JPEG, extensão rara
.gifimage/gifImagem GIF
.webpimage/webpImagem WebP
.avifimage/avifImagem AVIF
.svgimage/svg+xmlImagem vectorial SVG
.bmpimage/bmpImagem de bitmap
.icoimage/vnd.microsoft.iconFicheiro de ícone
.tifimage/tiffImagem TIFF
.tiffimage/tiffImagem TIFF, extensão comprida
.heicimage/heicImagem HEIC
.heifimage/heifImagem HEIF

Áudio

11

Contentor e codec são questões diferentes. audio/ogg diz como o ficheiro é embrulhado; o que está dentro pode ser Vorbis, Opus ou FLAC.

ExtensãoTipo MIMEO que é
.mp3audio/mpegÁudio MP3
.wavaudio/wavÁudio WAV
.oggaudio/oggÁudio Ogg
.ogaaudio/oggÁudio Ogg, extensão explícita
.opusaudio/opusÁudio Opus
.m4aaudio/mp4Áudio AAC num contentor MP4
.flacaudio/flacÁudio FLAC sem perda
.webaaudio/webmÁudio WebM
.aacaudio/aacÁudio AAC bruto
.midaudio/midiSequência MIDI
.midiaudio/midiMIDI, extensão comprida

Vídeo

9

Para transmitir um vídeo precisa de mais que o tipo certo — o servidor também tem de responder a pedidos de intervalo, ou o navegador descarrega o ficheiro inteiro antes de começar.

ExtensãoTipo MIMEO que é
.mp4video/mp4Vídeo MP4
.m4vvideo/mp4Vídeo MP4, extensão de Apple
.webmvideo/webmVídeo WebM
.ogvvideo/oggVídeo Ogg
.movvideo/quicktimeVídeo QuickTime
.avivideo/x-msvideoVídeo AVI
.mkvvideo/x-matroskaVídeo Matroska
.wmvvideo/x-ms-wmvVídeo Windows Media
.3gpvideo/3gppVídeo móvel 3GPP

Fontes

5

A família font/* foi registada tarde; ferramentas mais antigas ainda enviam application/font-woff e application/x-font-ttf, que navegadores aceitam mas não devem ser escritas para nada novo.

ExtensãoTipo MIMEO que é
.wofffont/woffFonte web WOFF
.woff2font/woff2Fonte web WOFF2
.ttffont/ttfFonte TrueType
.otffont/otfFonte OpenType
.eotapplication/vnd.ms-fontobjectOpenType Incorporado, apenas Internet Explorer

Arquivos e binários

12

application/octet-stream é a resposta honesta quando nada melhor se sabe, e também o que força uma descarga em vez de um render.

ExtensãoTipo MIMEO que é
.zipapplication/zipArquivo ZIP
.gzapplication/gzipArquivo Gzip
.tarapplication/x-tarArquivo tar
.7zapplication/x-7z-compressedArquivo 7-Zip
.rarapplication/vnd.rarArquivo RAR
.bz2application/x-bzip2Arquivo Bzip2
.isoapplication/x-iso9660-imageImagem de disco
.binapplication/octet-streamDados binários desconhecidos
.exeapplication/x-msdownloadExecutável Windows
.apkapplication/vnd.android.package-archivePacote Android
.debapplication/vnd.debian.binary-packagePacote Debian
.swfapplication/x-shockwave-flashFilme Flash, há muito obsoleto

FAQ

O que acontece se o tipo MIME estiver errado?
Depende do tipo. Os navegadores recusam propositalmente uma folha de estilo que não chega como text/css e um script de módulo que não chega como um tipo JavaScript. Imagens são farejadas a partir dos primeiros bytes e geralmente sobrevivem a um rótulo errado. E qualquer coisa servida como text/plain é mostrada em vez de descarregada.
É text/javascript ou application/javascript correcto?
text/javascript. Era a forma histórica, application/javascript substituiu-a, e a norma actual voltou a text/javascript e marca o outro como obsoleto. Cada navegador aceita ambos, por isso isto só importa para o que escreve em configuração nova.
Porque é que o tipo Word .docx é tão comprido?
Porque codifica todo o caminho para o formato: um registo de fornecedor (vnd.), a família OOXML e qual documento dessa família é. O comprimento é o preço de um registo que não pode colidir com ninguém mais.
Preciso de um charset em cada tipo?
Apenas em tipos de texto, e na prática apenas onde o padrão seria errado. text/html; charset=utf-8 vale a pena ser explícito; image/png; charset=utf-8 não tem sentido. JSON é definido como UTF-8 já, por isso application/json não leva charset.
Como procuro um rápido?
A ferramenta de procura de tipo MIME neste site converte uma lista de extensões para tipos, ou tipos de volta para extensões, e pode emitir o resultado como um bloco de configuração nginx ou Apache.