XHTML (angl. Extensible Hypertext Markup Language – rozšíriteľný hypertextový značkovací jazyk) je značkovací jazyk podobný HTML, ale s prísnejšou syntaxou. Zatiaľ čo HTML je aplikáciou SGML, veľmi pružného značkovacieho jazyka, XHTML je aplikáciou XML, obmedzenej podmnožiny SGML. XHTML 1.0 sa stalo odporúčaním W3C 26. januára 2000 a XHTML 1.1 zas 23. novembra 2010. XHTML podporujú všetky moderné prehliadače.
XHTML 1.0 sa oproti HTML 4.01 nelíši. Oba obsahujú tri typy DTD - Strict, Transitional a Frameset. XHTML neobsahuje menej elementov ani menej atribútov. Až v XHTML 1.1 boli úplne odstránené niektoré elementy, ktoré sme mohli nájsť v Transitional a Frameset verziách (X)HTML. Jednotlivé prvky, ktoré spolu tematicky súvisia, boli v jazyku XHTML 1.1 zaradené do modulov. Bola pridaná možnosť rozšíriť XHTML 1.1 o jazyk MathML 2.0.
W3C neskôr začalo pracovať na XHTML2, na tento účel vytvorili pracovné skupiny v marci 2007. Hlavnými rozdielmi je odstránenie všetkých atribútov upravujúcich vzhľad, rozmery a pozíciu prvkov jazyka. Jednotlivé moduly jazyka budú vyvíjané samostatne. Niektoré z nich sú už dokonca štandardizované (XForms, XLink, XPoint). XHTML2 nebolo nikdy vydané, pretože W3C ho už nepovažovali za nový štandard. Pracovná skupina bola rozpustená ku koncu roka 2009 a práca na XHTML2 ukončená. Prednosť dostal projekt pracujúci na vývoji HTML5.
Keďže XHTML je implementáciou XML, oproti HTML má niektoré dodatočné požiadavky, ktoré zjednodušujú jeho parsovanie a uľahčuje zapamätanie pravidiel človekom.
Značky musia byť písané malými písmenami.
Párové značky musia byť ukončené. (Značka "option" sa v XHTML považuje za párovú.)
<p>Toto je odsek.
<tr><td>Prvá bunka<td>Druhá bunka
<option>Možnosť 1
<p>Toto je odsek.</p>
<tr><td>Prvá bunka</td><td>Druhá bunka</td></tr>
<option>Možnosť 1</option>
Nepárové značky musia obsahovať koncovú lomku.
<br>
<input type="text" name="text1">
<br />
<input type="text" name="text1" />
Vlastnosti musia byť uvedené v úvodzovkách alebo apostrofoch.
<td colspan=3>
<td colspan="3">
Vlastnosti musia mať vždy uvedenú hodnotu.
<textarea readonly>Nejaký text</textarea>
<textarea readonly="readonly">Nejaký text</textarea>
Aby prehliadač vedel v XML dokumente rozlíšiť XHTML od iných značkovacích jazykov (SVG, MathML), musí mať koreňový element (<html>) uvedený menný priestor.
<html lang="sk">
<html xmlns="http://www.w3.org/1999/xhtml" lang="sk">