本文へスキップ
サイト総合診断

alt 属性(画像の代替テキスト)の正しい書き方

alt 属性は、画像が表示できない・見えないときに、その画像の代わりに読まれるテキストです。目の見えない利用者のスクリーンリーダーが読み上げ、画像の読み込みに失敗したときに表示され、Google 画像検索にも使われます。ポイントは 2 つだけ。意味のある画像には内容を、飾りの画像には空の alt を付けることです。

執筆: 公開:

alt 属性とは何ですか?

alt 属性は img タグに書く「画像の代替テキスト」で、画像が見えないときに代わりに使われます。スクリーンリーダーはこれを読み上げ、画像が読み込めなかったときはこの文字が表示され、検索エンジンは画像の内容理解に使います。見える人には普段見えませんが、見えない状況では画像そのものの役割を担います。

画面が見える人にとって、alt は普段まったく目に入りません。だからこそ後回しにされがちですが、見えない状況では画像そのものの代わりになります。使われる場面は主に 3 つです。

  • スクリーンリーダー — 目の見えない利用者が画像に差しかかったとき、alt が読み上げられる
  • 読み込み失敗 — 回線が悪い・画像が消えているとき、alt の文字が代わりに表示される
  • 画像検索エンジン — Google 画像検索が「この画像は何か」を判断する手がかりにする

装飾だけの画像にも alt は必要ですか?

必要ですが、値は空(alt="")にします。区切り線や背景の飾りなど、内容に意味を持たない画像に説明を付けると、スクリーンリーダーが無意味な読み上げをして邪魔になります。alt を「書かない」のではなく「空で明示」するのが正解です。空 alt により支援技術はその画像を安全に読み飛ばせます。

ここが最も誤解されている点です。「alt を書かない」と「alt を空にする」は、支援技術にとってまったく違う意味になります。

