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 valueas each of the properties of the shorthand:
Applies toall elements. It also applies to ::first-letter and ::first-line.
Computed valueas each of the properties of the shorthand:
Animation typeas each of the properties of the shorthand:

Formal syntax

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

<text-decoration-line> =
none |
[ underline || overline || line-through || blink ]

<text-decoration-style> =
solid |
double |
dotted |
dashed |

<text-decoration-color> =


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.



CSS Text Decoration Module Level 3
# text-decoration-property

Browser compatibility

BCD tables only load in the browser

See also