Block-level elements

You’re reading the English version of this content since no translation exists yet for this locale. Help us translate this article!

HTML (Hypertext Markup Language) elements historically were categorized as either "block-level" elements or "inline" elements. By default, a block-level element occupies the entire space of its parent element (container), thereby creating a "block." This article helps to explain what this means.

Browsers typically display the block-level element with a newline both before and after the element. You can visualize them as a stack of boxes.

A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).

The following example demonstrates the block-level element's influence:

Block-level elements


<p>This paragraph is a block-level element; its background has been colored to display the paragraph's parent element.</p>


p { background-color: #8ABB55; }


  • Block-level elements may appear only within a <body> element.

Block-level vs. inline

There are a couple of key differences between block-level elements and inline elements:

Content model
Generally, block-level elements may contain inline elements and (sometimes) other block-level elements. Inherent in this structural distinction is the idea that block elements create "larger" structures than inline elements.
Default formatting
By default, block-level elements begin on new lines, but inline elements can start anywhere in a line.

The distinction of block-level vs. inline elements was used in HTML specifications up to 4.01. In HTML5, this binary distinction is replaced with a more complex set of content categories. While the "inline" category roughly corresponds to the category of phrasing content, the "block-level" category doesn't directly correspond to any HTML5 content category, but "block-level" and "inline" elements combined together correspond to the flow content in HTML5. There are also additional categories, e.g. interactive content.


The following is a complete list of all HTML "block-level" elements (although "block-level" is not technically defined for elements that are new in HTML5).

Contact information.
Article content.
Aside content.
Long ("block") quotation.
Disclosure widget.
Dialog box.
Describes a term in a description list.
Document division.
Description list.
Description list term.
Field set label.
Figure caption.
Groups media content with a caption (see <figcaption>).
Section or page footer.
Input form.
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
Heading levels 1-6.
Section or page header.
Groups header information.
Horizontal rule (dividing line).
List item.
Contains the central content unique to this document.
Contains navigation links.
Ordered list.
Preformatted text.
Section of a web page.
Unordered list.

See also