alt の状態と、スクリーンリーダーの挙動
書き方意味スクリーンリーダーの挙動
alt="説明"意味のある画像説明を読み上げる
alt=""装飾で、中身に意味は無い読み飛ばす(正しい
属性ごと無い状態が不明ファイル名や URL を読み上げてしまう(NG
意味のある画像 / 装飾画像 / NG 例
<!-- 意味のある画像: 役割を書く -->
<img src="/products/x100.jpg" alt="コンパクトカメラ X100(前面・シルバー)">

<!-- 装飾画像: 空 alt で「読み飛ばしてよい」と明示 -->
<img src="/decoration/divider.svg" alt="">

<!-- ★ alt 属性ごと無い(NG)。スクリーンリーダーがファイル名を読み上げる -->
<img src="/products/x100.jpg">

意味のある画像には何を書けばいいですか?

その画像が「その場所で果たしている役割」を、簡潔な文で書きます。写真の見たままではなく、なぜそこに置いたかを言葉にするのがコツです。たとえば製品写真なら製品名と型番、グラフなら読み取ってほしい結論、ロゴなら会社名です。前後の本文と重複する説明は不要で、20〜125 文字程度に収めると読み上げが自然になります。

コツは「見たまま」ではなく「その画像がそこにある理由」を書くことです。同じ人物写真でも、 社員紹介ページなら alt="代表取締役 山田太郎"、料理教室の記事なら alt="包丁で玉ねぎをみじん切りにしている手元" と、文脈によって適切な alt は変わります。前後の本文で既に説明していることは繰り返さず、画像でしか分からない情報を補います。

CSS 背景で装飾を DOM から外す選択肢
/* そもそも本文に関係ない飾りは、img ではなく CSS 背景にする手もある。
   背景画像は代替テキストの対象外なので、装飾は最初から DOM に出さない設計が綺麗 */
.hero {
  background-image: url("/decoration/pattern.svg");
}

よくある失敗は何ですか?

「画像」「写真」「img_1234.jpg」のように中身を説明していない alt、本文と全く同じ文の繰り返し、そして SEO 目的のキーワード詰め込みが三大失敗です。特にキーワードの羅列は、スクリーンリーダー利用者には意味不明な読み上げになり、検索エンジンにもスパムと見なされます。alt はまず利用者のために書きます。

  • 「画像」「写真」だけ — 何も説明していない。読み上げても「画像」としか分からない
  • ファイル名のままDSC_0421.jpg)— 意味を成さない。CMS が自動で入れることがあるので要注意
  • 「〜の画像」「〜の写真」 — 冗長。スクリーンリーダーは img を画像だと既にアナウンスするので、二重になる
  • キーワード詰め込みalt="SEO 対策 東京 格安 ホームページ制作" のような羅列。利用者に無意味で、検索エンジンにもスパム扱いされる

画像そのものではなく「押すと何が起きるか」を書きます。リンク先やボタンの機能が alt になるべきで、たとえば会社ロゴがトップページへのリンクなら alt="ホーム" が適切です。alt が空だと、スクリーンリーダーはリンクの URL をそのまま読み上げてしまい、行き先が分かりません。

リンク・ボタンになった画像
<!-- ロゴがトップへのリンク: 「画像の説明」ではなく「行き先」を書く -->
<a href="/">
  <img src="/logo.svg" alt="ホーム">
</a>

<!-- アイコンだけのボタン: 操作を書く。空 alt にすると用途不明になる -->
<button>
  <img src="/icons/search.svg" alt="検索">
</button>

画像がリンクやボタンを兼ねているとき、alt を空にするとそのリンクは「行き先の分からないリンク」になってしまいます。 スクリーンリーダーは仕方なく URL を読み上げますが、/p/12345 と読まれても利用者には何のことか分かりません。 この場合の alt は画像の見た目ではなく、クリックした結果を書きます。

グラフや図など、一言で説明できない画像はどうしますか?

alt には結論を短く書き、詳細は本文か表で近くに置きます。棒グラフなら alt="2020〜2024 年の売上推移。2023 年に前年比 1.5 倍へ増加" のように読み取ってほしい要点を書き、正確な数値は本文の表に載せます。画像だけに情報を閉じ込めないことが、見えない人にも検索エンジンにも親切です。

グラフ・図解・地図・スクリーンショットのように情報量の多い画像は、短い alt に収まりきりません。 無理に長文の alt を書くより、結論を alt に、詳細を本文や表に分けるのが定石です。

  • グラフ — alt に「読み取ってほしい結論」、本文の に正確な数値
  • フローチャート — alt に概要、直後に手順を <ol> で本文化する
  • スクリーンショット — alt に「どの画面か」、操作の要点は本文で言葉にする

この「画像だけに情報を閉じ込めない」姿勢は、AI クローラーにも効きます。AI の多くは画像の中身を読みません。本文に要点があれば、見えない人にも AI にも同じ情報が届きます。

alt は SEO に効きますか?

効きますが、限定的です。Google は画像検索で alt を画像内容の手がかりに使うため、正確な alt は画像検索からの流入に有利です。一方で本文ランキングへの寄与は小さく、キーワードを詰めても順位は上がりません。SEO のためではなく、まず利用者のために正確に書くと、結果的に画像検索にも効くという順序です。

Google 自身が、alt は「画像の内容を伝えるために書く。検索のためにキーワードを詰めない」と明言しています。 画像検索からの流入が見込めるサイト(EC・レシピ・不動産・観光など)では、正確な alt が実利になります。 逆に、alt を SEO の裏技のように使う発想は、利用者にも検索にも逆効果です。

自分のサイトの alt をどう確認すればいいですか?

ブラウザの検証ツールで img を検索し、alt 属性の有無と中身を目視します。数が多いなら、alt が欠けている画像を機械的に洗い出すのが確実です。本ツールのアクセシビリティ診断でも、alt の無い画像の枚数を検出します。ただし「alt が空か埋まっているか」は機械判定できても、「中身が適切か」は人が読んで判断する必要があります。

機械でできるのは「alt が有るか無いか」までです。中身が適切かは、最終的に人が読んで判断します。 まずは alt の欠けている画像をゼロにし、次に「画像」「写真」「ファイル名」のような無意味な alt を潰す、という順で進めると効率的です。 関連して、フォーム部品のラベルづけは フォームのラベルを正しく関連づける を参照してください。

参考にした一次情報

関連する解説

自分のサイトは、実際どうなっているか

この記事で説明した項目は、すべて無料の診断ツールで実測できます。URL を入れるだけ・登録不要です。

無料で診断する