OKLCH color · 60 Google Fonts · client-sideEST. 2026

Text that runs & the entire spectrum.

GradText is a CSS text gradient generator built on Google Fonts, OKLCH color science, and a live typography preview. The only tool that does all three. Copy production-ready CSS in under a minute. Three declarations, nothing missing.

60Google Fonts curated
OKLCHPerceptual color space
< 60sPage load to copied CSS
gradtext / untitled.css synced
Make it pop.
Color space
Stops
04 / 05
01
%
02
%
03
%
04
%
Direction
Typeface · Google Fontsdefault
Type · Size & Weight
96px
output · production-ready
.gradient-text {
  font-family: 'Fraunces', serif;
  font-size: 96px;
  font-weight: 700;
  background: linear-gradient(135deg, #ff2d6f 0%, #ff8a00 33%, #00d27f 66%, #7c5cff 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
Press Cmd/Ctrl+C to copy
Presets

Every font, preset, angle, and OKLCH triple.

A gradient only reads as well as the glyph it is clipped to: stroke contrast, counter size, and angle all decide how much of the color ramp survives. The lookups here cover the rest of that build: every font in the picker with the weights it actually ships, the exact stop values behind each preset, the angle keywords that map to the cardinal directions, and a starting OKLCH triple for each hue family so you can dial perceptual color without guessing. Every number matches what the tool requests from the CDN and writes into the copied CSS.

Font catalog by category and shipped weight

The picker requests a small weight subset per family to keep the CDN payload light, so the weight dropdown only shows what is listed here. A face with a single weight (Anton, Bebas Neue, the Display serifs) has no weight control to adjust.

Editorial and display serifs

FamilyCategoryShipped weights
FrauncesSerif300, 400, 500, 600, 700, 800, 900
Playfair DisplaySerif400, 500, 600, 700, 800, 900
DM Serif DisplaySerif400
Instrument SerifSerif400
Cormorant GaramondSerif300, 400, 500, 600, 700
Libre Caslon DisplaySerif400
Abril FatfaceDisplay400

Bold display faces

FamilyCategoryShipped weights
Bebas NeueDisplay400
AntonDisplay400
Archivo BlackDisplay400
Big Shoulders DisplayDisplay400, 500, 600, 700, 800, 900
UnboundedDisplay400, 500, 600, 700, 800, 900
Bricolage GrotesqueSans400, 500, 600, 700, 800
Familjen GroteskSans400, 500, 600, 700
SyneSans400, 500, 600, 700, 800
Space GroteskSans300, 400, 500, 600, 700

Geometric and neutral sans

FamilyCategoryShipped weights
InterSans300, 400, 500, 600, 700, 800, 900
ManropeSans300, 400, 500, 600, 700, 800
Plus Jakarta SansSans300, 400, 500, 600, 700, 800
OutfitSans300, 400, 500, 600, 700, 800, 900
SoraSans300, 400, 500, 600, 700, 800
DM SansSans400, 500, 700
Work SansSans300, 400, 500, 600, 700, 800, 900
PoppinsSans300, 400, 500, 600, 700, 800, 900

Readable serifs that double as headlines

FamilyCategoryShipped weights
LoraSerif400, 500, 600, 700
MerriweatherSerif300, 400, 700, 900
Source Serif 4Serif300, 400, 500, 600, 700, 800, 900
Crimson ProSerif300, 400, 500, 600, 700, 800, 900
EB GaramondSerif400, 500, 600, 700, 800

Monospace and script

FamilyCategoryShipped weights
JetBrains MonoMono400, 500, 700
IBM Plex MonoMono400, 500, 700
CaveatScript400, 500, 600, 700
PacificoScript400

Inter is the default and the only family that renders without a CDN request, so the first paint never waits on fonts.googleapis.com.

Which faces hold a multi-stop gradient

A gradient reads off the glyph, so stroke contrast and counter size decide how much of the color ramp survives. Faces with thin hairlines lose the mid-stops; sturdy faces show every band.

TraitEffect on the gradientFaces in the catalog
Heavy uniform strokeEvery stop is visible; best for 4–5 stop rampsAnton, Archivo Black, Bebas Neue, Abril Fatface
High stroke contrastStops read on the thick strokes, wash out on hairlinesPlayfair Display, Cormorant Garamond, DM Serif Display
Wide counters, open apertureHolds 3 stops cleanly at headline sizeUnbounded, Big Shoulders Display, Syne
Even sans weightPredictable two- and three-stop rampsInter, Manrope, Sora, Space Grotesk
Connected scriptGradient flows along the stroke path, not letter to letterCaveat, Pacifico

At small sizes (under ~32px) drop to two stops; intermediate stops compress into a few pixels and read as a single muddy band regardless of face.

Preset stop values

Each preset drops a full gradient into the builder: type, angle, and the exact stops below. All twelve ship as linear HEX gradients. Positions are percentages along the angle.

PresetAngleStops (color @ position)
Ocean Depth135deg#0ea5e9 @0, #2563eb @50, #4f46e5 @100
Sunset Glow90deg#f97316 @0, #ec4899 @60, #a855f7 @100
Aurora45deg#10b981 @0, #06b6d4 @50, #6366f1 @100
Neon Noir135deg#f0abfc @0, #818cf8 @100
Candy Pop90deg#fb7185 @0, #fbbf24 @50, #4ade80 @100
Forest Mist180deg#34d399 @0, #059669 @100
Royal Bloom45deg#c084fc @0, #e879f9 @40, #f472b6 @100
Citrus Burst90deg#facc15 @0, #f97316 @60, #ef4444 @100
Mono Slate135deg#94a3b8 @0, #334155 @100
Vapor Wave90deg#e879f9 @0, #818cf8 @50, #38bdf8 @100
Rose Quartz135deg#fda4af @0, #f9a8d4 @50, #d8b4fe @100
Cyber Lime45deg#a3e635 @0, #22d3ee @100

A reusable preset declaration looks like this once clipped to text:

/* Sunset Glow */
background: linear-gradient(90deg, #f97316 0%, #ec4899 60%, #a855f7 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;

The two-stop presets (Neon Noir, Forest Mist, Mono Slate, Cyber Lime) are the safe pick for body-weight or small text; the three-stop presets want a display weight at headline size.

Direction keyword to angle map

The linear angle field takes 0–360. These keyword presets correspond to fixed angles, and the same numbers apply whether you type them or click a direction.

DirectionAngleReads as
Top0degbottom color up to top color
Top-right45degdiagonal, lower-left to upper-right
Right90degleft color to right color
Bottom-right135degdiagonal, upper-left to lower-right
Bottom180degtop color down to bottom color
Bottom-left225degdiagonal, upper-right to lower-left
Left270degright color to left color
Top-left315degdiagonal, lower-right to upper-left

CSS angle 0 points up and increases clockwise, which is the opposite of trig convention. A value typed as 90 sweeps left to right across the text. Switching to radial drops the angle entirely; the gradient centers on the text and the angle field hides because radial-gradient() takes no angle.

OKLCH starting values by hue family

OKLCH is oklch(L C H): lightness 0–1, chroma 0–0.4, hue 0–360 degrees. When a stop is in OKLCH mode the tool emits oklch() and writes a HEX-equivalent fallback comment. Use these as a starting triple, then nudge lightness and chroma per stop.

Hue familyHue (deg)Vivid stop (L C H)Soft stop (L C H)
Red25oklch(0.63 0.24 25)oklch(0.78 0.12 25)
Orange60oklch(0.72 0.19 60)oklch(0.84 0.10 60)
Yellow95oklch(0.86 0.18 95)oklch(0.92 0.09 95)
Green145oklch(0.72 0.20 145)oklch(0.83 0.11 145)
Cyan195oklch(0.74 0.13 195)oklch(0.85 0.07 195)
Blue260oklch(0.58 0.22 260)oklch(0.74 0.12 260)
Violet290oklch(0.56 0.25 290)oklch(0.72 0.14 290)
Magenta350oklch(0.64 0.27 350)oklch(0.79 0.14 350)

Two rules keep an OKLCH ramp clean. Hold lightness within about 0.15 across stops so no single stop goes dark and swallows a glyph segment. Keep chroma near the gamut edge per hue (yellow and green tolerate less chroma than magenta and violet) or the color clips to a flatter sRGB value when the fallback fires.

Why the OKLCH midpoint stays saturated

A two-stop gradient interpolates every channel between the stops. In sRGB the path between two saturated complementary colors passes through low saturation near the middle, which is the gray band you see on a red-to-green or magenta-to-cyan ramp. OKLCH interpolates lightness, chroma, and hue independently, so chroma stays high across the transition and the hue rotates along the shorter arc of the color wheel.

sRGB    magenta ──▶ [desaturated gray] ──▶ cyan
OKLCH   magenta ──▶ [chroma held high]  ──▶ cyan

The effect is invisible on adjacent hues (blue to violet) and strongest on opposing hues (the magenta-to-mint and red-to-green pairs). Reach for OKLCH when two stops sit far apart on the wheel; for a tight two-hue ramp the HEX fallback looks nearly identical.

CDN request shape for the active font

When a non-default font is active the copied CSS leads with an @import for that family at the active weight. The request encodes the family name with + for spaces and the weight after wght@.

@import url('https://fonts.googleapis.com/css2?family=Fraunces:wght@800&display=swap');

Multiple weights join with semicolons inside the wght@ axis (wght@400;700). The display=swap flag shows the fallback face until the web font loads instead of leaving the text invisible during the fetch. The tool requests only the single active weight to keep the import small.

Related concepts

Color interpolation space. sRGB, OKLCH, OKLab, and HSL each draw a different path between two stops, which changes the midpoint color.
CSS gradient functions. linear-gradient() and radial-gradient() differ in whether direction is an angle or a shape and center; conic is a third function not used here.
Variable font axes. Faces like Fraunces expose optical-size and weight axes; the picker requests fixed instances rather than the full variable range.
font-display strategy. swap, block, fallback, and optional trade flash-of-unstyled-text against flash-of-invisible-text during web-font load.

The same stop and interpolation rules apply to element backgrounds via Graduo; font pairing for the headline comes from TypeDuo.

Read more on /learn