Free Web Design Code & Scripts

Wobbly Text Effect Using Css & Svg

Code Snippet:Wobbly Text w/ CSS && SVG
Author: Jhey
Published: 2 months ago
Last Updated: October 29, 2025
Downloads: 63
License: MIT
Edit Code online: View on CodePen
Read More

Here’s a tutorial on how to create a Wobbly Text Effect Using CSS & SVG. This effect adds a playful and dynamic visual element to your text, making it appear as if it’s slightly distorted or vibrating. This is achieved by combining CSS styling with SVG filters to manipulate the text’s appearance.

<link rel="stylesheet" href="https://public.codepenassets.com/css/normalize-5.0.0.min.css">

Creating the HTML Structure

Add the following line into the head tag of your HTML document to normalize styles across browsers.

<h1>Exemplary</h1>
<svg>
  <filter id="scribble--0">
    <feturbulence basefrequency="0.02" numoctaves="3" result="noise" seed="0"></feturbulence>
    <fedisplacementmap id="displacement" in="SourceGraphic" in2="noise" scale="2"></fedisplacementmap>
  </filter>
  <filter id="scribble--1">
    <feturbulence basefrequency="0.02" numoctaves="3" result="noise" seed="1"></feturbulence>
    <fedisplacementmap in="SourceGraphic" in2="noise" scale="3"></fedisplacementmap>
  </filter>
  <filter id="scribble--2">
    <feturbulence basefrequency="0.02" numoctaves="3" result="noise" seed="2"></feturbulence>
    <fedisplacementmap in="SourceGraphic" in2="noise" scale="2"></fedisplacementmap>
  </filter>
  <filter id="scribble--3">
    <feturbulence basefrequency="0.02" numoctaves="3" result="noise" seed="3"></feturbulence>
    <fedisplacementmap in="SourceGraphic" in2="noise" scale="3"></fedisplacementmap>
  </filter>
  <filter id="scribble--4">
    <feturbulence basefrequency="0.02" numoctaves="3" result="noise" seed="4"></feturbulence>
    <fedisplacementmap in="SourceGraphic" in2="noise" scale="2"></fedisplacementmap>
  </filter>
</svg>

 

Styling with CSS

Use the following CSS styles to style the text and apply the wobbly effect. This CSS includes font settings, background, and the animation that cycles through the SVG filters.

@font-face {
  font-family: "Geist Sans";
  src: url("https://assets.codepen.io/605876/GeistVF.ttf") format("truetype");
}

* {
  box-sizing: border-box;
}

body {
  font-family: "Geist Sans", sans-serif;
  min-height: 100vh;
  display: grid;
  place-items: center;
  background: hsl(0 0% 6%);
}

h1 {
  font-weight: 140;
  letter-spacing: -0.05ch;
  font-size: clamp(2rem, 6vw + 1rem, 8rem);
  background: linear-gradient(black, hsl(0 0% 50%));
  -webkit-background-clip: text;
          background-clip: text;
  color: transparent;
  -webkit-text-stroke: 1px hsl(0 0% 90%);
  margin: 0;
  line-height: 1;
}

svg {
  display: none;
}

@media(prefers-reduced-motion: no-preference) {
  h1 {
    -webkit-animation: scribble infinite 0.2s;
            animation: scribble infinite 0.2s;
  }
}

@-webkit-keyframes scribble {
  0% {
    filter: url("#scribble--0");
  }
  25% {
    filter: url("#scribble--1");
  }
  50% {
    filter: url("#scribble--2");
  }
  75% {
    filter: url("#scribble--3");
  }
  100% {
    filter: url("#scribble--4");
  }
}

@keyframes scribble {
  0% {
    filter: url("#scribble--0");
  }
  25% {
    filter: url("#scribble--1");
  }
  50% {
    filter: url("#scribble--2");
  }
  75% {
    filter: url("#scribble--3");
  }
  100% {
    filter: url("#scribble--4");
  }
}

You have successfully created a Wobbly Text Effect Using CSS & SVG! Experiment with different filter values and animation speeds to customize the effect to your liking.

Loading... ...

Loading preview...

Device: Desktop
Dimensions: 1200x800
Lines: 0 Characters: 0 Ln 1, Ch 1

Leave a Comment

About W3Frontend

W3Frontend provides free, open-source web design code and scripts to help developers and designers build faster. Every snippet is reviewed before publishing for quality. Learn more.