HTML5
HTML5（エイチティーエムエル・ファイブ）は、HyperText Markup Languageの5回目に当たる大幅な改定版である。
HTML5はWeb Hypertext Application Technology Working Groupによって2004年に定められたWeb Applications 1.0にWeb Forms 2.0を取り入れたものがWorld Wide Web Consortiumの専門委員会に採用され、World Wide Web Consortiumより2008年1月22日にドラフト（草案）が発表され、2014年10月28日に HTML5 が勧告され、2016年11月1日に HTML 5.1 が勧告され、2017年12月14日に HTML 5.2 が勧告された。
改訂の主要目的のひとつとして、人間にも読解可能で、尚且つ、コンピュータやデバイス（ウェブブラウザ、構文解析器など）にも矛盾せず読解されるとともに最新のマルチメディアをサポートする言語に向上することである。HTML5ではHTMLだけでなくXHTML、DOMのHTML関係の部分、ECMAScriptのAPIも追加になっている。
表記は、「HTML 5.1」のようにバージョン表記で小数点以下を含める場合はHTMLと5.1の間にスペースを入れ、「HTML5」のように小数点以下を含めない場合はHTMLと5の間にスペースを含めない表記法が採用されている。過去のバージョンについても、「HTML4」や「HTML 4.0」という表記法が使われている。Extensible Markup Languageの文法で記述する場合は、「XHTML5」と表記する。
HTML5は、プロプライエタリなプラグインとして提供されているリッチインターネットアプリケーションのプラットフォーム（JavaFX、Adobe Flash、Microsoft Silverlight 等）を置き換えることを標榜しており、ウェブアプリケーションのプラットフォームとしての機能やマルチメディア要素が実装されている。そのためHTML5が普及すればAdobe Flashなどのプラグインは不要になるという意見がある（後述）。
2008年以降に発表されたウェブブラウザの多くはHTML5に段階的に対応している。Google Chrome 3.0以降、Safari 3.1以降、Firefox 3.5以降、Opera 10.5、Internet Explorer 9などであり主にaudio要素・video要素・canvas要素への対応が進んでいる（2010年3月現在）。またWebSocketなど、当初HTML5の一部とされていたものの切り離され別の規格として策定作業が進められているものがある。
厳密には別仕様書として分離されているものの、一般的には、Web Storage・WebSocket・Geolocation API・XMLHttpRequest Level 2などもHTML5に含める場合が多い。
W3CのHTML5 Logoでは以下のカテゴリをHTML5に含めている。
HTML Living Standardは、WHATWGが策定しているHTMLの標準仕様である。W3Cの勧告するHTML5およびそれ以降（HTML 5.1など）は、HTML Living Standardを基にしている。ただし、W3C側で変更がなされており、両者には差異が生じている。ウェブブラウザの開発元では、HTML Living Standardのほうがよく参照されている。
文書の文字コードにはUTF-8を推奨している。文書の文字コードの指定は、meta要素におけるcharset属性で指定する。これとHTTPレスポンスヘッダーのcontent-typeでエンコード宣言が省略された場合はUTF-8が既定となる。またcharset属性を含めたmeta要素は文章先頭から1024バイト以内に記載する必要がある。
従来のHTMLやXHTML規格は、仕様に書かれた文書構造のルールだけではなく、妥当性検証のためのDTD（およびそのほかのスキーマ）を提供していた。一方、HTML5仕様ではスキーマは提供されない。文書構造のために提供されるのはHTML5仕様に列挙されている各種ルールのみである。
HTML5仕様は以下のふたつの構文を採用している。
一方、従来のHTML仕様はSGMLをその構文に採用している。SGMLおよびその関連仕様を参照しており、規格ごとに以下のような差異もある。
主にこのような違いのために、HTML5と従来のHTMLとの間には基本的な文法の差異が多い。以下にその代表的な例を挙げる。
SGMLを採用していた従来のHTML規格においては、HTML文書は本質的にSGML文書であったため、HTML規格がそれぞれ提供するSGML宣言を文書の先頭に記述することが仕様上許されていた。一方HTML5の仕様では、HTML構文、XHTML構文のいずれを用いた場合でも、文書中にSGML宣言を記述することは許されていない。
HTML5仕様においては、文書型宣言はもはやモード指定以外の意味をなさず、その書式は “codice_1” である。
HTML構文では文書型宣言は必須である。XHTML構文では、HTML5で導入される新しい機能を利用する場合は必須、それ以外の場合は文書型宣言は必須ではない。
従来のHTML規格で提供されていたDTDがなくなり、また文書型宣言の書式が決まっているため、HTML5ではDTDが利用できず、DTDに依存する多くの機能のほとんどが扱えなくなる。例としては、HTML4以前に扱えていた文字実体参照のほとんどがHTML5では扱えなくなる（XMLは文書内部にDTDを書くこともできるが、上記の文書型宣言の決まりを無視する結果となるため、HTML5の仕様の範疇ではない）。
SGMLを採用していた従来のHTML規格では、文書内に処理命令 (Processing instruction) を記述することができた。実際に用いられている例として、DTDを他の処理系で利用するための "architectural support declaration" が存在する (ISO/IEC 15445)。
一方、HTML5仕様におけるHTML構文ではSGMLの処理命令は記述できず、同様の機能も利用できない。XHTML構文であればXMLの処理命令は書ける。
SGMLを採用していた従来のHTML規格では、マーク区間 (marked section) と呼ばれる仕組みが利用できた。以下に例を挙げる。
上に挙げた例のうち、HTML5仕様で利用できるのはCDATAセクションのみである。
SGMLのコメントは "-- コメント文 --" という形を取り、マーク宣言中の空白文字の出現が許されている場所に任意の回数書くことができる。したがって従来のHTMLでは文書型宣言の中などでもコメントを挿入することが可能で、例えばISO/IEC 15445の文書型宣言は
のようにも書ける。一方、HTML5の文書型宣言にはコメントを挿入することはできない。
また、注釈宣言の扱いも従来のHTMLとHTML5では異なる。SGMLを採用していた従来のHTMLでは注釈宣言の中に任意の回数コメントを書くことができるが、HTML5ではHTML構文でもXHTML構文でもこのような書き方は認められていない。また、従来のHTMLでは注釈宣言内の最後のコメントと終了区切り子の間に空白文字を挿入することもできたが、HTML5ではこのような書き方も認められていない。
SGMLをもとにした従来のHTMLでは、タグやマーク宣言の終了区切り子 "codice_2" が、文字列　"codice_3", "codice_4"の直前に存在する場合、その終了区切り子 "codice_2" を省略することが仕様の上では許されていた。HTML5では終了区切り子の省略はできない。
SGMLにおける空タグ (empty tag) とは要素型名などが書かれていない空っぽのタグのことである。従来のHTMLでは空タグの存在を許しており、利用できる場所は限られるが、空開始タグ "codice_6" と空終了タグ "codice_7" が仕様の上では記述できる。一方、HTML5では空タグを利用することはできない。
SGML規格には、NET（Null End Tag、簡略終了タグ）と呼ばれる仕組みが存在する。従来のHTMLでのNETは "/" であり、仕様上では、 "codice_8" という記述を "codice_9" と書くような記法が許されていた。
一方のHTML5に簡略終了タグという仕組みはない。ただし、後述する空要素の開始タグを "codice_10" などと記述する方法は、（従来のSGMLの立場では）NETを利用したものと解釈することはできる。XMLの空要素タグも、SGMLの立場からはNETおよび付属書KのNESTCを利用した記法であると解釈できる。
従来のSGMLおよびHTMLにおける空要素 (empty element) は、DTDで内容モデルを空 (EMPTY) と決められた要素のことである（例：br要素）従来のHTMLでは、空要素の終了タグを書くことは許されていない。よって例えば、br要素のタグを "codice_10" や "codice_12" のように記述することもできない。
HTML5のHTML構文における空要素 (void elements) は、内容を含むことができない要素のことである。空要素はその開始タグを "codice_2",　"codice_14" のいずれかで閉じることができる。例を挙げると、br要素のタグは "codice_15" と記述するほかに、XHTML構文のように "codice_10" と記述することもできる。ただし空要素の終了タグを書くことはできない。また、このような記法が許されるのは空要素または外部要素 (foreign element) のタグのみで、その他の要素の開始タグは "codice_2" で閉じねばならない。例えば、HTML5のHTML構文では内容を含まないp要素を "codice_18" のように書くことはできない。
XML仕様においては、空要素 (empty elements) は内容を含まない要素のことである。HTML5のXHTML構文では、空要素は直後に終了タグを伴う開始タグ（例："codice_12"）、あるいは空要素タグ（Empty-Elements。例："codice_10"）のどちらでも表現できる。
nav要素（ナビゲーションのブロック用）や footer要素（作者や著作権の状態を表すまとまり用）や section要素（節）や progress要素（進捗状況）など、特別な意味を持つ要素が追加される。これらは検索エンジンのインデックス作業を容易にする。また、マルチメディアのための audio要素や video要素や2次元ビットマップ画像を描画するための canvas要素も追加される。
HTML 4.01で非推奨だった font要素や center要素などのCSSによって実現されるべきマークアップはすべて廃止されることとしている。acronym要素も廃止され、abbr要素に一本化される。
lang属性は、XHTML構文における xml:lang属性のように空の文字列をとり得る。
HTML5ではマークアップだけでなく、API も新しく追加された。たとえば、以下のようなものである。
HTML5 (codice_21) 対応ブラウザは間違った構文を柔軟に処理できる。HTML5は、古いブラウザが新しいHTML5の構造を安全に無視することが出来るように設計されている。HTML 4.01とは対照的に、HTML5は対応したブラウザであれば間違った構文に対して同じ結果となるように、字句解析と構文解析のための詳細な規則を規定している。
2010年頃までに急速に普及したアップルのiPhoneとiPadがFlash非対応を貫き、スティーブ・ジョブズCEO（当時）がHTML5を支持しFlashを厳しく批判したことが大きな影響を与えた。iPhoneやiPadにFlash対応を求める声は多かったが、特にスマートフォン向けでは徐々にFlashからHTML5への転換が進んでいる。
Flashの開発元であるアドビシステムズは、かつて社をあげてFlashを擁護したが、2011年11月には、モバイルブラウザー用のFlash Playerの開発中止を発表した。（2013年には担当者でCTOだったケビン・リンチはAppleへ転職）2017年現在、アドビはHTML5の推進に積極的であり、FlashからHTML5への変換ツールなどをリリースしている。
スマートフォン向けのアプリの多くは、HTML5で開発されたウェブアプリケーションに置き換わるという見方がある。2011年にイギリスのフィナンシャル・タイムズ紙がHTML5による購読アプリを発表し注目を集めた。アップルのApp Storeには審査や課金に関する制約が大きく、Androidでは1つのアプリで様々なハードウェア仕様に対応する必要があるが、Webアプリケーションではそれらの制約を受けない。一方で各端末向けの公式アプリストアで配布されるネイティブアプリにもメリットはあるため、2012年時点では置き換えが大きく進んでいるわけではない。