Construction

This page references cross-classifications for HTML elements from the specification, notable but not relevant for grouping them (for instances, Categories are overlapping, and Kinds are unbalanced in count despite partitioning elements).

From Categories / Kinds of content (DOM §3.2.5.2)
Traits of Elements that often overlaps.
Metadata, Flow, Sectioning, Heading, Phrasing, Embedded, Interactive, Palpable, Script-supporting.

From Form-Associated Categories (Forms §4.10.2)
Categories extension only for Form elements.
Form Associations the super-category containing sub-categories Listed, Labelable, Submittable, Resettable, Autocapitalize/Autocorrect inherit.

From Element Kinds (Syntax §13.1.2)
Partition of elements into six: Void, The Template, Raw Text, Escapable Raw Text, Foreign, Normal.

From Link Kinds (Links §4.6.1)
Presented in the dedicated Links page.

Across the specs
Presented in Unsorted Characteristics.

Unsorted Characteristics

Hierarchically Correct
A main is (and must always be) Hierarchically Correct when its parent is either html, body, div, form without an accessible name, and autonomous custom elements.
Body-OK
A rel is Body-OK iff one of dns-prefetch, modulepreload, pingback, preconnect, prefetch, preload, stylesheet
Allowed in the body
A link's rel being Body-OK makes it Allowed in the Body.

Metadata

Sets up the presentation or behavior of the rest of the content, or relationships with other documents, or conveying other out-of-band information. There are height elements in this category, described in the Document and Scripting groups: base, link, meta, noscript, script, style, template, title.

Flow

Most elements are flow content. To define by substraction: body, html, head, style. link and meta without itemprop, Dependent elements: li, option, optgroup, dl,dt and all table descendants. The area outside map.

Sectioning

Defines the scope of header and footer elements. There are four elements fitting this role, described in the Sections group: article, aside, nav, section.

Heading

Defines the heading of a section (whether explicitly marked up using sectioning content elements, or implied by the heading content itself). All from Sections: h1, h2, h3, h4, h5, h6 and hgroup if parent to h1-6.

Phrasing

Text of the document, as well as elements that mark up that text at the intra-paragraph level. Runs of phrasing content form paragraphs. Most categorized phrasing can only contain phrasing, and not flow content.

Embedded

Imports or inserts another resource into the document.
Contains the core of eponymous group: audio, video, img, picture, embed, iframe, object,
Also includes svg, math, and the JS canvas.

Interactive

Text-Level: a with href
Embedded: embed, iframe, audio/video having controls, img having usemap.
Forms: button, details, label, select, textarea and input having type.

Palpable

Makes an non-empty via descendant non-empty text, medias that can be sensed, or interactive controls. In general elements allowing flow or phrasing content should have minimum one palpable descendant not hidden, with some exceptions like placeholders.

Script-supporting

Not rendered, used to support Javascript.
Two elements, script and template.

Form-associated

Elements that can have a form owner.
input when not hidden, output, button, select, textarea, fieldset, object, img, form-associated custom elements.

Listed

Listed in the form.elements and fieldset.elements APIs. These elements also have a form content attribute, and a matching form IDL attribute, that allow authors to specify an explicit form owner.

Labelable

Can be associated with a label. This is mostly a subset of Form-associated, but not perfectly.
input when not hidden, output, button, select, textarea, meter, progress, and form-associated custom elements.

Submittable

Can be used for constructing the entry list when a form element is submitted. Some submittable elements can be, depending on their attributes, buttons.

Resettable

Denotes elements that can be affected when a form element is reset.
input, output, select, textarea, and form-associated custom elements.

Autocapitalize/Autocorrect inherit

Inherits autocapitalize and autocorrect.
button, fieldset, input, output, select, textarea.

Void

Must not have end-tag. May use the self-closing syntax: <tagName ... /> (optional - becomes valid xml/xhtml).
Document: base, link, meta
Sections: hr; Text-Level: br, wbr
Embedded: area, embed, img, source, track
Tables: col; Forms: input

The Template

The name is excellent because it only contains one element, the template.

Raw Text

Contains two elements: script and style. May contain any characters, with one exception: a valid end tag. Unlike Escapable Raw Text, character references (&CODE;) will not be dereferenced, but literally interpreted.

Escapable Raw Text

Contains two elements: textarea and title. Identical to Raw Text save for one difference: they may also contain character references (&CODE;), which can be expected to be de-referenced as in regular non-raw text.

Foreign

Contains elements math, svg, and all elements they may contain defined in their namespaces. The hierarchical DOM placement is not relevant: svg can nest foreignObject containing any xmlns='.../xhtml', then considered Normal and not Foreign.

Normal

This kind is for all other elements that are not of a previous kind.