開発

MIMEタイプとは|Content-Typeの役割・type/subtype・charsetをやさしく解説

MIMEタイプは、やり取りされるデータが「何の種類か」をコンピューター同士に正しく伝えるための仕組みです。本記事では「MIMEタイプとは何か」から、Content-Typeヘッダーの役割、type/subtypeという書式、文字コードを指定するcharset、ブラウザの挙動、ファイル拡張子との違い、よく使うMIMEタイプ一覧までをやさしく解説します。

公開: 2026-10-16

Webページを開いたとき、ブラウザはサーバーから届いたデータを「これはHTMLだ」「これはPNG画像だ」と正しく判断して表示します。では、ブラウザはどうやってその種類を知るのでしょうか。その答えがMIMEタイプ(コンテンツタイプ)です。本記事では、MIMEタイプとは何か、どこで使われ、どんな書式を持つのかを順を追って解説します。

MIMEタイプとは何か

MIMEタイプ(MIME type、メディアタイプ/コンテンツタイプとも呼ばれる)とは、やり取りされるデータの種類を表す短い文字列です。MIMEは「Multipurpose Internet Mail Extensions」の略で、もともとは電子メールに画像や添付ファイルなどテキスト以外のデータを乗せるために考案された仕組みでした。現在ではメールにとどまらず、Web(HTTP)の世界で「このデータは何の種類か」を伝える共通の言語として広く使われています。

たとえば「text/html」はHTML文書、「image/png」はPNG画像、「application/json」はJSONデータを表します。コンピューターはファイルの中身をいきなり見ても、それがテキストなのか画像なのか確実には分かりません。そこで「これは画像です」「これはJSONです」という札を一緒に渡すことで、受け取った側が正しく処理できるようになります。MIMEタイプは、まさにその「中身を示す札」の役割を果たします。

あるファイルがどのMIMEタイプに対応するのかを手軽に調べたいときは、MIMEタイプ検索ツールで拡張子や形式から確認してみると分かりやすいでしょう。

Content-Typeヘッダーの役割

WebでMIMEタイプが最も活躍するのが、Content-Type(コンテントタイプ)ヘッダーです。ブラウザがサーバーにページをリクエストすると、サーバーは本体のデータ(HTMLや画像など)に加えて、いくつかのHTTPヘッダーと呼ばれる付帯情報を返します。その中の一つがContent-Typeで、ここに「このデータのMIMEタイプは何か」が書き込まれています。

Content-Type: text/html; charset=UTF-8

上の例は「このデータはHTMLで、文字コードはUTF-8です」という意味です。ブラウザはこのヘッダーを見て、受け取ったデータをHTMLとして解釈し、画面に描画します。もしContent-Typeが「image/png」であれば画像として表示し、「application/pdf」であればPDFビューアーで開く、といった具合に挙動を切り替えます。

Content-Typeはレスポンス(サーバーからの返答)だけでなく、フォーム送信やAPIへのデータ送信といったリクエスト(クライアントからの送信)でも使われます。たとえばJSONをAPIに送るときは「application/json」を、ファイルを含むフォームを送るときは「multipart/form-data」を指定します。サーバー側はこのヘッダーを見て、届いたデータをどう読み取るかを決めます。Content-Typeの指定を誤ると、データが正しく解釈されず、文字化けや表示崩れ、APIエラーの原因になります。なお、こうしたHTTPのやり取りで返るステータス番号の意味はHTTPステータスコード一覧ツールで確認できます。

type/subtype形式と書き方

MIMEタイプは、必ず「type/subtype(タイプ/サブタイプ)」というスラッシュで区切った2階層の形式で書きます。前半のtypeが大まかな分類、後半のsubtypeが具体的な形式を表します。

text/html → type は text、subtype は html

前半のtypeには、おおよそ次のような種類があります。

  • text:人が読めるテキスト。例)text/html、text/plain、text/css
  • image:画像。例)image/png、image/jpeg、image/svg+xml
  • audio / video:音声・動画。例)audio/mpeg、video/mp4
  • application:その他のデータ全般(バイナリや構造化データ)。例)application/json、application/pdf
  • multipart:複数のデータをまとめたもの。例)multipart/form-data

分類しきれないデータは、ひとまず「application/octet-stream」という「種類不明のバイナリ」を表すMIMEタイプが使われます。これを受け取ったブラウザは、表示せずにダウンロードとして扱うのが一般的です。また、独自形式には先頭に「vnd.」が付くベンダー固有のサブタイプ(例:application/vnd.ms-excel)が割り当てられることもあります。

文字コード指定(charset)の意味

テキスト系のデータでは、MIMEタイプの後ろにcharset(キャラクターセット、文字コード)というパラメーターを付けることがあります。これは「このテキストをどの文字コードで解釈すべきか」をブラウザに伝えるための指定です。

Content-Type: text/html; charset=UTF-8

セミコロン(;)で区切った後に「charset=UTF-8」と書くことで、「このHTMLはUTF-8という文字コードで書かれている」と宣言しています。文字コードとは、文字をコンピューター上の数値(バイト列)に対応づける取り決めのことです。同じバイト列でも、解釈する文字コードが違えば別の文字として表示されてしまいます。

