markup language
A markup language is a system of tags or annotations that you embed in plain text to describe a document’s structure, meaning, or presentation. The annotations, collectively called markup, stay distinct from the content, so software can interpret them while the source remains readable as plain text:
The name comes from traditional publishing, where editors marked up manuscripts with handwritten typesetting instructions. In HTML, the tag pair in <em>important</em> marks a span of text as emphasized, while Markdown expresses the same idea with lighter punctuation, such as *important*.
Markup languages fall into a few broad families:
- Descriptive markup: Labels what each part of a document is, leaving rendering decisions to a stylesheet or processor, as in XML and semantic HTML.
- Procedural and presentational markup: Encodes how the text should look, whether as ordered instructions for a typesetting program, as in TeX and troff, or as the hidden formatting codes a word processor writes.
- Lightweight markup: Favors unobtrusive punctuation that stays easy to read and write, as in Markdown and reStructuredText.
Despite the name, a markup language isn’t a programming language, since it describes documents rather than expressing computation. It also differs from data serialization formats like JSON and YAML, which encode structured data for exchange between programs rather than annotated text for people to read.
Related Resources
Tutorial
A Roadmap to XML Parsers in Python
In this tutorial, you'll learn what XML parsers are available in Python and how to pick the right parsing model for your specific use case. You'll explore Python's built-in parsers as well as major third-party libraries.
For additional information on related topics, take a look at the following resources:
By Martin Breuss • Updated Sept. 5, 2026