Hypertext Markup Language (HTML): cos’è e perché è un linguaggio di markup
L’Hypertext Markup Language (HTML) è il linguaggio di markup standard con cui si struttura il contenuto delle pagine web: non esegue calcoli né logica, ma usa tag ed elementi per definire cosa sono i blocchi di testo, le immagini e i link, in modo che il browser li interpreti e li mostri correttamente.
Hypertext markup language (HTML) in sintesi
- Cos’è: un linguaggio di markup che struttura testo, immagini e link di una pagina web tramite tag.
- Perché non è un linguaggio di programmazione: non ha variabili, cicli o condizioni; descrive solo struttura e significato del contenuto.
- Struttura minima: ogni documento parte da
<!DOCTYPE html>e contiene un<html>con<head>e<body>. - Tecnologie complementari: CSS gestisce la presentazione, JavaScript il comportamento interattivo.
- Stato attuale: resta lo standard di riferimento del web, mantenuto come Living Standard da WHATWG.
- Markup vs markdown: sono due cose diverse, con usi e livelli di complessità differenti.

Cos’è esattamente l’HTML
HTML sta per Hypertext Markup Language, in italiano linguaggio di marcatura per ipertesti. Nel mio lavoro lo definisco così ai clienti che non vengono dallo sviluppo: è l’insieme di tag che dice al browser come è fatta la pagina, non come deve apparire né cosa deve fare quando l’utente ci interagisce. Quella parte spetta a CSS e JavaScript.
Quando qualcuno mi chiede “a cosa serve l’HTML”, la risposta pratica è: a dare un nome a ogni blocco del contenuto. Un titolo, un paragrafo, un link, un’immagine: ognuno ha un tag che lo identifica, e il browser lo interpreta per decidere come renderizzarlo. Senza questa marcatura, un file di testo resterebbe solo testo, senza gerarchia né collegamenti.
Il browser legge i tag ma non li mostra: li usa come istruzione. Questo è un punto che confondo spesso vedo confuso nei brief che ricevo: chi non programma pensa che i tag compaiano nella pagina, mentre restano invisibili e servono solo all’interprete.
Perché si chiama “markup language” e non linguaggio di programmazione
HTML non è un linguaggio di programmazione perché non ha le caratteristiche che rendono un linguaggio “Turing completo”: niente variabili, niente cicli, niente condizioni logiche. Descrive solo la struttura di un documento, non calcola nulla ed esegue nessuna operazione. Se un ipotetico “programma HTML” dovesse sommare due numeri, non ci riuscirebbe: per quello serve JavaScript.
La distinzione che uso con chi gestisce un sito in autonomia è questa: se stai scrivendo tag che descrivono “questo è un titolo” o “questo è un link”, stai facendo markup; se stai scrivendo istruzioni che il computer deve eseguire in sequenza con delle condizioni, stai programmando. Un markup language come HTML, l’XML o anche il Markdown descrive dati; un linguaggio di programmazione li elabora.
Per lo stesso motivo HTML non si confronta bene con linguaggi come C++ o Python: non sono nella stessa categoria. Chiedere se HTML è “come” C++ equivale a chiedere se un indice del libro è come un motore: svolgono funzioni diverse, uno organizza, l’altro esegue.
Hypertext: il significato dei link
La parte “hypertext” del nome indica proprio i link: il tag <a> collega una pagina a un’altra, dentro lo stesso sito o verso un dominio esterno. È questa capacità di collegamento, non la marcatura in sé, a rendere il web un insieme navigabile di documenti invece di una raccolta di file isolati. Ogni link interno che costruisci in un silo di contenuti, in fondo, è questa funzione dell’HTML messa al servizio della struttura del sito.

