画像SEO:代替テキスト・形式・圧縮・遅延読み込み

画像ファイル、代替テキスト、レスポンシブなマークアップ、表示速度を組み合わせ、画像を検索で見つけてもらえる状態に保つ方法を解説します。

Google画像検索は、毎月数十億件のクエリを処理しています。Jumpshotのデータによると、ウェブ検索全体の約22%に画像検索が関わっています。ECサイト、コンテンツサイト、ポートフォリオにとって大きな流入チャネルですが、ほとんどのサイトが見過ごしています。

画像の最適化は、Google画像検索での表示だけでなく、通常のオーガニック検索にも影響します。ページの表示速度(LCP)、Core Web Vitals、ユーザー体験、そして間接的にメインの検索結果での順位にも関わります。

画像SEOの流れ。形式、srcset、遅延読み込み、alt、画像サイトマップの5ステップで、重いJPGを検索で素早く表示される画像に変えます。
代替テキストのない画像は、Googleから見えません。検索エンジンは画像そのものを「読む」ことができず、メタデータ、周辺のコンテキスト、alt属性を読みます。これらがなければ、Google画像検索に表示される可能性はほぼゼロです。

画像をSEOのために最適化する理由

画像を適切に最適化すると、複数の課題を同時に解決できます。視覚に障害のあるユーザー向けのアクセシビリティが向上し、ページの読み込みが速くなり、Googleに明確なコンテキストを伝えられます。さらにGoogle画像検索という、オーガニック流入の経路が1つ増えます。

検索エンジン向けに画像を最適化する5つのステップ。
22%

検索シェア

全検索クエリのうち画像検索が関わる割合

21%

LCPの短縮

同じ見た目の品質でJPEGからWebPに切り替えた場合の平均改善率

~60%

ページの重さ

ほとんどのページで、画像がページ容量の最大の割合を占めます

2×

コンバージョン

画像を最適化したサイトは、読み込みが速いぶんコンバージョンも高くなります

ほとんどのページで、画像は最も重いリソースです。最適化されていない画像は読み込みを遅くし、LCP(Largest Contentful Paint)を悪化させ、Core Web Vitalsのスコアに直接影響します。GoogleはCWVを2021年からランキングシグナルとしています。

代替テキスト(alt属性)の書き方

alt属性(alt="...")は、画像に何が写っているかをGoogleに伝える唯一の手段です。画像が読み込めないときの表示にも使われ、視覚に障害のあるユーザーのスクリーンリーダーでも読み上げられます。

正しい書き方

悪い例良い例
image.jpg2024〜2025年のオーガニック流入の推移グラフ
photo1Google Search Consoleのカバレッジレポートのスクリーンショット
SEO SEO SEOキーワード多言語サイト向けhreflang設定の手順図
logoseohead.techの企業ロゴ
(重要な画像でaltが空)ブランド名クエリの検索順位の6か月推移グラフ

alt属性のルールは次のとおりです。画像に写っているものを説明します。関連するなら、ターゲットキーワードを自然に含めます。「〜の画像」「〜の写真」「〜のピクチャ」といった言葉で始めません。画像であることはGoogleが理解しているためです。長さは5〜15語程度が目安です。

装飾的な画像(区切り線、背景のテクスチャー、意味のないアイコン)には、空のalt属性(alt="")を指定します。スクリーンリーダーがその画像を読み飛ばすようになり、アクセシビリティの観点でも正しい対応です。
html
<!-- Informative image -->
<img
  src="/images/crawl-budget-chart.webp"
  alt="Crawl budget distribution chart by page type"
  width="800"
  height="450"
/>

<!-- Decorative image -->
<img
  src="/images/divider.svg"
  alt=""
  role="presentation"
/>

<!-- Image link: alt describes the link purpose -->
<a href="/tools">
  <img
    src="/images/seo-scripts-icon.webp"
    alt="SEO Scripts: tools for technical audits"
    width="64"
    height="64"
  />
</a>

ファイル名とパス

Googleは画像のファイル名も補助的なシグナルとして分析します。DSC_0047.jpgからは何もわかりませんが、canonical-url-diagram.webpならトピックと文脈が伝わります。

