Batik Crackle
Fill & Texture · Static · pure CSS
A flat indigo or rust dye field fills the glyphs, then an SVG turbulence filter etches a dense network of thin, angular fracture veins across them in color-dodged cream. A second coarse turbulence pass pools deeper dye tone into the stroke centers via multiply, mimicking the uneven saturation real wax-resist batik leaves behind.
How it works
Batik Crackle is a static fill & texture 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
Batik Crackle exposes 5 dedicated controls — Dye, Vein Density, Vein Brightness, Blotch Amount and Crackle Seed — 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
/* Batik Crackle — made with TEXT-FX · https://text-fx.app
* HTML: requires the inline <svg> filter defs — see the HTML export.
* Font: 'Major Mono Display', monospace (load from Google Fonts).
*/
.text-effect {
font-family: 'Major Mono Display', monospace;
font-weight: 700;
letter-spacing: -1px;
text-transform: none;
}
.text-effect {
background: linear-gradient(172deg, hsl(223 48% 58%) 0%, hsl(223 48% 52%) 45%, hsl(223 48% 47%) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
filter: url(#text-effect-batik) drop-shadow(0 2px 3px hsl(220 30% 6% / 0.45));
}
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: 'Major Mono Display', monospace;
font-weight: 700;
letter-spacing: -1px;
text-transform: none;
}
.text-effect {
background: linear-gradient(172deg, hsl(223 48% 58%) 0%, hsl(223 48% 52%) 45%, hsl(223 48% 47%) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
filter: url(#text-effect-batik) drop-shadow(0 2px 3px hsl(220 30% 6% / 0.45));
}
</style>
<svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
<filter id="text-effect-batik" x="-10%" y="-10%" width="120%" height="120%" color-interpolation-filters="sRGB">
<feTurbulence type="turbulence" baseFrequency="0.0248 0.031" numOctaves="2" seed="86" stitchTiles="stitch" result="crackNoise"/>
<feColorMatrix in="crackNoise" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0" result="crackField"/>
<feComponentTransfer in="crackField" result="veinSoft">
<feFuncA type="table" tableValues="0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0"/>
</feComponentTransfer>
<feColorMatrix in="veinSoft" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0" result="veinMask"/>
<feFlood flood-color="hsl(43 55% 90%)" flood-opacity="0.81" result="veinFlood"/>
<feComposite in="veinFlood" in2="veinMask" operator="in" result="veins"/>
<feTurbulence type="turbulence" baseFrequency="0.011 0.013" numOctaves="2" seed="123" stitchTiles="stitch" result="blotchNoise"/>
<feColorMatrix in="blotchNoise" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0" result="blotchField"/>
<feComponentTransfer in="blotchField" result="blotchMask">
<feFuncA type="table" tableValues="0 0 0.35 0.7 1"/>
</feComponentTransfer>
<feFlood flood-color="hsl(227 60% 34%)" flood-opacity="0.07" result="blotchFlood"/>
<feComposite in="blotchFlood" in2="blotchMask" operator="in" result="blotchFull"/>
<feMorphology in="SourceAlpha" operator="erode" radius="1.2" result="strokeCore"/>
<feComposite in="blotchFull" in2="strokeCore" operator="in" result="blotches"/>
<feBlend in="blotches" in2="SourceGraphic" mode="multiply" result="dyeBlotched"/>
<feMerge result="texturedFull">
<feMergeNode in="dyeBlotched"/>
<feMergeNode in="veins"/>
</feMerge>
<feComposite in="texturedFull" in2="SourceGraphic" operator="in" result="textured"/>
<feMerge>
<feMergeNode in="SourceGraphic"/>
<feMergeNode in="textured"/>
</feMerge>
</filter>
</defs></svg>
<div class="text-effect">Your text</div>
- Category
- Fill & Texture
- Type
- Static
- Browser support
- background-clip:text dye field + SVG feTurbulence crackle filter via filter:url(#…)
- Capabilities
- pure, svgDefs