HTMLでフォームを作り始めたばかりの頃は、input タグだけを書いて「入力欄は表示できたからこれでOK」と思いやすいです。ですが実際には、入力欄が見えていることと、その欄が何のためのものかを相手が迷わず理解できることは別の話です。
そこで最初に、labelタグの定義から入るのではなく、実際のフォームの見え方を比べてみましょう。labelタグは地味なタグですが、フォームの伝わりやすさをかなり大きく変えます。
まず見てください:labelなしとlabelありではフォームの伝わり方が変わる
下の画像は、左が label を使わずに入力欄だけを置いた例、右が label を使って項目名を明示した例です。どちらもフォームとしては表示されますが、ユーザーが受け取る情報量には差があります。

この画像で見てほしいのは、単に「右のほうがきれい」という話ではないことです。左側のフォームは入力欄自体は表示されていますが、項目名が画面に残りにくく、何を入力する欄なのかが伝わりにくくなっています。一方で右側のフォームは、メールアドレスやパスワードといった項目の意味が画面上にはっきり残るので、初めて見た人でも迷いにくくなります。
- 左: 入力欄はあるが、項目名を placeholder に頼っていて意味が弱い
- 右: label があるので、何の欄かが見た瞬間に分かる
- チェックボックスも、説明文が近くにあることで操作しやすく見える
つまり labelタグは、フォームの見た目を飾るためのタグではなく、フォームに意味を与えて、迷わず使える画面に近づけるためのタグです。

labelタグは「フォームに説明書きを付けるタグ」と考えると、最初は理解しやすいです。
結論:labelタグはフォーム部品に「この欄の意味」を与えるタグ
結論からいうと、labelタグとは、入力欄やチェックボックスなどのフォーム部品に対して「これは何を入力・選択する場所か」を伝えるためのタグです。表示用の文字を置くだけでなく、フォームの理解しやすさ、クリックしやすさ、アクセシビリティにも関わります。
- 入力欄やチェックボックスに項目名を与えられる
- label の文字をクリックしたときにも対象を操作しやすくできる
- スクリーンリーダーなどにも項目の意味を伝えやすくなる
特に会員登録フォーム、問い合わせフォーム、アンケート画面のように、項目が複数並ぶ場面では labelタグの有無がそのまま使いやすさの差になります。
なぜ入力欄だけでは足りないのか
ここで一度、なぜ labelタグが必要になるのかを前提から整理します。ブラウザは input タグを書けば入力欄を表示してくれますが、その入力欄が「氏名」なのか「メールアドレス」なのか「自由記述」なのかまでは、箱だけ見ても分かりません。
<input type="text" name="email">
このコードでも入力欄は表示されます。ですが、問い合わせフォームや会員登録画面でこれだけが置かれていたら、ほとんどの人は「これは何を入れる欄だろう」と迷います。つまりフォームでは、入力欄を作ることよりも先に、その欄の役割を相手に伝えることが大切です。
さらに初心者の方がやりがちなのが、項目名を placeholder だけで済ませてしまう書き方です。ただ、placeholder は入力が始まると薄くなったり消えたりするので、項目名そのものを支える役割には向きません。だからこそ、項目名をきちんと残す labelタグが必要になります。
表示結果とコードを対応させて見ると、labelの役割が分かりやすい
次に、先ほどの「labelあり」のフォームが、どんなコードでできているのかを見てみましょう。ここでは、メールアドレス欄、パスワード欄、チェックボックスという初心者にも身近な例に絞ります。
<label for="user-email">メールアドレス</label> <input type="email" id="user-email" name="user-email" placeholder="sample@example.com"> <label for="user-password">パスワード</label> <input type="password" id="user-password" name="user-password"> <label for="agree">利用規約に同意する</label> <input type="checkbox" id="agree" name="agree">
このコードで大切なのは、見える文字と、フォーム部品そのものが分かれている点です。メールアドレスやパスワードという文字は label で表し、実際に入力を受け取る箱は input で表しています。つまり HTML の中で、「説明する役割」と「入力してもらう役割」がきちんと分かれているわけです。
| コード | 画面で起きること |
|---|---|
<label>メールアドレス</label> | 入力欄の項目名として「何の欄か」が先に見える |
placeholder="sample@example.com" | どのような形式で入力するかの補足ヒントになる |
<label>利用規約に同意する</label> | チェックボックスの意味が見えやすくなり、操作の迷いが減る |
このように、コードを表示結果に対応させて見ると、labelタグは「文字を追加している」のではなく、フォームの意味を見える形で残しているのだと分かります。
labelタグとは何か
label タグは、フォーム部品に対するキャプション、つまり説明文や項目名を表すタグです。対象になるのは、テキストボックス、チェックボックス、ラジオボタン、プルダウン、テキストエリアなどのフォーム要素です。
たとえば「お名前」「メールアドレス」「利用規約に同意する」といった文言は、見た目の文字として置くだけでも人間は何となく理解できます。ですが HTML として正しく関連付けておかないと、ブラウザや支援技術から見ると、単に近くに置かれた文字でしかありません。labelタグは、その説明文をフォーム部品と正式に結び付ける役割を持っています。
MDN でも、label と input を関連付けることで、スクリーンリーダーがラベルを読み上げやすくなり、さらにラベルをクリックして入力欄をアクティブにできる点が利点として説明されています。つまり labelタグは、見た目の補助ではなく、フォームを正しく使ってもらうための土台です。
for と id は、label と input を結び付けるために使う
ここまでで「label が項目名を表す」ことは見えてきたと思います。次に知っておきたいのが、label と input が HTML の中でどう結び付くかです。初心者の方が最初に覚えるなら、for 属性と id 属性を対応させる書き方がいちばん分かりやすいです。

