The width CSS property sets an element's width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.

The min-width and max-width properties override width.

Syntax

/* <length> values */
width: 300px;
width: 25em;

/* <percentage> value */
width: 75%;

/* Keyword values */
width: 25em border-box;
width: 75% content-box;
width: max-content;
width: min-content;
width: available;
width: fit-content;
width: auto;

/* Global values */
width: inherit;
width: initial;
width: unset;

The width property is specified as either:

Values

<length>
Defines the width as an absolute value.
<percentage>
Defines the width as a percentage of the containing block's width. If the width of the containing block depends on the width of the element, the resulting layout is undefined.
border-box
If present, the preceding <length> or <percentage> is applied to the element's border box.
content-box
If present, the preceding <length> or <percentage> is applied to the element's content box.
auto
The browser will calculate and select a width for the specified element.
fill
Use the fill-available inline size or fill-available block size, as appropriate to the writing mode.
max-content
The intrinsic preferred width.
min-content
The intrinsic minimum width.
available
The containing block width minus horizontal margin, border and padding.
fit-content
The larger of:
  • the intrinsic minimum width
  • the smaller of the intrinsic preferred width and the available width

Formal syntax

[ <length> | <percentage> ] && [ border-box | content-box ]? | available | min-content | max-content | fit-content | auto

Examples

Default width

p.goldie {
  background: gold;
}
<p class="goldie">The Mozilla community produces a lot of great software.</p>

Pixels and ems

.px_length {
  width: 200px;
  background-color: red;
  color: white;
  border: 1px solid black;
}

.em_length {
  width: 20em;
  background-color: white;
  color: red;
  border: 1px solid black;
}
<div class="px_length">Width measured in px</div>
<div class="em_length">Width measured in em</div>

Percentage

.percent {
  width: 20%;
  background-color: silver;
  border: 1px solid red;
}
<div class="percent">Width in percentage</div>

max-content

p.maxgreen {
  background: lightgreen;
  width: intrinsic;           /* Safari/WebKit uses a non-standard name */
  width: -moz-max-content;    /* Firefox/Gecko */
  width: -webkit-max-content; /* Chrome */
}
<p class="maxgreen">The Mozilla community produces a lot of great software.</p>

min-content

p.minblue {
  background: lightblue;
  width: -moz-min-content;    /* Firefox */
  width: -webkit-min-content; /* Chrome */
}
<p class="minblue">The Mozilla community produces a lot of great software.</p>

Accessibility concerns

Ensure that elements set with a width are not truncated and do not obscure other content when the page is zoomed to increase text size. 

Specifications

Specification Status Comment
CSS Basic Box Model
The definition of 'width' in that specification.
Working Draft Added the max-content, min-content, available, fit-content, border-box, content-box keywords.
CSS Transitions
The definition of 'width' in that specification.
Working Draft Lists width as animatable.
CSS Level 2 (Revision 1)
The definition of 'width' in that specification.
Recommendation Precises on which element it applies to.
CSS Level 1
The definition of 'width' in that specification.
Recommendation Initial definition.
CSS Intrinsic & Extrinsic Sizing Module Level 3
The definition of 'width' in that specification.
Working Draft Adds new sizing keywords for width and height.
Initial valueauto
Applies toall elements but non-replaced inline elements, table rows, and row groups
Inheritedno
Percentagesrefer to the width of the containing block
Mediavisual
Computed valuea percentage or auto or the absolute length
Animation typea length, percentage or calc();
Canonical orderthe length or percentage before the keyword, if both are present

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3.5Safari Full support 1WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
Animatable
Experimental
Chrome ? Edge ? Firefox Full support 16IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Full support 16Opera Android ? Safari iOS ? Samsung Internet Android ?
max-content
Experimental
Chrome Full support 46
Full support 46
Full support 22
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Edge No support NoFirefox Full support 3
Prefixed
Full support 3
Prefixed
Prefixed Requires the vendor prefix: -moz-
IE ? Opera Full support 15
Prefixed
Full support 15
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Safari Full support 6.1
Prefixed
Full support 6.1
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Full support 2
Alternate Name
Alternate Name Uses the non-standard name: intrinsic
WebView Android Full support 46Chrome Android Full support 46Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Full support 5.0
min-content
Experimental
Chrome Full support 46
Full support 46
Full support 22
Alternate Name
Alternate Name Uses the non-standard name: min-intrinsic
Edge No support NoFirefox Full support 3
Prefixed
Full support 3
Prefixed
Prefixed Requires the vendor prefix: -moz-
IE ? Opera Full support 15
Prefixed
Full support 15
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Safari Full support 6.1
Prefixed
Full support 6.1
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Full support 2
Alternate Name
Alternate Name Uses the non-standard name: min-intrinsic
WebView Android Full support 46Chrome Android Full support 46Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Full support 5.0
stretch
Experimental
Chrome Full support 22
Alternate Name
Full support 22
Alternate Name
Alternate Name Uses the non-standard name: -webkit-fill-available
Edge No support NoFirefox Full support 3
Alternate Name
Full support 3
Alternate Name
Alternate Name Uses the non-standard name: -moz-available
IE ? Opera ? Safari Full support 6.1
Prefixed
Full support 6.1
Prefixed
Prefixed Requires the vendor prefix: -webkit-
WebView Android Full support 46Chrome Android Full support 46
Alternate Name
Full support 46
Alternate Name
Alternate Name Uses the non-standard name: -webkit-fill-available
Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Full support 5.0
fit-content
Experimental
Chrome Full support 46
Full support 46
Full support 22
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Edge No support NoFirefox Full support 3
Prefixed
Full support 3
Prefixed
Prefixed Requires the vendor prefix: -moz-
IE No support NoOpera Full support 15
Prefixed
Full support 15
Prefixed
Prefixed Requires the vendor prefix: -webkit-
Safari Full support 6.1
Alternate Name
Full support 6.1
Alternate Name
Alternate Name Uses the non-standard name: -webkit-fill-available
WebView Android Full support 46Chrome Android Full support 46Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Full support 5.0
Alternate Name
Full support 5.0
Alternate Name
Alternate Name Uses the non-standard name: -webkit-fill-available
content-box
Experimental
Chrome No support NoEdge No support NoFirefox No support NoIE No support NoOpera No support NoSafari No support NoWebView Android ? Chrome Android ? Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android No support No
border-box
Experimental
Chrome No support NoEdge No support NoFirefox No support NoIE No support NoOpera No support NoSafari No support NoWebView Android ? Chrome Android ? Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android No support No
fill
ExperimentalNon-standard
Chrome Full support 46Edge No support NoFirefox ? IE ? Opera ? Safari ? WebView Android Full support 46Chrome Android Full support 46Edge Mobile No support NoFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Full support 5.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Uses a non-standard name.
Uses a non-standard name.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also