charsetの指定が間違っていたり欠けていたりすると、いわゆる文字化けが起こります。たとえばUTF-8で書かれた日本語のページを、ブラウザが誤って別の文字コードだと判断すると、本来の文字が記号や「�」の羅列になってしまいます。現在のWebでは、世界中の文字を扱えて互換性も高いUTF-8を使うのが標準的です。HTMLでは<meta charset="UTF-8">でも指定できますが、Content-Typeヘッダーでの指定が優先されることが多いため、サーバー側の設定とあわせて整合させておくことが大切です。

拡張子との関係とブラウザの挙動

「ファイルの種類」を表すものとしては、.htmlや.pngといった拡張子のほうが身近かもしれません。MIMEタイプと拡張子は役割が似ていますが、働く場所が異なります。拡張子はファイル名の一部として主に手元のOSがファイルを判断するために使われ、MIMEタイプはネットワークを通じてデータをやり取りする際に種類を伝えるために使われます。

サーバーは通常、ファイルの拡張子を手がかりにして、対応するMIMEタイプをContent-Typeに設定します。たとえば.cssのファイルにはtext/css、.jsonのファイルにはapplication/jsonを割り当てる、という対応表をサーバーが持っています。この設定が誤っていると、たとえばCSSファイルがtext/plainとして返され、ブラウザがスタイルとして適用してくれない、といった不具合が起こります。

ここで重要なのは、ブラウザは最終的にContent-Type(MIMEタイプ)を優先して挙動を決めるという点です。拡張子が.pngでも、Content-Typeがtext/plainであれば、ブラウザは画像ではなくテキストとして扱おうとします。逆に拡張子がなくても、正しいMIMEタイプが付いていれば適切に処理されます。なお、MIMEタイプが信頼できない場合にブラウザが中身を推測する「MIMEスニッフィング」という挙動もありますが、これはセキュリティ上の理由からX-Content-Type-Options: nosniffで無効化されることが増えています。ファイルと正しいMIMEタイプの対応を確認したいときは、MIMEタイプ検索ツールが役立ちます。

よく使うMIMEタイプ一覧

最後に、Web開発で頻繁に登場する代表的なMIMEタイプをまとめます。実務ではこのあたりを押さえておけば、多くの場面に対応できます。

MIMEタイプ主な内容代表的な拡張子
text/htmlHTML文書.html
text/plainプレーンテキスト.txt
text/cssスタイルシート.css
text/javascriptJavaScript.js
application/jsonJSONデータ.json
application/pdfPDF文書.pdf
application/octet-stream種類不明のバイナリ(汎用)
image/pngPNG画像.png
image/jpegJPEG画像.jpg / .jpeg
image/svg+xmlSVG画像.svg
audio/mpegMP3音声.mp3
video/mp4MP4動画.mp4

MIMEタイプは、Web上でやり取りされるあらゆるデータに「これは何か」という札を付け、コンピューター同士が正しく理解し合うための基礎技術です。Content-Typeヘッダーでの伝え方、type/subtypeという書式、charsetによる文字コード指定という三つのポイントを押さえれば、文字化けや表示崩れの多くは理解しやすくなります。実際のファイルがどのMIMEタイプになるのかはMIMEタイプ検索ツールで、関連するHTTPの応答番号はHTTPステータスコード一覧ツールで確かめながら、手を動かして理解を深めてみてください。

なお本記事は一般的な情報の提供を目的としたものです。MIMEタイプの正確な定義や登録状況は標準化団体によって更新されることがあるため、最新の公式仕様やドキュメントを確認のうえで判断してください。

よくある質問

MIMEタイプとは何ですか?

MIMEタイプ(メディアタイプ/コンテンツタイプ)とは、やり取りされるデータの種類を表す短い文字列です。「text/html」ならHTML文書、「image/png」ならPNG画像、「application/json」ならJSONデータを表します。データの中身を示す札のような役割を持ち、受け取った側が正しく処理できるようにします。

Content-Typeヘッダーとは何ですか?

Content-Typeは、HTTP通信でデータのMIMEタイプを伝えるためのヘッダーです。サーバーからの返答や、フォーム送信・API送信のときに「このデータは何の種類か」を示します。たとえば「Content-Type: text/html; charset=UTF-8」は、HTMLでUTF-8の文字コードという意味です。ブラウザはこれを見て表示方法を切り替えます。

MIMEタイプの「type/subtype」とはどういう書き方ですか?

MIMEタイプは必ずスラッシュで区切った2階層で書きます。前半のtypeが大まかな分類(text、image、audio、video、application、multipartなど)、後半のsubtypeが具体的な形式です。たとえば「image/png」はtypeがimage、subtypeがpngで、PNG画像を表します。

charsetを指定しないとどうなりますか?

charset(文字コード)の指定が間違っていたり欠けていたりすると、文字化けが起こることがあります。同じバイト列でも解釈する文字コードが違えば別の文字として表示されるためです。現在のWebでは世界中の文字を扱えるUTF-8を使うのが標準的で、サーバーとHTML側の指定を整合させておくことが大切です。

MIMEタイプ検索ツールはスマホでも無料で使えますか?

はい。WAZA TOOLSのMIMEタイプ検索ツールはすべてブラウザ内で処理され、入力した内容がサーバーに送信・保存されることはありません。スマートフォンでも利用でき、何度でも無料でMIMEタイプを調べられます。