UIML (User Interface Markup Language) è un linguaggio descrittivo che consente di creare una pagina Web che può essere inviata a qualsiasi tipo di dispositivo di interfaccia, ad esempio a un PC con un ampio display e una tastiera oa uno "smartphone" con un display minuscolo e nessuna tastiera. Il vantaggio di UIML è che il contenuto Web può essere creato una volta senza comprendere i tipi di dispositivi esistenti e futuri a cui verrà inviato il contenuto. Uno sviluppatore di contenuti utilizza il linguaggio di markup (a volte indicato come un insieme di tag) per descrivere gli elementi dell'interfaccia utente come caselle di input, messaggi di testo, menu e pulsanti. Un programmatore può quindi scrivere applicazioni che utilizzano la pagina UIML per generare una pagina appropriata a ciascun tipo di dispositivo, ad esempio un PC, uno smartphone o un dispositivo di output vocale, a cui potrebbe essere necessario inviare il contenuto.
UIML è un'applicazione dell'Extensible Markup Language (XML). Si può pensare ad essa come alla descrizione XML che descrive la struttura dei dati (nomi di campi o elementi) di un'interfaccia utente. Un determinato file UIML descrive anche il contenuto specifico (testo, nomi di immagini e così via) in quei campi o elementi. UIML consente inoltre di descrivere i possibili eventi di input dell'utente e le azioni risultanti. Il markup è descritto nella specifica UIML, che include anche la DTD (XML Document Type Definition) formale per UIML. Poiché UIML richiede la specifica degli elementi dell'interfaccia utente (spesso chiamati widget) in termini di nomi utilizzati dallo sviluppo di un linguaggio specifico kit di utensili (ad esempio, Java AWT o Microsoft Foundation Classes - MFCL), è necessario identificare il toolkit specifico e conoscere i nomi dei vari elementi e le loro proprietà utilizzati dal toolkit.
Harmonia, la società di software in cui è stato sviluppato UIML, lo ha pubblicato come linguaggio open source e prevede di inviarlo a un'organizzazione di standard dopo aver ricevuto commenti sulla versione 2.0.