De HyperText Markup Language is een creatie van Tim Berners-Lee, de Brit die de opmaaktaal in 1991 ontwikkelde om wetenschappelijke documenten van CERN op een samenhangende manier toegankelijk te maken. Daarnaast was Berners-Lee verantwoordelijk voor de eerste server: CERN httpd.
De basis van het op sgml gebaseerde html is de tag, waarmee opmaak, plaatjes, scripts, stylesheets en natuurlijk links in een document kunnen worden opgenomen. Van sommige tags zijn begin- en eindversies, zoals <h1>
en </h1>
die het begin en einde van een koptekst aangeven. Andere tags zijn atomair, zoals <br>
voor een regeleinde of <img>
voor een afbeelding.
De mogelijkheden van html werden al snel onderkend en er verschenen in de loop der jaren steeds betere browsers, waaronder de beroemde Mosaic- en Netscape-browsers. De evolutie van html is min of meer parallel gaan lopen aan de mogelijkheden van browsers.
Hoewel de IETF in 1993 een eerste draft-versie van html opstelde, heeft html nooit een officiële versie 1.0 gekend. In 1995 keurde de IETF de html 2.0-specificatie wel officieel goed. Door de groeiende populariteit van het world wide web werden er al snel nieuwe opmaakmogelijkheden aan de html-specificatie toegevoegd. Zo kwamen er tabellen, formulieren en image maps.
In 1996 nam het World Wide Web Consortium, oftewel het W3C, het stokje over van de IETF. Mede met inspraak vanuit de nog jonge internetindustrie kwam in januari 1997 html 3.2 tot stand. In deze versie werden diverse visuele opmaaktags van Netscape opgenomen, terwijl een aantal propriëtaire tags van onder andere Microsoft Internet Explorer overboord werden gegooid.
De W3C kwam in december 1997 met een eerste versie van de html 4-specificatie, gevolgd door enkele kleine revisies. Html 4 werd duidelijk beïnvloed door de 'xml-hype' onder webdevelopers uit die tijd en de daaruit volgende xhtml-standaard, al was het W3C geen uitgesproken voorstander van xhtml. Uiteindelijk werden drie variaties van html 4 geïntroduceerd: een relatief weinig toegepaste frameset-definitie, een strict-uitvoering die de standaard zou moeten worden en waarbij inmiddels uitgefaseerde tags taboe waren, en een lossere transitional-variant. Die laatste groeide uit tot de meest gebruikte variant, samen met xhtml 1.x.