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.

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

Related Fill & Texture effects