図の左が label for="email"、中央が input id="email" です。この2つの値が一致すると、「この label はこの input を説明している」という関係が HTML 上で成立します。その結果として、ラベル文字をクリックしたときに入力欄へ移動しやすくなったり、読み上げ時に意味が伝わりやすくなったりします。
for: どの入力欄を説明するのかを label 側で指定するid: 入力欄の識別子を input 側で持つ- 両方の値が一致すると、label と input が関連付く
<label for="email">メールアドレス</label> <input type="email" id="email" name="email">
この書き方なら、コードを後から読み返したときも関係が追いやすいです。input を label の中に入れる書き方もありますが、初心者のうちはまず for と id を使う基本形から覚えるほうが混乱しにくいです。
実務では、会員登録フォームやチェックボックスで特に効く
labelタグは勉強用サンプルよりも、実際の画面でこそ価値がはっきり出ます。ここでは初心者の方がイメージしやすいように、よくある実務場面に結び付けて見てみます。
会員登録フォームや問い合わせフォーム
会員登録フォームでは、氏名、メールアドレス、パスワードのように似た入力欄が縦に並びます。ここで label がないと、どの欄に何を入れるのかが一目で分からず、入力ミスが起きやすくなります。問い合わせフォームでも、「件名」「本文」「返信先メールアドレス」といった項目は、項目名が残っているからこそ迷わず書き進められます。
とくに入力項目が3つ、4つと増えてくると、label は「あると丁寧」ではなく「ないと不親切」な要素になっていきます。
チェックボックスやラジオボタン
チェックボックスやラジオボタンでは、labelタグのありがたみがさらに分かりやすいです。小さな四角や丸だけを正確に押すのは意外と大変ですが、label で関連付けておくと、説明文が近くにあることで何の選択肢か分かりやすくなり、操作のストレスも減ります。
<label for="agree">利用規約に同意する</label> <input type="checkbox" id="agree" name="agree">
利用規約への同意、メール配信の希望、性別の選択肢など、実務のフォームでよく出てくる部品ほど label の効果が見えやすいです。つまり実務では、labelタグは「正しいHTMLを書くためのお作法」ではなく、入力ミスや操作ストレスを減らすための実用品として使われています。
placeholderとの違いを分けて考えると混乱しにくい
初心者の方がよく混乱するのが、「placeholder があるなら label はいらないのでは?」という点です。ここは役割をきちんと分けると理解しやすくなります。
| 要素 | 主な役割 |
|---|---|
label | この欄が何の項目かを伝える |
placeholder | どんな形式で入力するかのヒントを補足する |
placeholder は便利ですが、入力が始まると消えたり薄く見えたりするため、項目名そのものを担う役割には向きません。MDN でも、placeholder を label の代わりとして使ってはいけないと説明されています。だから覚え方としては、label は必須の説明、placeholder は任意の補足で十分です。
たとえば「メールアドレス」という label の下に、placeholder として sample@example.com を入れるのは自然です。逆に label を消して placeholder だけにすると、入力中に「この欄は何だっけ?」となりやすくなります。
よくあるミスと注意点
forの値とidの値が一致していない- 入力欄の近くに文字を書いただけで、labelタグを使っていない
- 複数の入力欄で同じ
idを使ってしまう placeholderを label の代わりにしてしまう- label の中に余計なリンクやボタンを入れて、どこが何を説明しているのか曖昧になる
特に見落としやすいのが、入力欄の近くに文字を書いただけで満足してしまうケースです。人間の目では近くにある文字を見て何となく理解できますが、HTML としては「説明文がたまたま近くにある」だけで、正式な関連付けがありません。初心者のうちは、見た目で判断するより、label と input をセットで書く癖を付けておくのがおすすめです。
フォーム全体の役割を先に整理したい方は、formタグとは? や、HTMLの基本構造を見直したい方向けの HTMLの書き方の基本 も一緒に読むと、labelタグの位置づけがさらに分かりやすくなります。
まとめ
labelタグは派手ではありませんが、フォームを「表示できるだけのもの」から「前提知識がない人でも迷わず使えるもの」に近づける重要なタグです。まずは for と id を使った基本形から練習して、入力欄のそばに文字を置くだけで終わらせず、入力欄と説明をきちんと結び付ける意識で書いてみてください。
