input要素は、type属性の指定によって表示形態がことなる。

例えば、フォームの中で'<input type="text">'と記述すれば、テキスト欄が表示される。
また'type="submit"'と記述すれば、送信ボタンになる。

type属性にはいくつかの指定要素が存在するが、その中に"hidden"がある。
"hidden"を指定されたinput要素は、ブラウザの画面上に何も表示されない。

hiddenを指定しても改行をともなわず、タグ位置にスペースが入ることもない。
HTMLドキュメントを描画する際には完全に無視された存在になっている。

描画された画面からはわからないが、リストのフォームから送信すると、きちんとaction属性で指定されたページに、hidden要素が指定されたinput要素も送信される。

書籍や雑誌に掲載されれているサンプルコードにhiddenを入れている例は少ない。
一方、実際にWEBサイトを構築するとhidden要素の使用頻度は想像以上に高い。

hiddenは、閲覧者に意識させることなく裏側でデータをサーバーに送信する

例えば1ページに1問ずつ回答、合計3問のアンケートサイトの場合。
実際にデータを送信するのは、3ページ目の処理になる。

この場合、1ページ目の入力内容を2ページ目、3ページ目でも維持しておけなければならない。
1ページ目でテキストを入力、2ページ目はその結果をhiddenに入れておく、3ページ目に送信するといった処理を行う必要がある。 

このように、直前のページから得た入力値をブラウザの画面に見せることなく、次のページに引き継ぐ手法としてhiddenは有効。
 
ただし、データを引き継ぐためにはJavaScript、またはサーバーサイドの処理が必要。
POSTで送信する場合、JavaScript(GETしか処理できない)が使用できない

尚、POSTで送信するとhiddenで指定された入力値は画面上には表示されないが、HTMLドキュメントのソースを見られてしまうと値がみえてしまう。よって完璧に隠すこそはできない。

よってhidden指定値は、簡易的にログイン状態の保持などに使用できるが、IDやパスワードを格納しておく使い方は危険であることがわかる。