Справочник MIME-типов
Быстрый поиск MIME-типов по расширению файла, поддержка поиска и фильтрации по категориям
Документы(17)
application/pdf
application/msword
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-powerpoint
application/vnd.openxmlformats-officedocument.presentationml.presentation
text/plain
application/rtf
application/vnd.oasis.opendocument.text
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.presentation
text/csv
application/json
application/xml
text/html
text/html
Изображения(15)
image/jpeg
image/jpeg
image/png
image/gif
image/webp
image/svg+xml
image/x-icon
image/bmp
image/tiff
image/tiff
image/avif
image/heic
image/heif
image/vnd.adobe.photoshop
image/raw
Аудио(10)
audio/mpeg
audio/wav
audio/ogg
audio/mp4
audio/flac
audio/aac
audio/x-ms-wma
audio/aiff
audio/midi
audio/midi
Видео(12)
video/mp4
video/webm
video/x-msvideo
video/quicktime
video/x-ms-wmv
video/x-flv
video/x-matroska
video/mp4
video/mpeg
video/mpeg
video/3gpp
video/mp2t
Архивы(9)
application/zip
application/vnd.rar
application/x-7z-compressed
application/x-tar
application/gzip
application/x-bzip2
application/x-xz
application/x-iso9660-image
application/x-apple-diskimage
Код(31)
application/javascript
application/javascript
application/typescript
application/typescript
application/javascript
text/css
text/x-scss
text/x-sass
text/x-less
text/x-python
text/x-java
text/x-c
text/x-c++
text/x-c
text/x-c++
text/x-csharp
text/x-go
text/x-rust
text/x-ruby
text/x-php
text/x-swift
text/x-kotlin
application/sql
application/x-sh
application/x-sh
application/x-yaml
application/x-yaml
application/toml
text/x-ini
text/x-vue
text/x-svelte
Шрифты(5)
font/woff
font/woff2
font/ttf
font/otf
application/vnd.ms-fontobject
Другое(16)
application/vnd.microsoft.portable-executable
application/x-msi
application/vnd.android.package-archive
application/octet-stream
application/vnd.debian.binary-package
application/x-rpm
application/java-archive
application/java-archive
application/x-shockwave-flash
application/x-chrome-extension
application/x-xpinstall
application/x-bittorrent
text/calendar
text/vcard
application/epub+zip
application/x-mobipocket-ebook
Что такое MIME-тип?
MIME-тип (Многоцелевые расширения почты Интернета) — это стандарт для представления природы и формата документа, файла или потока байтов. Браузеры и серверы используют MIME-типы для определения способа обработки файла. Например, когда браузер получает тип image/jpeg, он отображает изображение. MIME-типы описывают, какой контент содержит файл или HTTP-ответ: text/html, application/json, image/png, application/pdf и другие. Они влияют на отображение в браузере, скачивание, API parsing, upload validation, caching и security behavior. Расширение файла и MIME-тип не всегда совпадают, поэтому проверка важна при диагностике сервера, неизвестных файлов и проблем загрузки. Для безопасности MIME-типам нельзя доверять вслепую; нужно сочетать inspection содержимого, правила расширений и явный allowlist.
Как использовать
Краткая справка
- Используйте строку поиска, чтобы найти нужные расширения или MIME-типы
- Нажимайте на теги категорий для фильтрации по типу файла
- Нажимайте кнопки «Ext» или «MIME» для копирования соответствующего содержимого
- Просматривайте категории для быстрого поиска: документы, изображения, аудио, видео, архивы, код, шрифты и т. д.
Примечания по поиску
- MIME-типы — это соглашения, используемые серверами, браузерами и приложениями; одного расширения файла недостаточно для определения фактического содержимого.
- При загрузке и проверке безопасности, если возможно, проверяйте как объявленный MIME-тип, так и сигнатуру файла.
Применение
Технический принцип
MIME-типы (Multipurpose Internet Mail Extensions) — это стандартизированные идентификаторы форматов данных, первоначально определённые в RFC 2045/RFC 2046 для почтовых вложений и впоследствии принятые в HTTP (RFC 7231 §3.1.1.5) для согласования веб-контента. MIME-тип имеет структуру type/subtype — тип указывает общую категорию (text, image, audio, video, application, multipart, font, model), а подтип — точный формат (например, text/html, image/png, application/json). Необязательные параметры указываются после точки с запятой (text/html; charset=utf-8). Агентство Internet Assigned Numbers Authority (IANA) ведёт официальный реестр MIME-типов на iana.org/assignments/media-types. Регистрация регламентируется RFC 6838, который определяет процесс рецензирования, требующий документ спецификации, раздел о межоперабельности и соображения безопасности. Незарегистрированные типы могут использовать префикс x- (например, application/x-tar) как соглашение для экспериментальных или вендорных форматов, хотя RFC 6648 рекомендует отказываться от префикса x- в пользу надлежащей регистрации. В HTTP заголовок Content-Type сообщает клиенту, как интерпретировать тело ответа. Сервер, возвращающий Content-Type: image/svg+xml, запускает SVG-рендерер браузера; Content-Type: application/octet-stream вызывает диалог загрузки, поскольку браузер не может определить формат. Браузер также использует информацию о MIME-типе для MIME sniffing — когда сервер опускает Content-Type или отправляет обобщённый тип, браузер может проанализировать первые несколько байтов ответа (магические байты), чтобы угадать фактический формат. Это поведение контролируется заголовком X-Content-Type-Options: nosniff, который отключает угадывание и требует от сервера объявить правильный тип. При загрузке файлов заголовок Accept сообщает серверу, какие MIME-типы клиент ожидает в ответе, а атрибут accept элемента input ограничивает выбор файлов определёнными типами (например, accept="image/png, image/jpeg"). На стороне сервера загруженные файлы следует проверять как по объявленному MIME-типу, так и по сигнатуре файла (магическим байтам), поскольку ни один из них по отдельности не является надёжным — файл с именем image.png и Content-Type: image/png может содержать исполняемый код. Инструмент служит справочником для поиска канонического MIME-типа по расширению файла, охватывая более 100 распространённых форматов в восьми категориях.
- Структура RFC 2046: type/subtype — тип указывает общую категорию контента, а подтип — точный формат; необязательные параметры следуют после точки с запятой (text/html; charset=utf-8) и не чувствительны к регистру по спецификации, хотя строчные буквы являются общепринятым соглашением.
- Регистрация IANA (RFC 6838): новые медиатипы требуют документ спецификации, раздел о соображениях безопасности и примечания о межоперабельности — процесс рецензирования гарантирует, что типы хорошо документированы и конфликты исключены до их включения в реестр.
- Заголовок HTTP Content-Type: сервер объявляет MIME-тип тела ответа; браузер использует его для выбора подходящего рендерера (HTML-парсер, декодер изображений, средство просмотра PDF) или запуска загрузки — некорректный Content-Type является самой частой причиной ошибок «файл загружается вместо отображения».
- MIME sniffing и X-Content-Type-Options: когда Content-Type отсутствует или является обобщённым, браузеры могут анализировать магические байты для определения формата — X-Content-Type-Options: nosniff отключает это поведение и требует точного совпадения Content-Type, что является рекомендацией по безопасности.
- application/octet-stream: обобщённый тип двоичного запасного варианта — браузеры рассматривают его как непрозрачный поток и инициируют загрузку, что делает его наиболее безопасным вариантом по умолчанию, когда сервер не может определить формат, но это препятствует предварительному просмотру иначе отображаемого контента в браузере.
- Проверка загружаемых файлов: атрибут accept элемента input фильтрует выбор файлов на стороне клиента, но проверка на стороне сервера должна проверять как объявленный Content-Type, так и магические байты файла — несовпадение расширения, MIME-типа и сигнатуры файла является тревожным сигналом при загрузке вредоносных файлов.
- Вендорные и экспериментальные типы: соглашение о префиксе x- (application/x-tar, video/x-matroska) предшествует формальному процессу регистрации — RFC 6648 рекомендует при возможности переводить их на надлежащие типы, зарегистрированные в IANA, но многие из них по-прежнему широко используются.
Примеры
Конфигурация Nginx mime.types
types {
text/html html htm;
image/jpeg jpg jpeg;
application/pdf pdf;
application/javascript js;
}
Примечание: каждая строка сопоставляет MIME-тип с одним или несколькими расширениями файлов; Nginx передаёт тип в заголовке Content-Type
IANA: https://www.iana.org/assignments/media-types/ ведёт официальный реестрHTTP-заголовок ответа Content-Type
Content-Type: application/json; charset=utf-8
Примечание: charset необязателен, но рекомендуется для text/* и application/json; клиенты используют его для корректного декодирования тела
RFC: RFC 7231 раздел 3.1.1.5 определяет семантику заголовка Content-Type
MDN: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-TypeКонструктор Blob в браузере
const blob = new Blob([data], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
Примечание: type становится Content-Type при последующей загрузке или отправке blob; выбирайте конкретный подтип, чтобы избежать application/octet-stream
MDN: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob описывает параметр typeРаспространённые MIME-типы по категориям
Text: text/plain, text/html, text/css, text/javascript, text/markdown
Image: image/jpeg, image/png, image/gif, image/webp, image/svg+xml
Audio: audio/mpeg, audio/wav, audio/ogg, audio/aac
Video: video/mp4, video/webm, video/ogg
Application: application/json, application/pdf, application/xml, application/zip
IANA классифицирует их в реестре Media Types по именам типов верхнего уровняЧасто задаваемые вопросы
Что такое MIME-тип и почему он важен?
MIME-тип (Multipurpose Internet Mail Extensions, также называется media type) — это короткая метка вроде text/html, image/png или application/json, которая сообщает принимающему ПО, как трактовать поток байтов. Браузеры, почтовые клиенты, загрузчики файлов и API ориентируются на него, чтобы решить — рендерить, скачивать, парсить или отклонять содержимое.
Чем MIME-тип отличается от расширения файла?
Расширение — это часть имени файла, чисто соглашение о наименовании. MIME-тип передаётся по сети в заголовке Content-Type. Обычно они согласованы (.png ↔ image/png), но сервер может отдать любое расширение с любым MIME-типом, и браузеры доверяют заголовку гораздо больше, чем расширению. Согласовывать их — хороший тон; полагаться на расширение в задачах безопасности — ошибка.
Что означает application/octet-stream?
Это универсальный MIME-тип «произвольные двоичные данные». Получив его, браузер предложит скачать файл, а не пытаться его отобразить. Серверы возвращают его, когда не могут определить формат, — обычно это значит, что MIME-сопоставление отсутствует или настроено неверно. Заменяйте его на конкретный тип, как только это возможно.
Можно ли доверять Content-Type для проверки загруженных файлов?
Сам по себе — нет. Кто угодно может заявить image/png, загружая исполняемый файл. Всегда сверяйтесь с реальными байтами (магические числа, заголовок PNG 89 50 4E 47, заголовок PDF %PDF-, заголовок ZIP PK), проверяйте расширение, держите серверный allowlist и ограничивайте размер. MIME, вычисленный браузером при загрузке, — это подсказка, а не доказательство.
Почему скачанный файл сохраняется с неправильным именем или расширением?
Имя файла браузер берёт из заголовка Content-Disposition, пути URL и MIME-типа — именно в таком порядке. Если сервер отдаёт PDF с text/html, браузер может сохранить его как .html. Чтобы избежать сюрпризов, задавайте Content-Disposition: attachment; filename="name.pdf" и корректный MIME application/pdf.
Как найти подходящий MIME-тип для нестандартного или редкого формата?
Сначала проверьте реестр медиатипов IANA (iana.org/assignments/media-types). Для незарегистрированных или вендор-специфичных форматов принят формат application/vnd.* или application/x-* (например, application/vnd.api+json, application/x-7z-compressed). Сначала ищите ближайшее стандартное соответствие, прежде чем изобретать своё.
Почему .json и .js имеют разные MIME-типы?
JSON — это данные, и им соответствует application/json. JavaScript — исполняемый код, отдаётся как text/javascript или application/javascript (RFC 9239 рекомендует именно text/javascript). Путать их важно: тег script откажется выполнять application/json, а некоторые серверы отвергают application/javascript, принимая только текстовый вариант.