Home / CSS Generators / PX to REM Chart
01.09CSS Generators

PX to REM Chart

A printable-style reference for every pixel size from 1px to 200px, with the common ones (12px, 14px, 16px, 18px, 20px, 24px, 32px, 40px) up front. Set your own root font size and the whole chart recalculates.

Updated
Result (click to copy)

The sizes designers use most

PX to REM chart (16px root)

PXREMPT
1px0.0625rem0.75pt
2px0.125rem1.5pt
3px0.1875rem2.25pt
4px0.25rem3pt
5px0.3125rem3.75pt
6px0.375rem4.5pt
7px0.4375rem5.25pt
8px0.5rem6pt
9px0.5625rem6.75pt
10px0.625rem7.5pt
11px0.6875rem8.25pt
12px0.75rem9pt
13px0.8125rem9.75pt
14px0.875rem10.5pt
15px0.9375rem11.25pt
16px1rem12pt
17px1.0625rem12.75pt
18px1.125rem13.5pt
19px1.1875rem14.25pt
20px1.25rem15pt
21px1.3125rem15.75pt
22px1.375rem16.5pt
23px1.4375rem17.25pt
24px1.5rem18pt
25px1.5625rem18.75pt
26px1.625rem19.5pt
27px1.6875rem20.25pt
28px1.75rem21pt
29px1.8125rem21.75pt
30px1.875rem22.5pt
31px1.9375rem23.25pt
32px2rem24pt
PXREMPT
33px2.0625rem24.75pt
34px2.125rem25.5pt
35px2.1875rem26.25pt
36px2.25rem27pt
37px2.3125rem27.75pt
38px2.375rem28.5pt
39px2.4375rem29.25pt
40px2.5rem30pt
41px2.5625rem30.75pt
42px2.625rem31.5pt
43px2.6875rem32.25pt
44px2.75rem33pt
45px2.8125rem33.75pt
46px2.875rem34.5pt
47px2.9375rem35.25pt
48px3rem36pt
49px3.0625rem36.75pt
50px3.125rem37.5pt
51px3.1875rem38.25pt
52px3.25rem39pt
53px3.3125rem39.75pt
54px3.375rem40.5pt
55px3.4375rem41.25pt
56px3.5rem42pt
57px3.5625rem42.75pt
58px3.625rem43.5pt
59px3.6875rem44.25pt
60px3.75rem45pt
61px3.8125rem45.75pt
62px3.875rem46.5pt
63px3.9375rem47.25pt
64px4rem48pt
PXREMPT
65px4.0625rem48.75pt
66px4.125rem49.5pt
67px4.1875rem50.25pt
68px4.25rem51pt
69px4.3125rem51.75pt
70px4.375rem52.5pt
71px4.4375rem53.25pt
72px4.5rem54pt
73px4.5625rem54.75pt
74px4.625rem55.5pt
75px4.6875rem56.25pt
76px4.75rem57pt
77px4.8125rem57.75pt
78px4.875rem58.5pt
79px4.9375rem59.25pt
80px5rem60pt
81px5.0625rem60.75pt
82px5.125rem61.5pt
83px5.1875rem62.25pt
84px5.25rem63pt
85px5.3125rem63.75pt
86px5.375rem64.5pt
87px5.4375rem65.25pt
88px5.5rem66pt
89px5.5625rem66.75pt
90px5.625rem67.5pt
91px5.6875rem68.25pt
92px5.75rem69pt
93px5.8125rem69.75pt
94px5.875rem70.5pt
95px5.9375rem71.25pt
96px6rem72pt
PXREMPT
97px6.0625rem72.75pt
98px6.125rem73.5pt
99px6.1875rem74.25pt
100px6.25rem75pt
104px6.5rem78pt
108px6.75rem81pt
112px7rem84pt
116px7.25rem87pt
120px7.5rem90pt
124px7.75rem93pt
128px8rem96pt
132px8.25rem99pt
136px8.5rem102pt
140px8.75rem105pt
144px9rem108pt
148px9.25rem111pt
152px9.5rem114pt
156px9.75rem117pt
160px10rem120pt
164px10.25rem123pt
168px10.5rem126pt
172px10.75rem129pt
176px11rem132pt
180px11.25rem135pt
184px11.5rem138pt
188px11.75rem141pt
192px12rem144pt
196px12.25rem147pt
200px12.5rem150pt

Common px to rem values

Almost every site converts the same dozen sizes again and again, so here they are in one place, using the browser default root of 16px. 12px is 0.75rem, 14px is 0.875rem, 16px is 1rem, 18px is 1.125rem, 20px is 1.25rem, 24px is 1.5rem, 32px is 2rem, 40px is 2.5rem, 48px is 3rem and 64px is 4rem. The full chart above runs from 1px to 200px, and the lookup box handles any other number, including decimals such as 13.5px.

