The text-decoration shorthand CSS property sets the appearance of decorative lines on text. It is a shorthand for text-decoration-line, text-decoration-color, text-decoration-style, and the newer text-decoration-thickness property.

Try it

Text decorations are drawn across descendant text elements. This means that if an element specifies a text decoration, then a child element can't remove the decoration. For example, in the markup <p>This text has <em>some emphasized words</em> in it.</p>, the style rule p { text-decoration: underline; } would cause the entire paragraph to be underlined. The style rule em { text-decoration: none; } would not cause any change; the entire paragraph would still be underlined. However, the rule em { text-decoration: overline; } would cause a second decoration to appear on "some emphasized words".

Constituent properties

This property is a shorthand for the following CSS properties:


text-decoration: underline;
text-decoration: overline red;
text-decoration: none;

/* Global values */
text-decoration: inherit;
text-decoration: initial;
text-decoration: revert;
text-decoration: revert-layer;
text-decoration: unset;

The text-decoration property is specified as one or more space-separated values representing the various longhand text-decoration properties.



Sets the kind of decoration used, such as underline or line-through.


Sets the color of the decoration.


Sets the style of the line used for the decoration, such as solid, wavy, or dashed.


Sets the thickness of the line used for the decoration.

Formal definition

Initial value as each of the properties of the shorthand:
Applies to all elements. It also applies to ::first-letter and ::first-line.
Inherited no
Computed value as each of the properties of the shorthand:
Animation type as each of the properties of the shorthand:

Formal syntax

text-decoration = 
<'text-decoration-line'> ||
<'text-decoration-style'> ||


Demonstration of text-decoration values

.under {
  text-decoration: underline red;

.over {
  text-decoration: wavy overline lime;

.line {
  text-decoration: line-through;

.plain {
  text-decoration: none;

.underover {
  text-decoration: dashed underline overline;

.thick {
  text-decoration: solid underline purple 4px;

.blink {
  text-decoration: blink;
<p class="under">This text has a line underneath it.</p>
<p class="over">This text has a line over it.</p>
<p class="line">This text has a line going through it.</p>
  This <a class="plain" href="#">link will not be underlined</a>, as links
  generally are by default. Be careful when removing the text decoration on
  anchors since users often depend on the underline to denote hyperlinks.
<p class="underover">This text has lines above <em>and</em> below it.</p>
<p class="thick">
  This text has a really thick purple underline in supporting browsers.
<p class="blink">
  This text might blink for you, depending on the browser you use.



Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
text-decoration 1 12 1 3 3.5 1 ≤37 18 4 10.1 1 1.0
blink No No 1–23 No 4–15 preview No No 4–23 10.1–14 No No
shorthand 57 79 6 No 44 8 57 57 6 43 8 7.0
text-decoration-thickness 87 87 70 No 73 No 87 87 79 62 No 14.0

See also

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.