悪いファイル名良いファイル名
DSC_0047.jpgseo-audit-checklist.webp
image001.pnggoogle-search-console-coverage-report.webp
photo.jpeginternal-linking-architecture-diagram.webp
img_final_v3_FINAL.pngrobots-txt-structure.webp
ファイル名には、小文字の英字、数字、ハイフンだけを使います。スペース(%20にエンコードされます)、アンダースコア、特殊文字は避けます。パスも、/uploads/2024/05/より/images/blog/のほうが整理されています。

形式:WebP、AVIF、JPEG、PNG

形式の選択は、最適化の重要な要素の1つです。新しい形式(WebP、AVIF)は、同じ見た目の品質でファイルサイズを大きく減らせます。

形式圧縮率透過アニメーション
WebPJPEGより25〜35%小さい可可
AVIFJPEGより50%小さい可可
JPEG基準不可不可
PNGJPEGより大きい可不可
SVGベクター可可
GIF低い限定的可
ブラウザーの対応状況と推奨用途:
形式対応率推奨
WebP97%以上写真とスクリーンショットの主力形式
AVIF90%以上画質は最高。デコードがやや遅い
JPEG100%古いブラウザー向けのフォールバック
PNG100%アイコンと文字の多いスクリーンショットだけに使う
SVG97%以上アイコン、ロゴ、図
GIF100%WebPか動画に置き換える

推奨する方針は、WebPを主力形式にして、<picture>要素でJPEGをフォールバックに指定することです。AVIFへの移行は、閲覧者の大半がChrome 85以降とSafari 16以降になってからにします。ベクターグラフィックは例外なくSVGを使います。

html
<!-- Modern approach: AVIF → WebP → JPEG -->
<picture>
  <source srcset="/images/hero.avif" type="image/avif" />
  <source srcset="/images/hero.webp" type="image/webp" />
  <img
    src="/images/hero.jpg"
    alt="SEO audit of an online store: 340% traffic growth"
    width="1200"
    height="675"
    loading="eager"
    fetchpriority="high"
  />
</picture>

画質を落とさない圧縮

ほとんどの画像は、見た目の品質を落とさずに30〜70%圧縮できます。主なツールは、Squoosh(オンライン)、ImageMagick(CLI)、Sharp(Node.js)、Pillow(Python)です。

最適な画質設定

形式ウェブ向けの品質ツール
WebP75〜85Sharp:sharp().webp({ quality: 80 })
AVIF60〜75Sharp:sharp().avif({ quality: 65 })
JPEG75〜85ImageMagick:-quality 80
PNGロスレスpngquant:--quality=65-80
コードでの実装例:
javascript
// Next.js: automatic optimisation via next/image
import Image from 'next/image';

// next/image automatically:
// - converts to WebP/AVIF
// - generates srcset
// - adds lazy loading
// - prevents layout shift (requires width/height)
export function HeroImage() {
  return (
    <Image
      src="/images/hero.jpg"
      alt="Organic traffic growth after SEO audit"
      width={1200}
      height={675}
      priority // disables lazy load for the hero image
    />
  );
}
Next.jsでは、<img>ではなく<Image>コンポーネントを使います。WebP/AVIFへの自動変換、srcsetの生成、レイアウトシフトの防止を自動で行います。ファーストビューのメインビジュアルには必ずpriorityを付けてください。LCPが短縮されます。

遅延読み込みとloading='eager'

遅延読み込みは、画面外の画像をユーザーがスクロールして近づくまで読み込まない仕組みです。初期のページ容量が減り、Time to Interactiveが速くなります。

html
<!-- Below-fold images: lazy loading -->
<img
  src="/images/article-thumbnail.webp"
  alt="XML sitemap audit screenshot"
  width="400"
  height="225"
  loading="lazy"
/>

<!-- Hero and LCP images: eager + fetchpriority -->
<img
  src="/images/hero.webp"
  alt="Real-time SEO analytics"
  width="1200"
  height="675"
  loading="eager"
  fetchpriority="high"
/>
関連する属性の比較:
属性値使う場面
loadinglazy最初のビューポートより下にあるすべての画像
loadingeagerメインビジュアル、ロゴ、LCP要素
fetchpriorityhighページのメイン画像(LCP)
fetchprioritylowページ下部の装飾的な画像
decodingasyncほとんどの画像。レンダリングをブロックしません
LCPの画像にloading="lazy"を付けてはいけません。これは致命的なミスです。ブラウザーがページで最も重要なビジュアル要素の読み込みを後回しにし、LCPが急激に悪化します。