Struttura di un documento HTML
Un file HTML, nella sua versione minima, ha sempre lo stesso scheletro: la dichiarazione del tipo di documento, l’elemento radice <html>, una sezione <head> con i metadati e una sezione <body> con tutto ciò che l’utente vede. Questa struttura non cambia da un sito all’altro: cambia il contenuto che ci metti dentro.
Esempio di pagina HTML di base e come crearla
Ecco la procedura che seguo quando devo mostrare a un cliente come è fatta una pagina, dalla prima riga al salvataggio del file:
- Apri un editor di testo (anche quello di sistema va bene) e crea un nuovo file con estensione
.html. - Scrivi
<!DOCTYPE html>come prima riga: dichiara che stai usando lo standard HTML5, quello attuale. - Apri l’elemento
<html>e, al suo interno, crea<head>e<body>. - Nel
<head>inserisci almeno<title>e i meta tag di charset e viewport: sono le informazioni che il browser e i motori di ricerca leggono per primi. - Nel
<body>scrivi il contenuto visibile (un titolo con<h1>, un paragrafo con<p>), salva il file e aprilo con un browser per verificarlo.
Il risultato è un documento come questo, che è già una pagina HTML completa e valida:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Titolo della pagina</title>
</head>
<body>
<h1>Il mio primo titolo</h1>
<p>Il mio primo paragrafo.</p>
</body>
</html>
Chi mi chiede “quanto tempo serve per imparare l’HTML” di solito si aspetta un numero. Non lo do, perché nessuna fonte seria lo misura in giorni: la sintassi di base, come quella dell’esempio sopra, si capisce in poche ore; padroneggiare elementi, attributi e semantica richiede pratica su pagine reali, non un weekend.
Elementi, tag e attributi: come funziona la marcatura
Un tag è il delimitatore racchiuso tra parentesi angolari, come <p> o </p>. Un elemento è l’unità completa: tag di apertura, contenuto, tag di chiusura. La differenza sembra sottile ma conta quando leggi la documentazione tecnica: “tag” indica il marcatore, “elemento” indica tutto il blocco.
Alcuni elementi non hanno contenuto e quindi non hanno tag di chiusura: si chiamano elementi vuoti. <img> e <br> sono gli esempi più usati: portano un’informazione (una fonte, un’interruzione di riga) ma non racchiudono testo.
Gli attributi si scrivono dentro il tag di apertura e aggiungono informazioni all’elemento: class e id servono per lo stile e per lo scripting, style applica regole CSS inline, gli attributi data-* permettono di collegare dati personalizzati a un elemento senza intaccarne il significato semantico. Sono quelli che userai più spesso se gestisci un sito con un builder o un CMS, perché spesso sono già inseriti dal tema e tu li personalizzi.
Un capitolo a parte meritano i tag semantici: <header>, <nav>, <main>, <section>, <article>, <footer>. Rispetto a <div> e <span>, che non comunicano alcun significato, questi tag dicono ai crawler e alla ricerca generativa cosa rappresenta quella parte di pagina. È un tema che riguarda l’accessibilità e la struttura semantica del sito nel suo complesso, più che la sintassi di base: qui mi limito a dire che la scelta del tag giusto non è un dettaglio stilistico, è un’informazione che Google e le AI leggono.
Una domanda che mi arriva spesso è “in che linguaggio è scritto l’HTML”: nessuno, l’HTML non è scritto in un altro linguaggio, è lui stesso il linguaggio di partenza; il motore che lo interpreta (il browser) è scritto in C++ o Rust, ma questo è un dettaglio dell’implementazione, non riguarda chi scrive pagine web.
HTML, CSS e JavaScript: chi fa cosa
HTML struttura, CSS presenta, JavaScript fa interagire. È la divisione dei compiti che consiglio di tenere a mente ogni volta che qualcuno propone di “sistemare” una pagina mettendo stili dentro i tag HTML invece che in un foglio CSS: funziona, ma a ogni modifica dovrai intervenire nel codice invece che in un punto solo.
Con il framework CSS giusto la parte di presentazione si gestisce in modo coerente su tutto il sito, senza duplicare regole di stile pagina per pagina. Sul fronte comportamento, un framework JavaScript interviene quando l’interattività supera quello che pochi script isolati possono gestire: form dinamici, filtri, contenuti che cambiano senza ricaricare la pagina.
Chi scrive JavaScript lavora quasi sempre sul Document Object Model (DOM), cioè la rappresentazione ad albero che il browser costruisce a partire dall’HTML: modificare un elemento via script significa modificare un nodo di quell’albero, non il file HTML originale sul server.
Sul lato numeri, Top Coding Languages for Computer Programming | 2026 … (2025) riporta che JavaScript è usato dal 66% degli sviluppatori professionisti nel Developer Survey 2025 di Stack Overflow: è il linguaggio che, nella pratica, lavora più spesso a fianco dell’HTML per dare comportamento alle pagine. Nello stesso report, Ecma International ha approvato ufficialmente le specifiche di Le novità di ECMAScript 2026 (2026) il 30 giugno 2026, a conferma che JavaScript, a differenza di HTML, evolve con revisioni annuali dello standard del linguaggio.
Markup vs markdown: differenze che contano quando scrivi per il web
HTML e Markdown sono entrambi linguaggi di markup, ma non sono intercambiabili. Markdown è una sintassi ridotta, pensata per scrivere testo formattato in modo leggibile anche senza convertirlo: un asterisco per il grassetto, un cancelletto per il titolo. HTML è più verboso ma copre ogni caso: form, tabelle, elementi semantici, attributi di accessibilità, cose che Markdown non prevede nativamente.
Python non è un linguaggio di markup, quindi la domanda “Python è un linguaggio markdown” nasce da una confusione di categoria: Python esegue logica, Markdown e HTML descrivono struttura. Non sono sullo stesso piano, come non lo sono HTML e C++.
Se devi scegliere tra HTML e Markdown per un contenuto
Se stai scrivendo un contenuto che un CMS trasformerà comunque in HTML in output (un post di blog, una pagina di documentazione semplice), il Markdown ti fa risparmiare tempo e resta leggibile anche come sorgente grezzo. Se invece ti serve controllo fine su struttura, attributi, accessibilità o dati strutturati, scrivi direttamente in HTML: è l’unico dei due che il browser interpreta nativamente senza conversione.
Sul tema “le AI preferiscono Markdown o HTML”: nessuna fonte tra quelle che ho verificato fornisce un dato definitivo su questo punto, quindi non do un numero che non esiste. Quello che posso dire, per averlo osservato lavorando sulla visibilità nei motori generativi, è che entrambi i formati vengono interpretati: l’HTML semantico resta preferibile quando la pagina deve anche posizionarsi nella ricerca tradizionale, perché porta più segnali (tag semantici, dati strutturati, attributi ARIA) che il Markdown da solo non trasmette. Su questo trovi un approfondimento negli strumenti per analizzare la visibilità nella ricerca generativa.
Convertire HTML in Markdown è possibile con strumenti dedicati, ma il risultato perde parte della semantica fine (attributi, classi, elementi non mappati in Markdown): va bene per contenuti testuali semplici, meno per pagine con form o tabelle complesse.
HTML è ancora usato nel 2026 e cosa lo sta sostituendo
HTML resta lo standard con cui ogni browser interpreta una pagina web: non esiste un sostituto diretto, perché nessun altro linguaggio svolge la stessa funzione a livello di piattaforma. Quando qualcuno chiede “cosa sta sostituendo l’HTML” di solito intende i framework che generano l’HTML al posto dello sviluppatore (React, Vue e simili), non un linguaggio alternativo che il browser possa leggere al suo posto: alla fine della catena, quello che arriva al browser è sempre HTML.
Il mantenimento è passato da W3C a WHATWG, che pubblica lo standard come Living Standard, cioè una specifica aggiornata in modo continuo invece che per versioni numerate come un tempo. Questo significa che non esiste un “HTML6” in arrivo: l’evoluzione è incrementale.
Top Coding Languages for Computer Programming | 2026 … (2026) elenca l’HTML tra i principali linguaggi del 2026, pur collocando Python in testa all’indice TIOBE con il 18,94% a luglio 2026: sono due classifiche che misurano cose diverse, perché TIOBE segue l’uso nei linguaggi di programmazione, non nella marcatura dei documenti web, dove l’HTML non ha concorrenti diretti.
Vantaggi e limiti dell’HTML, confrontato con un linguaggio di programmazione
Il vantaggio principale dell’HTML è la semplicità: la sintassi si impara in poche ore, è supportata da ogni browser allo stesso modo (con qualche differenza minore) e non richiede un ambiente di sviluppo complesso per iniziare. Il limite speculare è che, da solo, non fa nulla di dinamico: ogni interazione, calcolo o validazione avanzata richiede JavaScript, e ogni presentazione curata richiede CSS.
| Caratteristica | HTML | Markdown | Linguaggio di programmazione (es. Python) |
|---|---|---|---|
| Cosa definisce | Struttura e semantica del documento | Formattazione leggera del testo | Logica ed elaborazione dei dati |
| Esegue calcoli o condizioni | No | No | Sì |
| Interpretato direttamente dal browser | Sì | No, va convertito | No |
| Curva di apprendimento iniziale | Bassa | Molto bassa | Media-alta |
Sulla domanda “cosa è più facile tra HTML e Python”: non sono paragonabili come livello di difficoltà, perché HTML non richiede di pensare in termini di logica, mentre Python sì. Chi parte da zero trova l’HTML più immediato da vedere “funzionare” (basta aprire il file nel browser), ma questo non lo rende un sostituto dell’apprendimento della programmazione se l’obiettivo è costruire funzionalità, non solo struttura.
Sul fronte sicurezza, un limite reale dell’HTML riguarda l’input non sanificato: se una pagina inserisce dinamicamente contenuto fornito dall’utente senza controllarlo, si espone a cross-site scripting (XSS). Non è un difetto della marcatura in sé, ma della gestione del contenuto che la riempie: lo segnalo perché è l’errore che vedo più spesso in moduli di contatto o commenti costruiti senza validazione lato server.
Storia ed evoluzione dell’HTML, in breve
Tim Berners-Lee, fisico al CERN, propose nel 1989 un sistema ipertestuale basato su Internet e specificò l’HTML nel 1991, con una prima descrizione pubblica di 18 elementi; undici di quelli sono arrivati fino a HTML 4. L’HTML derivava dall’SGML (Standard Generalized Markup Language), un formato di marcatura già usato al CERN per la documentazione interna.
Le tappe successive, tutte gestite dal W3C fino al passaggio al WHATWG: HTML+ nel 1993, HTML 2.0 nel 1995, HTML 3.2 nel 1997 (anno in cui il W3C ha iniziato a raccomandare CSS al posto della formattazione diretta in HTML), HTML 4.01 nel 1999, XHTML 1.0 nel 2000. Dal 2008 il WHATWG ha preso in mano lo sviluppo con il primo draft pubblico di HTML5, diventato Living Standard nel 2012 e Raccomandazione W3C nel 2014, seguito da revisioni minori (HTML 5.1 nel 2016, 5.1 seconda edizione e 5.2 nel 2017).
Da quel momento l’HTML non segue più versioni numerate a scadenze fisse: evolve come specifica continua, aggiornata dal WHATWG, che oggi è il mantenitore di riferimento mentre il W3C resta più legato allo sviluppo del CSS.
Errori frequenti quando si scrive o si gestisce HTML
Il primo errore che vedo, ancora oggi, su siti costruiti con page builder: tag <div> ovunque al posto di elementi semantici come <section> o <article>. Funziona a livello visivo, perché il CSS applicato con una classe rende tutto uguale; non funziona per l’accessibilità né per i crawler, che perdono il segnale di cosa rappresenta ciascun blocco.
Il secondo è confondere tag e attributo: scrivere stili inline con style="..." su ogni elemento invece di usare classi CSS centralizzate. Risultato: ogni modifica grafica richiede di intervenire pagina per pagina.
Il terzo, più tecnico, riguarda il <head>: dimenticare il meta charset o il viewport genera pagine che il browser interpreta in modo imprevedibile su dispositivi diversi, un problema che si nota subito su mobile ma che spesso passa inosservato in fase di sviluppo su desktop.
L’ultimo è lasciare contenuto dinamico non sanificato dentro il markup: un campo form che stampa direttamente l’input dell’utente nella pagina è la porta d’ingresso più comune per un attacco XSS, e la correzione (validare e sanificare lato server) non riguarda l’HTML in sé ma la logica che lo genera.
Domande frequenti sull’hypertext markup language (HTML)
Cosa significa HTML in parole semplici
HTML è l’insieme di tag con cui si costruisce una pagina web: dice al browser dove inizia un titolo, dove finisce un paragrafo, dove porta un link. Non esegue azioni, descrive solo la struttura del contenuto.
Perché HTML è una markup language e non un linguaggio di programmazione
Perché manca di variabili, cicli e condizioni logiche: non può calcolare né decidere, può solo marcare il contenuto con tag che ne definiscono il ruolo nel documento. Per la logica serve un linguaggio come JavaScript o Python.
Qual è la differenza tra markup e markdown
Il markup è la categoria generale di linguaggi che descrivono la struttura di un documento con tag o simboli; il Markdown è una sintassi semplificata appartenente a quella categoria, pensata per scrivere testo formattato in modo rapido e poi convertirlo, spesso in HTML.
L’HTML è ancora usato nel 2026
Sì: resta l’unico formato che i browser interpretano nativamente per mostrare una pagina. I framework moderni generano HTML al posto dello sviluppatore, ma il risultato finale che arriva al browser è sempre HTML.
Cosa sta sostituendo l’HTML
Nessun linguaggio sta sostituendo l’HTML come formato interpretato dal browser. Cambia il modo in cui viene prodotto (framework, generatori, CMS), non la sua funzione di struttura finale della pagina.
Si può imparare l’HTML in pochi giorni
La sintassi di base, come quella dell’esempio di pagina minima, si capisce in poche ore. Usarla bene su un sito reale, con semantica corretta e accessibilità, richiede pratica che va oltre un singolo weekend.
È più facile l’HTML o Python
Non sono comparabili sullo stesso piano di difficoltà: l’HTML descrive struttura senza logica, Python richiede di ragionare in termini di variabili e condizioni. L’HTML dà risultati visibili prima, ma non insegna a programmare.
Si può convertire l’HTML in Markdown
Sì, con strumenti di conversione dedicati, ma il risultato perde parte della semantica fine (classi, attributi, elementi non mappati). Va bene per contenuti testuali semplici, meno per pagine con form o tabelle complesse.
Fonti e riferimenti
- Top Coding Languages for Computer Programming | 2026 … (2026) charisma.edu.eu
- Le novità di ECMAScript 2026 (2026) www.html.it