Scribble Underline

Underline & Decoration · Animated · pure CSS

A hand-drawn rough rule that sketches itself on under the word — a flat bar warped by an SVG displacement filter into a wobbly ink squiggle, drawn left-to-right. Looser than the tidy wavy underline.

Scribble Underline

How it works

Scribble Underline is an animated underline & decoration text effect rendered entirely in CSS. It relies on an inline SVG <defs> block (filters, gradients or clip-paths), which the HTML export carries alongside the CSS.

Controls

Scribble Underline exposes 4 dedicated controls — Hue, Thickness, Roughness and Draw — on top of the shared type controls (font, weight, letter-spacing and case). Open it in the generator to tune every value live, then copy the updated CSS.

CSS

/* Scribble Underline — generated with TEXT-FX
 * HTML: requires the inline <svg> filter defs — see the HTML export.
 * Font: 'Syne', sans-serif (load from Google Fonts).
 */

.text-effect {
  font-family: 'Syne', sans-serif;
  font-weight: 700;
  letter-spacing: -1px;
  text-transform: none;
}

.text-effect {
  position: relative;
  color: hsl(313 22% 94%);
  padding-bottom: 10px;
}
.text-effect::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 4px;
  background: hsl(313 85% 64%);
  border-radius: 4px;
  filter: url(#text-effect-scribble);
  transform-origin: left center;
  animation: text-effect-draw 0.8s cubic-bezier(0.5, 0, 0.5, 1) both;
}

@keyframes text-effect-draw {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}

HTML

This effect needs the markup below (per-letter spans, SVG defs, or a data-text attribute).

<style>
.text-effect {
  font-family: 'Syne', sans-serif;
  font-weight: 700;
  letter-spacing: -1px;
  text-transform: none;
}

.text-effect {
  position: relative;
  color: hsl(313 22% 94%);
  padding-bottom: 10px;
}
.text-effect::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 4px;
  background: hsl(313 85% 64%);
  border-radius: 4px;
  filter: url(#text-effect-scribble);
  transform-origin: left center;
  animation: text-effect-draw 0.8s cubic-bezier(0.5, 0, 0.5, 1) both;
}

@keyframes text-effect-draw {
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}
</style>

<svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
<filter id="text-effect-scribble" x="-5%" y="-300%" width="110%" height="700%">
  <feTurbulence type="fractalNoise" baseFrequency="0.016 0.09" numOctaves="2" seed="9" result="n"/>
  <feDisplacementMap in="SourceGraphic" in2="n" scale="4" xChannelSelector="R" yChannelSelector="G"/>
</filter>
</defs></svg>

<div class="text-effect">Your text</div>
Category
Underline & Decoration
Type
Animated
Browser support
::after bar roughened by an SVG displacement filter, drawn on via scaleX
Capabilities
svgDefs

Related Underline & Decoration effects