// 無料ツール · HREFLANG タグ生成
hreflang タグ生成ツール
URL パターンをひとつと言語コードの一覧を入力すると、全言語版と x-default を含む hreflang の link タグ一式と、サイトマップ用の xhtml:link ブロックを生成します。無料・ブラウザ内で完結。
他の言語:English日本語
{locale} の位置に言語セグメントが入ります。小文字の言語コード(pt-br)に置き換えられ、セグメントが空ならサイトのルートになります。
ISO 639-1 の言語コード。必要なら -Script や -REGION を付けます(zh-Hant、pt-BR)。コードの後ろにパスを書くとそのページを指定できます(en /pricing/ で英語版をルートに)。完全な URL や独自のセグメント(zh-Hant tw)も書けます。
どの言語にも一致しない検索者に見せる版です。通常は英語版かルートのページを指定します。
hreflang タグの生成手順
パターンひとつ、一覧ひとつ、コピーボタン 2 つ。すべての URL をパターンから派生させるので、生成される一式は構造上、漏れがなく相互参照が完成しています。手作業の突き合わせは不要です。
- URL パターンを入力する。 どれか 1 つの言語版の URL を、言語セグメントの位置を {locale} にして書きます: https://example.com/{locale}/pricing/。コードは小文字で挿入され、空のセグメントはサイトのルートになります。
- 言語コードを列挙する。 1 行に 1 つ: en、ja、zh-Hant、pt-BR。パターンに従わない版(英語版がルートにある、など)は、コードの後ろにパスを書きます: en /pricing/。完全な URL や独自のセグメントも同じ書き方です。
- x-default を選ぶ。 どの言語にも一致しない検索者にどの版を見せるかを選びます。通常はルートか英語版です。省略もできますが、x-default のない一式はその判断を検索エンジンに委ねることになるため、生成ツールは警告します。
- 2 つのブロックをコピーする。 head 用ブロックは、変更せずに全言語版の head に貼ります。各ページは自分自身を含む全言語版を列挙する必要があります。サイトマップ用ブロックは、xhtml 名前空間を宣言した urlset の中に貼ります。どちらか一方で十分ですが、両方置く場合は内容を一致させてください。
hreflang が重要な理由 — そして相互参照が必須な理由
hreflang は link 要素の属性で、ページの各言語版がどの言語(必要なら地域も)向けに書かれているかを検索エンジンに伝えるものです。 これがないと、日本語で検索した人が英語版に着地し、日本語版は重複コンテンツ扱いでインデックスされないままになりえます。あれば Google は適切な版に差し替え、評価をグループ全体で統合します。分散させるのではなく。
多くのサイトがつまずくのは相互参照の要件です。すべての言語版が、ほかの全言語版と自分自身を列挙しなければなりません。ページ A が B を指しているのに B が A を指し返していなければ、Google はその注釈を信頼できないものとして捨てます。片側だけでなく、その組み合わせごとに。手で管理している一式は、言語を 1 つ追加した瞬間にずれます。だからこのツールは、パターン 1 つから完全な一式を書き出し、全ページに同じものを貼るための 1 ブロックを渡します。ページごとに揃え続けなければならない断片ではなく。
同じ派生ルールが clize.ai 自身の hreflang 一式を作っています。サイトマップも各言語ページも、ロケール接頭辞の一覧という 1 つのソースから生成されるので、ページがサイトマップと食い違う言語版を主張することはありません。
canonical タグと hreflang の併用
各言語版には自己参照の canonical が必要です。日本語版には <link rel="canonical" href="https://example.com/ja/pricing/"> のように、日本語版自身を指す canonical を置きます。canonical は head の中で版ごとに異なる唯一のタグなので、上の共通ブロックには含めていません。ページごとに書き、決して別の言語版を指さないでください。日本語版の canonical が英語の URL を指していると、Google に「代わりに英語版をインデックスせよ」と伝えることになり、そのページの hreflang 一式は無視されます。
残りの 2 つの要件も同じく機械的です。一式に含まれる URL はすべて 200 を返し、インデックス可能であること(リダイレクトも noindex も不可)。そして URL はスキームとホストを含む絶対 URL であること。このツールが出力するのは絶対 URL だけです。リダイレクトとインデックス状態はクロールで確認できます。自分のドメインなら clize seo check が各ページの現在の HTTP ステータスと Google のインデックス状態を無料で一覧にします。
言語コードと地域コード
hreflang の値は ISO 639-1 の言語コード(2 文字: ja、en、de)で、必要に応じて ISO 15924 の文字体系(zh-Hant、zh-Hans)と ISO 3166-1 alpha-2 の地域(ja-JP、en-US、pt-BR)を続けます。言語部分は必須で、地域だけ(jp)は無効です。日本でもっとも多い間違いは、日本語に ja ではなく国コードの jp を書いてしまうことです。jp は言語コードとして存在しません。地域には UN M.49 の数値コードも使えるため、ラテンアメリカ向けスペイン語の es-419 は有効です。
このツールは直せるものは直します。pt_br は pt-BR に、zh-hant は zh-Hant になります。認識できない言語はブロックせずに警告します。受け付けるコードの一覧は有限で、入力がタイプミスなのか本当に珍しい言語なのかは判断できないからです。公開前に警告を読んでください。コードと URL は別物です。URL のセグメントは既定で小文字(/pt-br/)になり、サイトの構成が違う場合は行ごとに上書きできます。
hreflang のよくある間違い
- 戻りリンクの欠落。 A は B を指すが B は A を指さない。その組み合わせは破棄されます。全言語版に同じ完全なブロックを貼ってください。
- 自己参照がない。 各ページは一式の中に自分自身を含める必要があります。生成されたブロックには含まれています。
- canonical が別の言語版を指している。 そのページは一式から外れます。全言語版で自己参照の canonical を。
- 相対 URL。 hreflang にはスキームとホストを含む絶対 URL が必要です。このツールはそれ以外を出力しません。
- 言語コードの代わりに国コード。
jp、us、ukではなくja、en-US、en-GB。ukはウクライナ語を意味します。 - リダイレクトや noindex のページが一式に含まれている。 一式の URL はすべて、生きていてインデックス可能な 200 でなければなりません。
- head とサイトマップで一式が違う。 どちらか 1 つに絞るか、ここでのように両方を同じソースから生成してください。
リンクするページに FAQ があるなら、その構造化データにも同じ「ソースは一つ」の原則が当てはまります。FAQ schema generator(英語)は JSON-LD と表示用 HTML を 1 つの一覧から書き出します。エージェント向けに llms.txt を公開しているなら、llms.txt 検証ツールにかけてください。そこでの相対リンクは、ここでの相対 hreflang と同じ種類の間違いです。
// よくある質問
hreflang とは何ですか?
hreflang は link 要素の属性で、ページの各言語版がどの言語(必要なら地域も)向けに書かれているかを検索エンジンに伝えるものです。Google はこれを使って検索者の言語と地域に合う版を表示し、各版を重複ではなく 1 つのグループとして扱います。
hreflang タグは全ページに必要ですか?
はい。すべての言語版が、ほかの全言語版と自分自身を列挙する必要があります(戻りリンク)。あるページが指す先のページが指し返していなければ、その 2 ページ間の注釈は無視されます。このツールが生成するブロックは全ページで同一なので、各言語版の head に変更せずに貼ってください。
hreflang の x-default とは何ですか?
x-default は、列挙したどの言語にも検索者が一致しないときに表示する版を指定します。言語選択ページ、ルートのページ、英語版などです。任意ですが推奨されており、指定がなければ検索エンジンが選びます。
hreflang は head とサイトマップのどちらに書くべきですか?
どちらか一方で十分です。head の link 要素、HTML 以外のファイルには HTTP の Link ヘッダー、または sitemap.xml の xhtml:link 要素です。言語版が多いページでは、サイトマップに書くと head が軽く保てます。両方使う場合は内容を一致させる必要があるため、同じソースから生成してください。
hreflang の日本語は ja と jp のどちらですか?
ja です。hreflang は ISO 639-1 の 2 文字の言語コードを使い、必要に応じて ISO 15924 の文字体系コードと ISO 3166-1 alpha-2 の地域コードをハイフンでつなぎます: ja、ja-JP、zh-Hant、en-US。jp は国コードであって言語コードではなく、地域だけの指定は無効です。es-419 のような UN M.49 の数値地域も使えます。
hreflang と canonical は併用できますか?
はい。ただし、各言語版が自己参照の canonical を持っていることが条件です。canonical が別の言語版を指していると、検索エンジンにそちらをインデックスするよう伝えることになり、そのページは hreflang のグループから外れます。
このツールで既存の hreflang タグをチェックできますか?
できません。このツールは URL パターンから、完全で相互参照のそろった一式を生成します。既存のタグと混ぜるのではなく、全言語版で生成したブロックに置き換えてください。古い、あるいは不完全な一式が残るページをなくすためです。
タグを置いたら、Google が実際に何を見ているかを確認する。
自分のサイトのチェックは無料です。各ページの現在の HTTP ステータスと Google のインデックス状態、Search Console の掲載順位と表示回数の前回比、流入元別のトラフィック(AI エンジンは別枠)を返します。エージェントの中からコマンド 1 つで。
$ npm i -g @clize/clize && clize install $ clize seo check --domain example.jp[ Clize の Agent SEO → ]