HTML: The 16 Content Categories and Their Elements
Published on Jan 20, 2021 (updated Sep 5, 2024), filed under development, html. (Share this on Mastodon or Bluesky?)
Enjoying overviews like this one? Check out Rote Learning HTML & CSS, a free ebook to help memorize HTML elements and attributes, and CSS selectors and properties.
HTML puts elements into categories, so-called content categories. The specification describes these in the sections on kinds of content and element content categories.
This article serves as a boring, brief, but updated overview over the broad and overlapping categories of HTML, and which elements fall into them (without going into detail on elements with exceptions):
Contents
- Metadata Content
- Flow Content
- Sectioning Content
- Heading Content
- Phrasing Content
- Embedded Content
- Interactive Content
- Sectioning Roots
- Form-Associated Elements
- Listed Elements
- Submittable Elements
- Resettable Elements
- Autocapitalize-Inheriting Elements
- Labelable Elements
- Palpable Content
- Script-Supporting Elements
Metadata Content
baselinkmetanoscriptscriptstyletemplatetitle
Flow Content
aabbraddressarea(under circumstances)articleasideaudiobbdibdoblockquotebrbuttoncanvascitecodedatadatedatalistdeldetailsdfndialogdivdlemembedfieldsetfigurefooterformh1h2h3h4h5h6headerhgrouphriiframeimginputinskbdkeygenlabellink(under circumstances)main(under circumstances)mapmarkmath(MathML)menumeta(under circumstances)meternavnoscriptobjectoloutputppicturepreprogressqrubyssampscriptsectionselectslotsmallspanstrongsubsupsvg(SVG)tabletemplatetextareatimeuulvarvideowbr- autonomous custom elements
- text content (under circumstances)
Sectioning Content
articleasidenavsection
Heading Content
h1h2h3h4h5h6hgroup
Phrasing Content
a(under circumstances)abbrarea(under circumstances)audiobbdibdobrbuttoncanvascitecodedatadatedatalistdel(under circumstances)dfnemembediiframeimginputins(under circumstances)kbdkeygenlabellink(under circumstances)map(under circumstances)markmath(MathML)meta(under circumstances)meternoscriptobjectoutputpictureprogressqrubyssampscriptselectslotsmallspanstrongsubsupsvg(SVG)templatetextareatimeuvarvideowbr- autonomous custom elements
- text content (under circumstances)
Embedded Content
audiocanvasembediframeimgmath(MathML)objectpicturesvg(SVG)video
Interactive Content
a(under circumstances)audio(under circumstances)buttondetailsembediframeimg(under circumstances)input(under circumstances)keygenlabelobject(under circumstances)selecttextareavideo(under circumstances)
There are also the following categories:
Sectioning Roots
blockquotebodydetailsdialogfieldsetfiguretd
Form-Associated Elements
buttonfieldsetinputlabelobjectoutputselecttextareaimg- form-associated custom elements
Listed Elements
buttonfieldsetinputobjectoutputselecttextarea- form-associated custom elements
Submittable Elements
buttoninputobjectselecttextarea- form-associated custom elements
Resettable Elements
inputoutputselecttextarea- form-associated custom elements
Autocapitalize-Inheriting Elements
buttonfieldsetinputoutputselecttextarea
Labelable Elements
buttoninputmeteroutputprogressselecttextarea- form-associated custom elements
Palpable Content
Per the HTML specification, “palpable content” is content that makes an element non-empty by providing either some descendant non-empty text, or something else users can hear, see, or otherwise interact with.
aabbraddressarticleasidebbdibdoblockquotebuttoncanvascitecodedatadetailsdfndivemembedfieldsetfigurefooterformh1h2h3h4h5h6headerhgroupiiframeimginskbdlabelmainmapmarkmath(MathML)meternavobjectoutputppreprogressqrubyssampsectionselectsmallspanstrongsubsupsvg(SVG)tabletextareatimeuvarvideo- autonomous custom elements
Script-Supporting Elements
scripttemplate
_ These categories are useful, for example to identify all available as well as the semantically appropriate elements. They can also inform sorting schemes, as with an order to sort CSS selectors by.
About Me
I’m Jens (long: Jens Oliver Meiert), and I’m a web developer, manager, and author. I’ve been working as a technical lead and engineering manager for companies you’ve never heard of and companies you use every day, I’m an occasional contributor to web standards (like HTML, CSS, WCAG), and I write and review books for O’Reilly and Frontend Dogma.
I love trying things, not only in web development and engineering management, but also in other areas like philosophy. Here on meiert.com I share some of my experiences and views. (I value you being critical, interpreting charitably, and giving feedback.)