サイズ指定、srcset、アートディレクション

widthとheight属性は必ず指定します。読み込み前にブラウザーが画像のスペースを確保でき、読み込み中にコンテンツが動いてしまうCumulative Layout Shift(CLS)を防げます。

html
<!-- srcset: different sizes for different screens -->
<img
  src="/images/blog-cover.webp"
  srcset="
    /images/blog-cover-480.webp 480w,
    /images/blog-cover-800.webp 800w,
    /images/blog-cover-1200.webp 1200w
  "
  sizes="(max-width: 480px) 480px, (max-width: 800px) 800px, 1200px"
  alt="Internal linking architecture guide: site structure diagram"
  width="1200"
  height="675"
  loading="lazy"
/>

srcset属性を使うと、ブラウザーが現在の画面と画素密度に最適な画像サイズを選べます。DPIが2倍のモバイル端末では、1200pxではなく800px版が読み込まれ、通信量が減って表示が速くなります。

構造化データ

schema.orgのマークアップを使うと、Googleがリッチリザルト(商品カード、レシピ、記事)に画像を表示しやすくなります。画像に関連する主な型は、ImageObject、Article、Product、Recipeです。

json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Image SEO: complete guide",
  "image": {
    "@type": "ImageObject",
    "url": "https://seohead.tech/images/blog/image-seo.webp",
    "width": 1200,
    "height": 675,
    "caption": "Image optimisation for search: formats, alt text, compression"
  },
  "datePublished": "2026-05-17",
  "author": {
    "@type": "Person",
    "name": "seohead"
  }
}

画像サイトマップ

Googleは、画像の情報をXMLサイトマップに含めることを推奨しています。JavaScriptで読み込まれる画像のインデックス登録を助け、タイトル、キャプション、ライセンスといった追加のコンテキストも伝えられます。

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
>
  <url>
    <loc>https://seohead.tech/blog/image-seo</loc>
    <image:image>
      <image:loc>https://seohead.tech/images/blog/image-seo.webp</image:loc>
      <image:title>Image SEO: alt text, formats, compression, and lazy load</image:title>
      <image:caption>Complete guide to image optimisation for search</image:caption>
    </image:image>
  </url>
</urlset>
画像サイトマップは、JavaScript(React、Vue、Next.js)で読み込まれる画像で特に重要です。Googlebotはクロール時に必ずしもJSを実行しないため、サイトマップは画像をインデックスに登録させる確実な手段になります。

FAQ

代替テキストは検索順位に直接影響しますか?
影響はありますが、間接的です。代替テキストは、ページと画像のトピックをGoogleが理解する助けになります。ターゲットキーワードを含めて適切に書けばページの関連性が高まりますが、alt属性へのキーワードの詰め込みはスパムとして扱われます。
WebPとAVIFはどちらが良いですか?
AVIFは圧縮率が優れており(WebPより20〜30%効率的)、ブラウザーの対応はやや劣り、低スペックの端末ではデコードが遅くなります。最適な構成は、<picture>によるAVIF → WebP → JPEGです。多くのプロジェクトでは、現時点ではWebPが安心できる選択肢です。
すべての画像をインデックス登録の対象にする必要がありますか?
いいえ。装飾的な画像(背景、区切り線、意味のないアイコン)は、インデックスに登録されなくて問題ありません。空のalt=""を指定すれば、インデックス登録時にその画像を読み飛ばすシグナルになります。注力するのは、スクリーンショット、図、商品写真といったコンテンツ上の画像です。
Googleが画像をインデックスに登録しているかどうか、どう確認しますか?
Google Search Consoleで「インデックス登録」→「ページ」を開きます。特定の画像は、Google画像検索でsite:your-domainを入力して確認します。GSCのURL検査ツールも使い、画像がGooglebotにアクセスできる状態か(robots.txtでブロックされていないか)を確かめます。
widthとheightの属性は必須ですか?
はい。CLS(Cumulative Layout Shift)を防ぐためです。これらの属性がないと、読み込み前にブラウザーが画像サイズを把握できず、コンテンツが動いてしまいます。CLSはCore Web Vitalsのスコアに直接影響し、2021年からランキングシグナルになっています。

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it