HTML Content Model Categories

Github Page

In HTML 4.01, there was a distinction between block-level and inline elements. In HTML 5, this distinction between block and inline has been replaced with a more complex set of content categories.

Each element in HTML falls into zero or more categories that group elements with similar characteristics.

Content model categories

Diagram showing content model categories overlapping Flow Heading Sectioning Metadata Interactive Phrasing Embedded

Metadata content

Metadata content is content that sets up the presentation or behaviour of the rest of the content, or that sets up the relationship of the document with other documents.

Flow content

Most elements that are used in the body of documents and applications are categorised as flow content. The only elements that are not considered flow elements are a subset of metadata elements. The older "block-level" category roughly corresponds to this flow content category.

Phrasing content

Phrasing content is the text of the document, as well as elements that mark up that text within paragraphs. The older "inline" category corresponds to phrasing content.

Sectioning content

Sectioning content is content that defines the scope of headers and footers.

Heading content

Heading content defines the header of a section.

Embedded content

Embedded content is content that imports another resource into the document.

Interactive content

Interactive content is content that is specifically intended for user interaction.

Palpable content

Elements whose content model allows any flow content or phrasing content should have at least one node in its contents that is palpable content and that does not have the hidden attribute specified.

Script-supported content

Script-supporting elements are those that do not represent anything themselves (i.e., they are not rendered), but are used to support scripts, e.g., to provide functionality for the user.

All None metadata Flow Phrasing Sectioning Heading Embedded Interactive Palpable Script-supporting
a Flow Phrasing Interactive (If the element has an href attribute) Palpable
abbr Flow Phrasing Palpable
address Flow Palpable
area Flow Phrasing
article Flow Sectioning Palpable
aside Flow Sectioning Palpable
audio Flow Phrasing Embedded Interactive (If the element has a controls attribute) Palpable (If the element has a controls attribute)
b Flow Phrasing Palpable
base
bdi Flow Phrasing Palpable
bdo Flow Phrasing Palpable
blockquote Flow Palpable
body None
br Flow Phrasing
button Flow Phrasing Interactive Palpable
canvas Flow Phrasing Embedded Palpable
caption None
cite Flow Phrasing Palpable
code Flow Phrasing Palpable
col None
colgroup None
data Flow Phrasing Palpable
datalist Flow Phrasing
dd None
del Flow Phrasing
details Flow Interactive Palpable
dfn Flow Phrasing Palpable
dialog Flow
div Flow Palpable
dl Flow Palpable (If the element's children include at least one name-value group)
dt None
em Flow Phrasing Palpable
embed Flow Phrasing Embedded Interactive Palpable
fieldset Flow Palpable
figcaption None
figure Flow Palpable
footer Flow Palpable
form Flow Palpable
h1 Flow Heading Palpable
h2 Flow Heading Palpable
h3 Flow Heading Palpable
h4 Flow Heading Palpable
h5 Flow Heading Palpable
h6 Flow Heading Palpable
head None
header Flow Palpable
hgroup Flow Heading Palpable
hr Flow
html None
i Flow Phrasing Palpable
iframe Flow Phrasing Embedded Interactive Palpable
img Flow Phrasing Embedded Interactive (If the element has a usemap attribute) Palpable
input Flow Phrasing Interactive (If the type attribute is not in the hidden state) Palpable (If the type attribute is not in the hidden state)
ins Flow Phrasing Palpable
kbd Flow Phrasing Palpable
label Flow Phrasing Interactive Palpable
legend None
li None
link Flow (If the element is allowed in the body) Phrasing (If the element is allowed in the body)
main Flow Palpable
map Flow Phrasing Palpable
mark Flow Phrasing Palpable
MathML Flow Phrasing Embedded Palpable
math Flow Phrasing Embedded Palpable
menu Flow Palpable (If the element's children include at least one li element)
meta Flow (If the itemprop attribute is present) Phrasing (If the itemprop attribute is present)
meter Flow Phrasing Palpable
nav Flow Sectioning Palpable
noscript Flow Phrasing
object Flow Phrasing Embedded Palpable
ol Flow Palable (If the element's children include at least one li element)
optgroup None
option None
output Flow Phrasing Palpable
p Flow Palpable
param Deprecated
picture Flow Phrasing Embedded
pre Flow Palpable
progress Flow Phrasing Palpable
q Flow Phrasing Palpable
rb Deprecated
rp None
rt None
rtc Deprecated
ruby Flow Phrasing Palpable
s Flow Phrasing Palpable
samp Flow Phrasing Palpable
script Flow Phrasing Script-supporting
section Flow Sectioning Palpable
select Flow Phrasing Interactive Palpable
slot Flow Phrasing
small Flow Phrasing Palpable
source None
span Flow Phrasing Palpable
strong Flow Phrasing Palpable
style
sub Flow Phrasing Palpable
summary None
sup Flow Phrasing Palpable
svg Flow Phrasing Embedded Palpable
table Flow Palpable
tbody None
td None
template Flow Phrasing Script-supporting
textarea Flow Phrasing Interactive Palpable
tfoot None
th None
thead None
time Flow Phrasing Palpable
title
tr None
track None
u Flow Phrasing Palpable
ul Flow Palable (If the element's children include at least one li element)
var Flow Phrasing Palpable
video Flow Phrasing Embedded Interactive (If the element has a controls attribute) Palpable
wbr Flow Phrasing

Github Page