Graffiti Spray

Retro & Themed · Static · pure CSS

Street-art spray-paint: a vivid saturated fill wrapped in a thick contrasting keyline, its edges frayed by a subtle SVG turbulence displacement so they read like aerosol on a wall. A blurred second-colour copy mists a soft overspray halo around the letters, with optional wet paint drips running off their bottoms.

Graffiti Spray

How it works

Graffiti Spray is a static retro & themed 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. A data-text attribute mirrors the word into ::before/::after layers, so copy that attribute together with the CSS.

Controls

Graffiti Spray exposes 3 dedicated controls — Fill, Overspray and Drips — 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

/* Graffiti Spray — made with TEXT-FX · https://text-fx.app
 * HTML: the element needs a data-text attribute equal to its text; requires the inline <svg> filter defs — see the HTML export.
 * Font: 'Space Grotesk', sans-serif (load from Google Fonts).
 */

.text-effect {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 900;
  letter-spacing: 2px;
  text-transform: none;
}

.text-effect {
  position: relative;
  color: hsl(70 92% 60%);
  -webkit-text-fill-color: hsl(70 92% 60%);
  -webkit-text-stroke: 4px hsl(0 0% 96%);
  paint-order: stroke fill;
  filter: url(#text-effect-spray);
}
.text-effect::before {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  z-index: -1;
  color: hsl(235 95% 62%);
  -webkit-text-fill-color: hsl(235 95% 62%);
  -webkit-text-stroke: 0;
  filter: blur(7px);
  transform: scale(1.09);
  pointer-events: none;
}

HTML

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

<!-- Made with TEXT-FX · https://text-fx.app -->

<style>
.text-effect {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 900;
  letter-spacing: 2px;
  text-transform: none;
}

.text-effect {
  position: relative;
  color: hsl(70 92% 60%);
  -webkit-text-fill-color: hsl(70 92% 60%);
  -webkit-text-stroke: 4px hsl(0 0% 96%);
  paint-order: stroke fill;
  filter: url(#text-effect-spray);
}
.text-effect::before {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  z-index: -1;
  color: hsl(235 95% 62%);
  -webkit-text-fill-color: hsl(235 95% 62%);
  -webkit-text-stroke: 0;
  filter: blur(7px);
  transform: scale(1.09);
  pointer-events: none;
}
</style>

<svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
<filter id="text-effect-spray" x="-35%" y="-35%" width="170%" height="185%">
  <feTurbulence type="fractalNoise" baseFrequency="0.055" numOctaves="2" seed="4" result="n"/>
  <feDisplacementMap in="SourceGraphic" in2="n" scale="2" xChannelSelector="R" yChannelSelector="G"/>
</filter>
</defs></svg>

<div data-text="Your text" class="text-effect">Your text</div>
Category
Retro & Themed
Type
Static
Browser support
SVG feDisplacementMap edge-roughen + data-text overspray/drip copies + -webkit-text-stroke keyline
Capabilities
svgDefs, dataText

Related Retro & Themed effects