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タイプ(Multipurpose Internet Mail Extensions)は、ドキュメント、ファイル、バイトストリームの性質と形式を示すインターネット標準です。ブラウザとサーバーはMIMEタイプを使用してコンテンツの処理方法を決定します。例えば、image/jpegを受信するとブラウザは画像を表示し、application/pdfはPDFプレビューを開く可能性があります。正しいMIMEタイプの設定はWebアプリケーションの正常な動作に不可欠です。
使い方
早見表
- 検索ボックスで特定の拡張子やMIMEタイプを検索できます
- カテゴリタグをクリックしてファイル種別で絞り込めます
- 「Ext」または「MIME」ボタンをクリックすると対応する内容をコピーできます
- カテゴリから素早く参照:ドキュメント、画像、音声、動画、アーカイブ、コード、フォントなど
注意事項
- MIMEタイプはサーバー、ブラウザ、アプリケーション間で使われる取り決めであり、ファイル拡張子だけでは実際の内容の証明にはなりません。
- アップロードやセキュリティチェックでは、可能な限り宣言されたMIMEタイプとファイル署名の両方を検証してください。
利用シーン
仕組み
MIMEタイプ(Multipurpose Internet Mail Extensions)は、データ形式の標準化された識別子であり、もともとはRFC 2045/RFC 2046で電子メール添付ファイル向けに定義され、後にHTTP(RFC 7231 §3.1.1.5)でWebコンテンツネゴシエーションに採用された。MIMEタイプは type/subtype の構造を持ち、type は大カテゴリ(text、image、audio、video、application、multipart、font、model)を宣言し、subtype は正確な形式を指定する(例:text/html、image/png、application/json)。オプションのパラメータはセミコロンの後に続く(text/html; charset=utf-8)。 Internet Assigned Numbers Authority(IANA)は iana.org/assignments/media-types で公式MIMEタイプレジストリを維持している。登録は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タイプ情報を活用する。サーバーがContent-Typeを省略したり汎用タイプを送信したりした場合、ブラウザはレスポンスの先頭数バイト(マジックバイト)を調査して実際のフォーマットを推測することがある。この動作は X-Content-Type-Options: nosniff ヘッダーで制御でき、スニッフィングを無効化してサーバーに正しいタイプの宣言を義務付ける。 ファイルアップロードでは、Acceptヘッダーがサーバーにクライアントが期待するMIMEタイプを伝え、input要素のaccept属性はファイルピッカーを特定タイプに制限する(例:accept="image/png, image/jpeg")。サーバー側では、アップロードされたファイルを宣言されたMIMEタイプとファイル署名(マジックバイト)の両方で検証すべきである。どちらも単独では信頼できないためだ。image.png という名前で Content-Type: image/png のファイルに実行可能なコードが含まれている可能性がある。本ツールは、与えられたファイル拡張子に対する正規のMIMEタイプを検索するリファレンスとして、8カテゴリにわたる100以上の一般的なフォーマットをカバーしている。
- RFC 2046構造:type/subtype — typeは大カテゴリを示し、subtypeは正確な形式を示す。オプションパラメータはセミコロンの後に続き(text/html; charset=utf-8)、仕様上は大文字小文字を区別しないが、慣例として小文字が使用される。
- IANA登録(RFC 6838):新しいメディアタイプには仕様ドキュメント、セキュリティ上の考慮事項セクション、相互運用性ノートが必要。レビュープロセスにより、タイプが十分に文書化され、レジストリ登録前に競合が回避されることが保証される。
- HTTP Content-Typeヘッダー:サーバーはレスポンスボディのMIMEタイプを宣言し、ブラウザはそれに基づいて適切なレンダラー(HTMLパーサー、画像デコーダー、PDFビューアー)を選択するかダウンロードを開始する。誤ったContent-Typeは「ファイルが表示されずにダウンロードされる」バグの最も一般的な原因。
- MIMEスニッフィングとX-Content-Type-Options:Content-Typeが欠落しているか汎用の場合、ブラウザはマジックバイトを調査してフォーマットを推測することがある。X-Content-Type-Options: nosniffはこの動作を無効化し、正確なContent-Typeの一致を要求する。これはセキュリティ上のベストプラクティス。
- application/octet-stream:汎用バイナリフォールバックタイプ。ブラウザは不透明なストリームとして扱いダウンロードを開始するため、サーバーがフォーマットを判別できない場合に最も安全なデフォルトとなるが、本来表示可能なコンテンツのブラウザ内プレビューが不可能になる。
- ファイルアップロード検証:inputのaccept属性はクライアント側でファイルピッカーをフィルタリングするが、サーバー側の検証では宣言された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 タイプを 1 つ以上のファイル拡張子にマッピング。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 は Blob をダウンロード/アップロードした際の Content-Type となる。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、メディアタイプとも呼ばれる)は、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)を必ず確認し、ファイル拡張子をチェックし、サーバ側の許可リストを適用し、ファイルサイズを制限してください。アップロードでブラウザが提供するMIMEタイプは、証拠ではなくヒントです。
ダウンロードで誤ったファイル名や拡張子で保存されるのはなぜですか?
ブラウザは保存名を、Content-Dispositionヘッダ、URLパス、MIMEタイプの順で決定します。サーバがPDFダウンロードに対してtext/htmlを返すと、ブラウザは.htmlで保存することがあります。Content-Disposition: attachment; filename="name.pdf" と正しい application/pdf MIMEタイプを設定すれば、こうした驚きを避けられます。
カスタム形式や珍しい形式の正しい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 が推奨されました)。両者を取り違えると問題になります。スクリプトタグは application/json では実行を拒否しますし、一部のサーバは text バリアントしか受け付けず application/javascript を拒否します。