Marble
Fill & Texture · Static · pure CSS
Multi-octave SVG fractal noise is knife-edge thresholded into thin, meandering high-contrast veins with a faint cloudy mottle, composited inside the letters over a stone-base gradient with a polished top sheen and soft contact shadow. Pick white Carrara with gray veining, black Nero with pale veins, or green Verde with calcite threads — a fill that reads as cut, polished marble.
How it works
Marble 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
Marble exposes 3 dedicated controls — Stone, Vein Scale and Polish — 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
/* Marble — made with TEXT-FX · https://text-fx.app
* HTML: requires the inline <svg> filter defs — see the HTML export.
* Font: 'Unbounded', sans-serif (load from Google Fonts).
*/
.text-effect {
font-family: 'Unbounded', sans-serif;
font-weight: 900;
letter-spacing: 4px;
text-transform: none;
}
.text-effect {
background:
linear-gradient(168deg, hsl(0 0% 100% / 0.12) 0%, transparent 38%),
linear-gradient(178deg, hsl(225 8% 29%) 0%, hsl(225 8% 20%) 55%, hsl(225 8% 12%) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
-webkit-text-stroke: 1px hsl(215 8% 88% / 0.5);
filter: url(#text-effect-marble) drop-shadow(0 2px 3px hsl(220 20% 6% / 0.5));
}
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: 'Unbounded', sans-serif;
font-weight: 900;
letter-spacing: 4px;
text-transform: none;
}
.text-effect {
background:
linear-gradient(168deg, hsl(0 0% 100% / 0.12) 0%, transparent 38%),
linear-gradient(178deg, hsl(225 8% 29%) 0%, hsl(225 8% 20%) 55%, hsl(225 8% 12%) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
-webkit-text-stroke: 1px hsl(215 8% 88% / 0.5);
filter: url(#text-effect-marble) drop-shadow(0 2px 3px hsl(220 20% 6% / 0.5));
}
</style>
<svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs>
<filter id="text-effect-marble" x="-12%" y="-12%" width="124%" height="124%" color-interpolation-filters="sRGB">
<feTurbulence type="fractalNoise" baseFrequency="0.0175 0.028" numOctaves="5" seed="15" stitchTiles="stitch" result="turb"/>
<feComponentTransfer in="turb" result="veinsSoft">
<feFuncA type="table" tableValues="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"/>
</feComponentTransfer>
<feColorMatrix in="veinsSoft" 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"/>
<feComponentTransfer in="turb" result="cloudMask">
<feFuncA type="table" tableValues="0 0 0.4 1"/>
</feComponentTransfer>
<feFlood flood-color="hsl(215 8% 88%)" flood-opacity="0.9" result="veinFill"/>
<feComposite in="veinFill" in2="veinMask" operator="in" result="veins"/>
<feFlood flood-color="hsl(215 8% 88%)" flood-opacity="0.14" result="cloudFill"/>
<feComposite in="cloudFill" in2="cloudMask" operator="in" result="clouds"/>
<feMerge result="marbleField">
<feMergeNode in="clouds"/>
<feMergeNode in="veins"/>
</feMerge>
<feComposite in="marbleField" in2="SourceGraphic" operator="in" result="textMarble"/>
<feMerge>
<feMergeNode in="SourceGraphic"/>
<feMergeNode in="textMarble"/>
</feMerge>
</filter>
</defs></svg>
<div class="text-effect">Your text</div>
- Category
- Fill & Texture
- Type
- Static
- Browser support
- background-clip:text stone base + SVG feTurbulence vein filter via filter:url(#…)
- Capabilities
- pure, svgDefs