Common uses are underlines on links, strike-through for deleted text, and none to remove a default underline. Decorations paint across descendant text, so a child cannot erase a parent line with none.
Standard-track.
Not deprecated as a property. Baseline widely available for line, style, and color. Thickness in the shorthand is newer and less uniform.
Deprecated blink
Do not use text-decoration: blink. It is deprecated, poorly supported, and inaccessible.
Line first.underline chooses where the decoration sits.
Style second.wavy sets text-decoration-style.
Color third.red sets text-decoration-color (order of style and color is flexible).
Still a shorthand. Any omitted longhand, including thickness, resets to its initial value.
Edge Cases & Pitfalls
If a decoration looks wrong, one of these is usually why.
child
Children cannot erase a parent line
A parent underline still paints through a child. text-decoration: none on the child does not remove it; the child can only add another decoration.
shorthand
Shorthand resets omitted parts
Setting text-decoration: underline on hover can wipe a custom thickness or color. Use text-decoration-line when you only want to toggle the line.
thickness
Thickness in the shorthand is uneven
Including a length in text-decoration is newer. Prefer the text-decoration-thickness longhand when thickness must stick.
blink
Avoid blink
The blink value is deprecated and should not be used in production CSS.
offset
Gap under text is a different property
Move an underline away from glyphs with text-underline-offset, not with text-decoration alone.
Compatibility
Browser Support
text-decoration is a browser CSS property for text lines. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available since Jul 2015
text-decoration
Line keywords: all modern browsers and IE. Style/color: modern evergreen browsers. Thickness in shorthand: Chrome 87+, Firefox 70+, Safari 26.2+, Edge 87+.
97%Line / style / color support
Google Chrome1+ line · style/color 57+
Full support
Mozilla Firefox1+ line · style/color 36+
Full support
Apple Safari1+ line · style/color 12.1+
Full support
Microsoft Edge12+ line · style/color 79+
Full support
OperaLine long · style/color 44+
Full support
Samsung InternetLine long · style/color 7+
Full support
Internet ExplorerLine only
Partial
text-decorationWidely supported
Bottom line: Safe for underline, none, and line-through everywhere. Use longhands for thickness when you need older Safari or maximum consistency.
Remember
Key Takeaways
Role: shorthand for line, style, color, and thickness on text.
Common values:none, underline, line-through, underline wavy red.
Initial line:none. The longhands are not inherited.
Pitfall: a child none does not cancel a parent decoration.
One line:text-decoration draws (or clears) the line; longhands keep style, color, and thickness under control.
Frequently Asked Questions
It is a shorthand for decorative lines on text. It sets text-decoration-line, style, color, and thickness in one declaration.
The longhands default to none (line), solid (style), currentColor (color), and auto (thickness). Writing text-decoration: none turns the line off.
Set text-decoration: none on the link. Remember the shorthand also resets style, color, and thickness to their initials.
Decorations paint across descendant text. text-decoration: none on a child does not erase a parent decoration. The child can only add another line.
No. blink is deprecated, poorly supported, and hard to use accessibly. Avoid it.
Basic line values are universal. Style and color are widely supported in modern browsers. Thickness in the shorthand is newer (Chrome 87+, Firefox 70+, Safari 26.2+). It is a browser CSS property, not a Node.js feature.