# CSS unit converter (px to rem, em, pt)

> Convert px to rem, em, pt, picas, inches and mm using your root font size, parent font size and DPI. CSS fixes 1 in = 96 px = 72 pt.

Interactive version: https://www.calcopenly.com/conversion/css-unit-converter
Subject: Unit converters

CSS converts every length through pixels. The absolute units are fixed to each other: 1 in = 2.54 cm = 96 px = 72 pt = 6 pc, and 1 Q is a quarter of a millimetre. The font-relative units depend on the page: 1 rem is the root element's font size, and when you set font-size, 1 em (or 100%) is the parent's font size. The converter turns the value into pixels, then divides by the pixels in one target unit.

Front-end developers use it to turn a design's pixel sizes into rem, so text follows the reader's browser font setting: with the default 16 px root, 24 px is 1.5 rem. Print designers use the pixels-per-inch field instead; at 300 DPI a 10 mm logo needs about 118 pixels.

On screens a CSS inch is not a measured inch. Browsers anchor 96 px to a reference pixel of about 0.0213° of visual angle, so physical units match a ruler only in print.

## Inputs

- **Value**
- **From** (options: Pixels (px), Points (pt), Picas (pc), Inches (in), Centimetres (cm), Millimetres (mm), Quarter-millimetres (Q), em (parent font size), rem (root font size), Percent of parent font size (%))
- **To** (options: Pixels (px), Points (pt), Picas (pc), Inches (in), Centimetres (cm), Millimetres (mm), Quarter-millimetres (Q), em (parent font size), rem (root font size), Percent of parent font size (%))
- **Root font size (for rem)**
- **Parent font size (for em and %)**
- **Pixels per inch**: CSS fixes 1 in = 96 px. Enter a screen or printer density (e.g. 300) to count physical pixels instead.

## Results

- Converted value — main result
- As CSS
- In pixels (px)

## Formula

$$
\begin{gathered} \text{to} = \text{value} \times \frac{\text{px per from-unit}}{\text{px per to-unit}} \\ 1\,\text{in} = 96\,\text{px} = 72\,\text{pt} = 2.54\,\text{cm} \end{gathered}
$$

## Worked examples

### 24 px in rem

- Value: 24
- From: Pixels (px)
- To: rem (root font size)
- Root font size (for rem): 16 px
- **Converted value: 1.5 rem**
- **As CSS: 1.5rem**
- **In pixels: 24 px**
- Checked against: CSS Values 3 §6.1: 1rem = root font size (16 px browser default); 24 / 16 = 1.5

### 12 pt in px

- Value: 12
- From: Points (pt)
- To: Pixels (px)
- Root font size (for rem): 16 px
- **Converted value: 16 px**
- **As CSS: 16px**
- Checked against: CSS Values 3 §6.2: 1pt = 1/72 in, 1in = 96px; 12 × 96/72 = 16

### 1 inch in CSS pixels

- Value: 1
- From: Inches (in)
- To: Pixels (px)
- Root font size (for rem): 16 px
- **Converted value: 96 px**
- Checked against: CSS Values 3 §6.2: 1in = 96px

### 1.5 rem in px

- Value: 1.5
- From: rem (root font size)
- To: Pixels (px)
- Root font size (for rem): 16 px
- **Converted value: 24 px**
- Checked against: 1 rem = root font size (16 px); 1.5 × 16

### 10 mm at 300 DPI

- Value: 10
- From: Millimetres (mm)
- To: Pixels (px)
- Root font size (for rem): 16 px
- Pixels per inch: 300 DPI
- **Converted value: 118.1102362 px**
- Checked against: 10 / 25.4 in × 300 px/in = 118.110236220… (Python fractions)

### 100% is 1 em

- Value: 100
- From: Percent of parent font size (%)
- To: em (parent font size)
- Root font size (for rem): 16 px
- **Converted value: 1 em**
- Checked against: CSS: percentage font sizes and em both refer to the parent font size

## Questions

### How many pixels is 1 rem?

16 pixels by default. One rem equals the font size of the root html element, and the major browsers set that to 16 px unless the reader changes the default font size or the stylesheet sets html { font-size }. Setting html { font-size: 62.5% } makes 1 rem = 10 px. The W3C CSS Values and Units specification defines rem; the 16 px figure is the browser default, not part of the specification.

### How do I convert px to pt?

Multiply pixels by 0.75; to go from points to pixels, multiply by 4/3 (about 1.333). Both factors follow from the W3C CSS rule 1 in = 96 px = 72 pt, so 1 px = 72/96 pt. Body text at 16 px is 12 pt, and 11 pt text from a word processor is about 14.67 px.

### What is the difference between em and rem?

rem always refers to the root element's font size; em refers to the current element's font size, or to the parent's when used on font-size itself. So em compounds when nested: a list set to 1.2em inside another list set to 1.2em has text 1.44 times the outer size, while 1.2rem stays at 19.2 px with a 16 px root however deep it sits.

### Should I use px or rem for font sizes?

Use rem if text should follow the reader's browser font-size setting. Page zoom enlarges px and rem alike, but the default font-size preference changes only rem, em and percentage sizes. WCAG 2.1 success criterion 1.4.4 (level AA) requires text that can be resized to 200% without loss of content or function; browser zoom can meet it with px, and rem also honours the font-size preference.

### Is a CSS inch the same as a real inch?

Only in print. CSS defines 1 in as exactly 96 px, and on screens browsers anchor the pixel to the W3C reference pixel: one pixel of a 96 DPI screen seen from 28 in away, a visual angle of about 0.0213°. Phones are held closer and use smaller pixels, so a 96 px box measures well under an inch on most phones. Printers anchor to physical units, so 1 in prints as 25.4 mm.

### How accurate is the CSS unit converter?

Accuracy depends on your inputs and the method's assumptions. Decimal arithmetic uses 50 significant digits, but estimates, numerical methods and source data can be less precise; the displayed rounding does not remove those limits. It is checked against 7 worked examples whose answers come from independent sources; for example, “24 px in rem” is checked against CSS Values 3 §6.1: 1rem = root font size (16 px browser default); 24 / 16 = 1.5.

### Where does the method come from?

W3C — CSS Values and Units Module Level 3, §6.2 absolute lengths and §6.1 font-relative lengths.

## Sources

- [W3C — CSS Values and Units Module Level 3, §6.2 absolute lengths and §6.1 font-relative lengths](https://www.w3.org/TR/css-values-3/#absolute-lengths)