If you need a one-off conversion with em, pt, percent or viewport units, or want to convert a whole stylesheet at once, use the PX to REM converter. If you are going the other direction, the REM to PX converter shows what a rem value turns into at different reader text sizes.

How the chart is calculated

The rule is a single division: rem = px / root font size. The root font size is the computed font size of the html element. Browsers ship with 16px as the default, which is why 16px equals 1rem and why every row in this chart is the pixel value divided by 16. The third column converts pixels to points for people moving between design tools and CSS, using 1pt = 1.3333px, so 16px is 12pt.

Change the root size at the top and every row recalculates. The page address updates too, so a chart for an 18px or 10px root can be bookmarked or shared with a teammate.

Why developers use rem instead of px

A rem value follows the reader's own text size preference, and a px value does not. Someone who raised their browser default from 16px to 20px because small type is tiring to read gets 1rem at 20px, so your 1.125rem paragraph becomes 22.5px. A paragraph set to 18px stays 18px and the preference is ignored. WCAG success criterion 1.4.4 asks that text can be resized up to 200 percent without losing content or function, and sizing type in rem is the simplest way to stay on the right side of it.

That does not mean everything should be rem. Hairline borders, small shadows and exact image sizes are usually better left in pixels, because a 1px line that grows to 1.25px at larger text sizes looks blurry rather than helpful.

A spacing and type scale built from the chart

A tidy scale picks values from the chart in steps that feel even. Here is a typical set based on a 16px root, ready to drop into a stylesheet:

:root {
  --space-1: 0.25rem;  /* 4px  */
  --space-2: 0.5rem;   /* 8px  */
  --space-3: 0.75rem;  /* 12px */
  --space-4: 1rem;     /* 16px */
  --space-6: 1.5rem;   /* 24px */
  --space-8: 2rem;     /* 32px */
  --space-12: 3rem;    /* 48px */
  --text-sm: 0.875rem; /* 14px */
  --text-base: 1rem;   /* 16px */
  --text-lg: 1.125rem; /* 18px */
  --text-xl: 1.25rem;  /* 20px */
  --text-2xl: 1.5rem;  /* 24px */
}

The "Copy as CSS variables" button builds a similar list from every multiple of 4 up to 128px, at whatever root size you have set.

What if your root is not 16px?

Some themes and frameworks set html { font-size: 62.5% } so that 1rem equals 10px and the arithmetic is easy: 14px becomes 1.4rem and 24px becomes 2.4rem. Others use a 14px or 18px root. Check the computed font size of the html element in your browser DevTools, type it into the root size box and the whole chart follows. Do not mix charts: a value copied from a 16px chart into a stylesheet with a 10px root will render at 62.5 percent of the size you wanted.

Quick mental math

  • Multiples of 16 are whole numbers: 32px is 2rem, 48px is 3rem, 64px is 4rem.
  • Multiples of 8 end in .5: 8px is 0.5rem, 24px is 1.5rem, 40px is 2.5rem.
  • Multiples of 4 end in .25 or .75: 4px is 0.25rem, 12px is 0.75rem, 20px is 1.25rem.
  • Everything else is a decimal. 15px is 0.9375rem, so many teams round to 0.9375rem or use the next step on the scale.

Related reading: our fluid type scale generator combines rem and viewport units in clamp() so headings grow smoothly between phone and desktop sizes, and the website launch checklist includes the accessibility checks worth running before launch.

Frequently asked questions

What is 16px in rem?

16px is 1rem when the root font size is the browser default of 16px. The conversion is the pixel value divided by the root size, so 16 divided by 16 is 1.

What is 12px in rem?

12px is 0.75rem at a 16px root. 14px is 0.875rem, 18px is 1.125rem, 20px is 1.25rem and 24px is 1.5rem. Use the chart above for any other size.

What is 40px in rem?

40px is 2.5rem with a 16px root, because 40 divided by 16 is 2.5. At a 10px root (html font-size 62.5%) the same 40px would be 4rem.

Should I use px or rem for font sizes?

Use rem for font sizes and most spacing so the layout respects the reader’s browser text size setting. Keep px for hairline borders, small shadows and fixed-size images where an exact pixel is the point.

Does the chart change if I set html font-size to 62.5%?

Yes. Enter 10 as the root font size and every rem value is recalculated against 10px. For example 14px becomes 1.4rem and 24px becomes 2.4rem. Always use the root size that your own stylesheet really sets.