Letter Spacing Converter (Figma & Adobe to CSS)
Tracking, Figma % and px to CSS em, px and rem — plus line height, with a live preview.
Text
Letter spacing
Type 50, -2%, 0.5px or 0.05em — or paste letter-spacing: -0.02em; from CSS.
Code for each platform
Line height
Type 150%, 24px or 1.5. Figma’s Auto and CSS normal depend on the font, so they cannot be converted.
Code for each platform
Preview
letter-spacing: normal
letter-spacing: 0.05em · line-height: 1.5
The same values at other sizes
em and unitless values scale with the text; these are the pixel results.
| Font size | Letter spacing | Line height |
|---|
About the Letter Spacing Converter (Figma & Adobe to CSS)
Design files and stylesheets measure letter spacing in different units. Adobe InDesign, Illustrator and Photoshop use tracking in thousandths of an em, Figma uses a percentage of the font size or pixels, and CSS wants em, px or rem. Enter the value from the design and the font size, and the converter shows it in every unit at once — with ready-to-paste code for CSS, Tailwind CSS, SwiftUI, Android, Jetpack Compose, Flutter and React Native.
Line height gets the same treatment: Figma’s 150%, a fixed 24px and CSS’s unitless 1.5 are converted into each other, and a live preview shows the text with your spacing so you can check it before handing it over.
How to use it
- Enter the font size of the text in px (in a Photoshop or Illustrator file set up for screens at 72 ppi, the size in pt is the same number). Change the root font size only if your CSS sets one for
html. - Under Letter spacing, type the value from the design and choose its unit — tracking such as
50, Figma’s-2%, or0.5px. A unit you type (%,px,em,rem) is picked up automatically, and pasted CSS such asletter-spacing: -0.02em;works too. - Read the value in every unit and copy the code line for your platform.
emis usually the best choice for CSS: it keeps the spacing in proportion when the font size changes. - Under Line height, enter Figma’s percentage, a pixel value or a unitless number to get the others, then check both in the preview with your own text, font and weight.
Examples
Tracking 50 at 16px
letter-spacing: 0.05em; (0.8px, 5% in Figma)
Tracking ÷ 1000 = em, and em × font size = px.
Letter spacing -2% at 48px
letter-spacing: -0.02em; (-0.96px, tracking -20)
Line height 150% at 16px
line-height: 1.5; (24px)
1.2 px at 14px
letter-spacing: 0.0857em; (tracking 85.7)
1.2 ÷ 14 = 0.0857 em, rounded to four decimals.
Common uses
- Turning tracking values from an InDesign or Illustrator brand guide into CSS for a website.
- Copying Figma text styles into code, design tokens or a Tailwind theme without guessing.
- Giving iOS, Android and Flutter developers the right unit for each platform from one design value.
- Checking what a line height of 140% means in pixels for a baseline grid.
The formulas
- Adobe tracking is measured in thousandths of an em (the InDesign scripting reference defines
trackingthat way), so em = tracking ÷ 1000. Figma’s own help gives the same rule: letter spacing = tracking / 1000. - Figma % is a percentage of the font size: em = % ÷ 100, so 5% is 0.05em.
- px = em × font size, and rem = px ÷ root font size.
- Line height: a unitless number or
emmultiplies the font size,%is that number × 100, and px = number × font size. Figma’s percentage line height is also a percentage of the font size.
Percentages in CSS
CSS Text Level 3 only allows normal or a length for letter-spacing. CSS Text Level 4 adds percentages of the font size — the same meaning as Figma’s percent — and current Chromium, Firefox and WebKit engines accept letter-spacing: 5%. Browsers that only implement Level 3 drop the whole declaration, so 0.05em remains the safe way to write it.
Where browsers put the spacing
The CSS Text specifications place half of the spacing on each side of a letter and none at the start or end of a line. In our tests with current Chromium, Firefox and WebKit engines, the browsers add the whole amount after every letter instead, including the last one — so a 10px spacing makes “abc” 30px wider, not 20px. Centred or right-aligned text with wide spacing therefore sits slightly to the left. To balance it, add margin-right equal to minus the spacing (margin-right: -0.1em for letter-spacing: 0.1em), or the same amount as padding-left.
Unitless, % or px line height?
In CSS a unitless line height is inherited as a number, so every child element multiplies it by its own font size. A percentage or em is turned into a fixed length on the element that sets it, and children inherit that length — a small caption inside a line-height: 150% paragraph keeps the paragraph’s pixels (CSS 2.1 line-height). That is why unitless values are recommended. In both CSS and Figma the extra space is shared equally above and below the text.
Units on other platforms
- Android:
android:letterSpacingis in em (TextView)), so it takes the same number as CSS em;android:lineHeighttakes a dimension such as24sp. - SwiftUI:
.tracking()adds points after each character) — the px value at 1×. - Flutter:
letterSpacingis in logical pixels, andheightis a multiple of the font size like unitless CSS. - React Native:
letterSpacingandlineHeight(Text style props) are plain numbers, and React Native dimensions are density-independent pixels. - Tailwind CSS: the named tracking utilities are em values (
tracking-wideris 0.05em); anything else becomes an arbitrary value such astracking-[0.03em].leading-6is a fixed 1.5rem, not a multiplier (line height).
Limitations
- Figma’s “Auto” line height and CSS
line-height: normalcome from the font’s own metrics, so they have no fixed value to convert. Switch the line height to px in Figma to read the number. - Kerning set by hand between two letters (and Adobe’s optical kerning) is not part of tracking and is not converted.
- The preview uses fonts installed on your device; the exact look depends on the font and the browser.
- Results are rounded to four decimals for em, rem and unitless values and to three for pixels.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
How do I convert Adobe tracking to CSS letter-spacing?
Divide the tracking value by 1000 and write it in em: tracking 50 is letter-spacing: 0.05em, and tracking -25 is -0.025em. The font size does not matter for em; it only matters if you want px (0.05em at 16px is 0.8px).
How do I turn Figma’s letter spacing percentage into CSS?
Divide it by 100 and use em: Figma’s -2% is letter-spacing: -0.02em. If Figma shows px instead, divide by the font size: 0.5px at 20px is 0.025em.
Should letter-spacing be in em or px?
Use em in most cases. It is a fraction of the font size, so the spacing stays in proportion when the text is resized, inherited by bigger or smaller text, or zoomed by the reader’s text settings. A px value stays the same at every size.
Why does my centred, letter-spaced text look off-centre?
Browsers add the spacing after every letter, including the last one, so the text has extra space on the right. Add margin-right: -0.1em (minus your letter spacing) or the same amount as padding-left to centre it visually.
What is the difference between line-height: 1.5 and 150%?
On the element itself both give 1.5 × the font size. The difference is inheritance: children of 1.5 multiply by their own font size, while children of 150% inherit the parent’s fixed pixel value, which can make small text too loose or large text overlap.
Is anything uploaded?
No. Every conversion runs in your browser, and the page keeps working offline once it has loaded.