Keyhole Markup Language (KML) è un linguaggio di markup basato su XML progettato per annotare e sovrapporre visualizzazioni su varie mappe online bidimensionali basate sul Web o browser Earth tridimensionali (come Google Earth). In effetti, KML è stato inizialmente sviluppato per essere utilizzato con Google Earth; poiché quel progetto era originariamente chiamato Keyhole, così come la società che ha intrapreso questo lavoro, il relativo linguaggio di markup ha seguito l'esempio. Quando Google ha acquisito Keyhole nel 2004, quel progetto è arrivato con esso e alla fine è diventato Google Earth. Il moniker "buco della serratura" è un riferimento ai satelliti di ricognizione militare KH originali lanciati per la prima volta a metà degli anni '1970 che hanno scattato le primissime fotografie "occhio nel cielo" così comunemente visualizzate in Google Earth e altri geobrowser.
Un file KML include le specifiche per varie funzioni da visualizzare in Google Earth, Maps e Mobile e altri programmi tridimensionali Earth o geobrowser. Il set di funzioni di KML include segnaposto, modelli 3D, descrizioni di testo, immagini, poligoni e così via. Ogni posizione ha una longitudine e una latitudine associate e possono essere forniti dati specifici della vista come direzione, altitudine e inclinazione per definire una cosiddetta "vista della telecamera" per i dati geospaziali. KML condivide parte della sua grammatica con il linguaggio di markup geografico o GML, un linguaggio di markup Open XML definito per esprimere dati e caratteristiche geografiche.
L'attuale specifica per KML è 2.2, che è stata sottoposta all'Open Geospatial Consortium (OGC) per la ratifica come standard aperto che qualsiasi geobrowser può utilizzare. Poiché l'OGC ha già la custodia su GML, questo è un buon compromesso. I documenti KML sono spesso distribuiti sotto forma di file KMZ, che non sono altro che un documento KML zippato all'interno di un file con estensione .kmz. Un file KMZ di solito contiene un singolo documento KML, invariabilmente chiamato "doc.kml" insieme alle immagini per gli overlay e alle icone a cui può fare riferimento internamente.