HTML見出しタグH1〜H6の使い方:SEO完全ガイド
H1〜H6は文書の意味的な階層であり、文字サイズの指定ではありません。SEO、読みやすさ、アクセシビリティを満たす見出し構造の作り方を解説します。
HTMLの見出しは、<h1>から<h6>までの6段階です。SEOでH1が重要なことは多くの人が知っています。一方で、H2やH3以下の役割、検索エンジンのクローラーとの関係、階層が崩れるとSEOにもユーザーにも悪影響が出る理由は、あまり理解されていません。
Googleのクローラーにとって、見出しタグは文書の目次です。ロボットは見出しからページのテーマと下位テーマを読み取り、検索クエリに対する文書の関連性を判断します。階層の抜け、H1の重複、見た目だけのために使った見出しがあると、この地図が壊れます。
H1〜H6の見出しタグとは
H1〜H6は、見出しを6段階の重要度で示すHTMLの要素です。H1がページのメイン見出しで、H6が最も深い階層の小見出しです。各レベルは、クローラーに「このセクションの内容はこのテーマについてです」と伝えます。
見出しレベル
HTMLにはH1〜H6があります。実際にはH1〜H3だけのページがほとんどです
H1のないページ
HTTPArchiveによると、Web上の約12ページに1ページにH1タグがありません
GoogleがH1を採用
スニペットでGoogleがtitleではなくH1のテキストを使う割合(Zyppy、2021年)
H2のクエリへの流入
H2見出しがカバーする副次的なクエリ経由のオーガニックトラフィックの推定割合
見た目の装飾(<b>、<big>、CSSクラス)と違い、見出しタグは意味を持ちます。ブラウザーはH1をデフォルトで大きな太字にしますが、サイズは副次的な結果にすぎません。CSSでH6をH1より大きく見せることもできますが、意味は変わりません。検索エンジンやスクリーンリーダーにとって、主見出しはあくまでH1です。
階層:H1、H2、H3とそれ以下
正しい見出し階層は、本の目次と同じ構造です。書名がH1、章がH2、章の中の節がH3、その下の細かい項目がH4以降にあたります。この構造を崩すのは、本から章を破り取ってページをシャッフルするようなものです。
<!-- Correct hierarchy -->
<h1>Guide to Welders' Protective Clothing</h1>
<h2>Types of protective clothing</h2>
<h3>Fire-resistant suits</h3>
<h3>Protective masks</h3>
<h2>Regulatory standards</h2>
<h3>EN ISO 11612</h3>
<h3>ANSI/ISEA standards</h3>
<h2>How to choose</h2>
<!-- Wrong hierarchy (skipped levels) -->
<h1>Guide to protective clothing</h1>
<h3>Fire-resistant suits</h3> <!-- H2 skipped! -->
<h5>Standards</h5> <!-- H4 skipped! -->H1:ページのテーマ
1ページに1つだけ置きます。文書全体を表し、メインのターゲットキーワードを含めます。ユーザーが着地して最初に目にする要素です。
H2:セクション
ページを大きなテーマごとのブロックに分けます。H2はそれぞれ、副次的なクエリの入口であり、強調スニペットの取得元にもなります。
H3〜H6:詳細
H3はH2の中に、H4はH3の中に入れ子にします。ほとんどの記事は3階層で足ります。H4〜H6が出てくるのは、複雑な技術文書やリファレンスです。
H4〜H6が必要になる場面
H4、H5、H6を使う場面は多くありません。4階層以上の入れ子が必要な大規模な技術文書に限られます。たとえば法律の契約書、APIドキュメント、医療プロトコルです。ブログ記事やランディングページなら、H1〜H3の3階層で足ります。
見出しがSEOに与える影響
見出しタグはどれも関連性のシグナルです。レベルが上がるほどシグナルは強く、H1はH2より、H2はH3より重みがあります。ただし、どの見出しも、文書が検索クエリにどれだけ合っているかの評価に関わります。
| タグ | SEO上の役割 | キーワードを置く場所 |
|---|---|---|
| H1 | メインのテーマを示すシグナル。Googleがスニペットでtitleの代わりに使うことがある | メインのターゲットクエリを自然に1回だけ |
| H2 | 副次的なテーマとサブクエリ。強調スニペットや「他の人はこちらも質問」に出る | 副次的なクエリ、LSI用語、検索で見かける質問 |
| H3 | H2の掘り下げ。直接の影響は小さいが、ロングテールの検索順位に効く | 絞り込みのクエリ、具体例、手順のステップ |
| H4〜H6 | SEOへの直接の影響は最小限。構造のための要素 | 特定のキーワードを狙う必要はない |
Googleは見出しを使って強調スニペットを作ります。ユーザーが質問すると、H2またはH3がクエリとよく一致し、直後のコンテンツブロックが直接の答えになっているページを探します。よく練ったH2見出しは、検索結果の「0位」を狙える無料の候補です。
見出しは内部リンクにも関わります。リンク先ページのH2に合わせたアンカーテキストは、関連性を強めます。サイトマップにも関わります。CMSによっては見出しにid属性を自動で付けるため、ページ内の深いセクションを指すアンカーURLができ、XMLサイトマップから直接参照できます。
アクセシビリティとスクリーンリーダー
スクリーンリーダーは視覚に障害のあるユーザー向けの支援ソフトで、ページ内の移動に見出しタグを主に使います。ユーザーはHキーで見出し間を移動し、ページの目次を耳で確認します。見出し階層が崩れていると、この移動が役に立たなくなります。
WCAG 2.1の達成基準1.3.1「情報及び関係性」では、見出しはスタイルではなく、意味を持つHTMLタグで実装することが求められます。font-size: 24px; font-weight: boldを指定したボタンは、スクリーンリーダーにとって見出しではありません。<h2>なら見出しです。この差は大きなものです。
見出しを使うときのルール
実務のほとんどの場面は、次の5つのルールでカバーできます。
H1は文書全体のテーマを示すもので、テーマは1つだけです。H1が複数あるとシグナルが薄まり、スクリーンリーダーも混乱します。HTML5では、<section>要素ごとに複数のH1を置くことが技術的には認められています。ただしGoogleは今でも、ページをフラットな文書として処理します。
H1の次はH2、H2の次はH3です。H1からH3へ飛ばさないでください。階層が崩れ、アクセシビリティにも反します。セクションを閉じて上位レベルに戻るのは問題なく、禁止なのは下方向に飛ばすことだけです。
メインのクエリはH1に入れます。副次的なクエリとLSI用語はH2に入れます。H3以下は具体的な詳細を扱うため、キーワードを狙うことは優先しません。詰め込まず、1つの見出しに1つのクエリとします。
見出しタグは文字サイズを変えるための道具ではありません。文字を大きくしたいだけでH3を使うなら、<strong>かCSSクラスを使います。見出しを使うのは、新しい論理的なセクションが始まる場所だけです。
見出しは、ユーザーが一目で理解できる必要があります。「溶接作業服の選び方:4つの基準」は良い見出しです。「溶接 作業服 購入 特徴」は良くありません。自然な言葉のほうが、ユーザーにも検索エンジンにも伝わります。
見出し構造でよくある間違い
これらのエラーは、小さなブログから大規模なプラットフォームまで、ほとんどのサイトの監査で見つかります。
- ページにH1が複数ある。大きなブロックをすべてH1で囲むビジュアルビルダーが原因になりがちです。Screaming Frogの「H1」→「Multiple」で見つかります。修正は、H1を1つ残し、残りをH2またはスタイルを付けた
<div>に置き換えます。 - 見出しを意味ではなく装飾に使っている。デザイナーが「ちょうどいいサイズに見える」という理由でH2とH3を飛ばしてH4を選んだ例です。クローラーにはH1→H4→H1→H4と見え、構造ではなく混乱が伝わります。
- H1がない。リニューアルやCMS移行のあと、テンプレートからH1が消えることがあります。H1のないページは、ページ内で最も重要な関連性のシグナルを失います。
- 全ページのH1がサイト名になっている。 CMSのテンプレートが会社名をH1に一括で出力しています。全ページが同じH1になり、サイト全体で重複し、関連性はゼロになります。
- 入れ子で階層を飛ばしている。 H1→H3(H2がない)、H2→H4(H3がない)などです。スクリーンリーダーはエラーを通知し、クローラーは下位セクションの文脈を見失います。
- 見出しタグの代わりに
<p>や<div>を使っている。見た目は見出しでも、検索エンジンやスクリーンリーダーには見出しとして認識されません。古いテンプレートによくあります。 - 見出しが長すぎる。 3文あるH2は見出しではなく段落です。見出しは一目で読み切れる長さにします。目安は4〜12語です。
<!-- BAD: typical template with errors -->
<div class="title">Workwear catalogue</div> <!-- not H1! -->
<h1>Acme Workwear Ltd</h1> <!-- H1 = company name -->
<h1>Winter workwear</h1> <!-- second H1 -->
<h3>Fire-resistant suits</h3> <!-- H2 skipped -->
<!-- GOOD: correct structure -->
<h1>Winter welders' workwear catalogue</h1>
<h2>Fire-resistant suits</h2>
<h3>Suits to EN ISO 11612</h3>
<h3>Suits to ANSI Z49.1</h3>
<h2>Protective masks and shields</h2>見出し構造を監査するツール
| ツール | 種類 | チェックできる内容 | 無料 |
|---|---|---|---|
| Screaming Frog SEO Spider | デスクトップ | サイト全体のH1〜H6:欠落、重複、長さ | 最大500 URLまで |
| Chrome DevTools(Elements) | ブラウザー | 個別ページのセマンティクス、入れ子、見出しのid | あり |
| HeadingsMap(Chrome/Firefox拡張機能) | 拡張機能 | ページの見出しマップをリアルタイムで表示 | あり |
| WAVE Web Accessibility Tool | オンライン / 拡張機能 | アクセシビリティのエラー:階層の飛び、H1の欠落、順序の誤り | あり |
| Netpeak Spider | デスクトップ | 大量クロール:サイト全体のH1〜H3、Excelへのエクスポート | トライアル |
| Google Search Console | オンライン | 間接的に確認:Googleがスニペットで使う見出し | あり |
| Ahrefs Site Audit | オンライン | H1の欠落、H1の複数指定、H1とtitleの一致、見出しの長さ | 有料 |
$$('h1,h2,h3,h4,h5,h6').map(h => h.tagName + ': ' + h.textContent.trim())を入力します。ページ上の見出しが順番どおりに一覧で表示されます。// Quick heading hierarchy check in the browser console
const headings = $$('h1,h2,h3,h4,h5,h6');
const report = headings.map(h => ({
tag: h.tagName,
text: h.textContent.trim().slice(0, 60)
}));
console.table(report);
// How many H1s are on the page?
const h1Count = $$('h1').length;
console.log(`H1 count: ${h1Count}`, h1Count === 1 ? '✓' : '✗ ERROR');見出し構造のチェックリスト
H1
- サイトの全ページにH1がちょうど1つある
- H1にそのページのメインのターゲットクエリが含まれている
- H1がtitleタグと意味で一致している(表現は違ってよい)
- H1がテンプレートで重複せず、サイト全体で一意になっている
- H1が空ではなく、画像だけでもなく、CSSで非表示にもなっていない
H2
- H2がH1の次に、レベルを飛ばさず続いている
- H2がそれぞれ、ページの異なる主要セクションを表している
- H2に副次的なクエリとLSI用語が自然に(詰め込まずに)入っている
- H2の書き方が強調スニペットの足がかりになる
- 見た目のためだけのH2がなく、新しいテーマのセクションが始まる場所だけにある
H3〜H6
- H3がH2の中に、H4がH3の中に入っている(下方向にレベルを飛ばしていない)
- H4〜H6は、深い入れ子が本当に必要なときだけ使っている
- 見た目のサイズを理由に、H2の代わりにH3〜H6を使っていない
- 見出しだけをざっと読むと、論理的な目次として読める
アクセシビリティ
- HeadingsMapまたはWAVE拡張機能で見出しの順序を確認した
- すべての見出しが、スタイルを付けたdivではなく、意味を持つHTMLタグで実装されている
- 非表示の見出しがない(
display: none、visibility: hidden) - すべての見出しに意味のある内容があり、空の見出しやプレースホルダーがない
FAQ
監査やコンテンツチームのワークショップでよく出る、見出し構造についての質問をまとめました。
1ページに複数のH1を使えますか?
<section>要素ごとに複数のH1を置くことが形式上は認められています。これが「アウトラインアルゴリズム」です。ただ実際には、Googleもほとんどのスクリーンリーダーも、ページをフラットな文書として処理し、複数のH1をエラーとして扱います。実務では、1ページにH1は1つとします。見出しの数はSEOに影響しますか?
すべての見出しにid属性が必要ですか?
idでアンカーリンク(/page#section)ができ、ユーザーが使いやすくなり、ディープリンクも可能になります。強調スニペットでは、Googleがアンカー付きのURLを使うことがあります。CMSやSSG(Next.js、Gatsby)は、通常idを自動で生成します。H2やH3が、それぞれ独自のクエリで上位表示されることはありますか?
ロゴやナビゲーションのマークアップはどうすればよいですか?
<a>、<nav>、<span>、<p>を使います。H1は、ページのメインコンテンツ内で最初に出てくる見出しにします。Check it with SpiderHead
Free and local: run the audit on your own machine.



