CSS letter-spacing Property

Beginner
5 min read
Updated: Oct 2026
3 examples
Live preview

Definition and Usage

The letter-spacing property sets extra space between characters. Positive values spread letters apart; negative values pull them closer. The value is added on top of the font’s normal spacing.

The initial value is normal. It is inherited. Use lengths such as 0.05em or 1px for tracking. Pair with word-spacing for gaps between words, and keep extreme values readable for accessibility.

Baseline for normal and lengths.

Not deprecated. Percentage values exist in newer specs and may vary by browser — prefer em or px for study and production tracking.

CSS Syntax

syntax.css
letter-spacing: normal | <length> | initial | inherit;

Examples: normal, 0.2em, 1px, -0.05em.

Property Values

ValueDescriptionTry it
normalFont default spacing. Initial valueTry it
<length>Extra space such as 0.2em or 1px. May be negativeTry it
0.05emSubtle tracking that scales with font sizeTry it
-0.05emSlightly tighter charactersTry it
initialResets to normalTry it
inheritInherits from the parent elementTry it

How to Use letter-spacing

Pick the text, then add a small amount of tracking.

  1. Select a heading, label, or paragraph that needs tracking.
  2. Set letter-spacing to normal or a length such as 0.05em.
  3. Prefer em when spacing should scale with font-size.
  4. Check readability — especially with text-transform: uppercase labels.
PieceRequired?Role
Text contentYesApplies to rendered characters in the element
Spacing valueYesnormal or a length (extra space)
Relative unitsRecommendedem keeps tracking proportional to font size
word-spacingSeparateControls gaps between words, not letters

Live Preview

Only letter-spacing changes on the sample sentence.

Positive values open the letters. Negative values tighten them. Keep body text close to normal.

Sample text

letter-spacing: 0.05em

CSS Examples

Each snippet focuses on letter-spacing only. Use Try It Yourself for a live editor.

Example 1 — Default Spacing

Leave tracking at the font default with normal.

CSS
<style>
  p {
    letter-spacing: normal;
  }
</style>

<p>Letter spacing</p>
Try It Yourself

How It Works

  1. Use the keyword. letter-spacing: normal is the initial value.
  2. Font design wins. Spacing comes from the typeface, not an extra length.
  3. Best for body text. Paragraphs usually stay readable at normal.
  4. Baseline for compare. Next examples add or remove tracking.

Example 2 — Wider Tracking

Spread characters with a relative length.

CSS
<style>
  h1 {
    letter-spacing: 0.2em;
  }
</style>

<h1>WIDE TITLE</h1>
Try It Yourself

How It Works

  1. Add extra space. 0.2em is added between each pair of characters.
  2. Scales with type. If font-size grows, the tracking grows with it.
  3. Common on headings. Uppercase titles often look clearer with light tracking.
  4. Keep it modest. Very large values can make words look like separate letters.

Example 3 — Tighter Spacing

Pull characters slightly closer with a negative length.

CSS
<style>
  p {
    letter-spacing: -0.05em;
  }
</style>

<p>Slightly tighter text</p>
Try It Yourself

How It Works

  1. Use a small negative. -0.05em reduces the gap a little.
  2. Still readable. Tiny adjustments can tidy display type; large negatives cause overlap.
  3. Font dependent. Some typefaces need less tightening than others.
  4. Test at real sizes. Check the final font-size on screen, not only in the editor.

Edge Cases & Pitfalls

Tracking is easy to overdo. Watch these traps.

a11y

Extreme values hurt reading

Huge positive spacing turns words into scattered letters. Large negatives make glyphs overlap. Keep body text near normal.

normal

normal is not always 0

normal may allow justification tweaks. A length such as 0 fixes extra spacing at zero.

i18n

Connected scripts need care

Languages such as Arabic expect joined letters. Letter spacing can break those connections — avoid it there.

liga

Non-zero can disable ligatures

When spacing is not zero, browsers often skip optional ligatures. That can change how pairs like “fi” look.

words

Not word spacing

Gaps between words belong to word-spacing, not letter-spacing.

Browser Support

letter-spacing is a browser CSS property for typography. Node.js, Deno, and Bun do not apply it.

✓ Baseline · Widely available

letter-spacing

normal and length values are widely supported across modern browsers. Percentage letter-spacing is newer and not part of these numbers.

100% normal and lengths
Google Chrome All versions
Full support
Mozilla Firefox All versions
Full support
Apple Safari All versions
Full support
Microsoft Edge All versions
Full support
Opera All versions
Full support
Samsung Internet All versions
Full support
Internet Explorer All versions
Full support
letter-spacing Widely supported

Bottom line: Safe for normal, px, and em tracking. Prefer em for scalable headings. Treat percentages as progressive. It is not a runtime API.

Key Takeaways

  • Role: control extra space between characters.
  • Initial value: normal. Inherited.
  • Signs: positive spreads; negative tightens.
  • Tip: use small em values on headings; keep body text near normal.

One line: letter-spacing adds tracking between letters — a little goes a long way.

Frequently Asked Questions

It adds extra space between characters on top of the font’s normal spacing. Positive values spread letters; negative values pull them closer.
The initial value is normal, which uses the font’s designed spacing and may still allow slight justification adjustments.
Not exactly. normal can let the browser tweak spacing for justification. A length such as 0 locks the extra spacing to zero.
Yes. Children inherit it unless they set their own value.
letter-spacing adjusts gaps between characters. word-spacing adjusts gaps between words.
It is Baseline and widely available for normal and length values. Percentage support is newer. It is a browser CSS property, not a Node.js feature.

Next: line-height

Learn how to set the height of text lines for readable paragraphs.

line-height tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

8 people found this page helpful