Skip to content

PX to points converter

Convert CSS pixels to typographic points and back using the fixed 96 px per inch that CSS defines, for print stylesheets and PDF work.

  • Runs in your browser
  • Nothing you enter is sent
  • Free, no account
Pixels (px) to Points (pt)
Convert a single value, or paste a whole stylesheet and rewrite every length at once. The root and parent font sizes below drive every number on this page.

A CSS pixel — an absolute unit in CSS terms, independent of the device pixel ratio.

A print unit. CSS fixes 1 in = 96 px = 72 pt, so 1 pt = 4/3 px exactly.

The rem basis. 16 px unless you changed the html font-size.

The em and % basis — the computed font size of the element's parent.

16px equals
12pt
At a 16 px root and a 16 px parent.
px
16
rem
1
em
1
pt
12
%
100
pt = px ÷ 96/72
12pt = 16 px ÷ 1.3333
(via 16 px)
The conversion with your own numbers substituted in.
Bulk rewrite a stylesheet
Paste CSS and every matching length is converted at once. Strings, comments and url() bodies are copied through untouched, and each category of value can be left alone.
Reference table
Every common size at a 16 px root font size. Change the root above and the whole table re-computes.
Pixel values converted to rem, em, points and percent
pxremempt%
1px0.0625rem0.0625em0.75pt6.25%
2px0.125rem0.125em1.5pt12.5%
4px0.25rem0.25em3pt25%
6px0.375rem0.375em4.5pt37.5%
8px0.5rem0.5em6pt50%
10px0.625rem0.625em7.5pt62.5%
11px0.6875rem0.6875em8.25pt68.75%
12px0.75rem0.75em9pt75%
13px0.8125rem0.8125em9.75pt81.25%
14px0.875rem0.875em10.5pt87.5%
15px0.9375rem0.9375em11.25pt93.75%
16px1rem1em12pt100%
17px1.0625rem1.0625em12.75pt106.25%
18px1.125rem1.125em13.5pt112.5%
20px1.25rem1.25em15pt125%
22px1.375rem1.375em16.5pt137.5%
24px1.5rem1.5em18pt150%
26px1.625rem1.625em19.5pt162.5%
28px1.75rem1.75em21pt175%
30px1.875rem1.875em22.5pt187.5%
32px2rem2em24pt200%
36px2.25rem2.25em27pt225%
40px2.5rem2.5em30pt250%
44px2.75rem2.75em33pt275%
48px3rem3em36pt300%
56px3.5rem3.5em42pt350%
64px4rem4em48pt400%
72px4.5rem4.5em54pt450%
80px5rem5em60pt500%
96px6rem6em72pt600%
Your CSS never leaves this tab — check it yourself—

Starting the network probe…

The counter above wraps fetch, XMLHttpRequest and navigator.sendBeacon in this tab and counts every call. It does not block anything — it just reports.

Two ways to verify independently

  1. Turn off Wi-Fi or enable airplane mode, then use the tool. It keeps working, because the page is already fully loaded.
  2. Open your browser devtools, switch to the Network tab, clear it, and run the tool. No new row appears.

Why this matters

In 2025 researchers found that popular online formatters had retained tens of thousands of user-submitted snippets — JSONFormatter.org and CodeBeautify together exposed roughly 80,000 saved documents, many containing live cloud credentials, private keys and internal database connection strings, because “format this” quietly meant “upload this”. A separate incident exposed roughly 3.5 million user PDFs on a document-conversion service. The only structural fix is not sending the data in the first place: this site is served under a Content-Security-Policy whose connect-src contains no third-party origin, so a request off this device cannot be made even by accident.

The exact relationship

CSS fixes two absolute equivalences, and everything else follows from them: 1 inch = 96 px and 1 inch = 72 pt.

1pt = 96/72 px = 1.3333px
1px = 72/96 pt = 0.75pt

12pt = 16px    (the browser default body size)
 9pt = 12px
10.5pt = 14px
18pt = 24px

The 12pt/16px correspondence is not a coincidence. Browsers chose 16px as the default body size precisely because 12pt was the conventional size of body text in print.

Both units are absolute, and neither is physical

The point comes from typography, where it is genuinely physical: 1/72 of an inch on paper. The CSS pixel is a reference pixel — a unit of visual angle chosen so content appears the same size at a normal viewing distance regardless of display density. Because CSS pins them together at 96/72, the conversion is exact and independent of any device.

What that means in practice: 12pt in CSS is 16px on every screen. 12pt in Word on paper is 12/72 of an inch. They are the same nominal size and they are measured against different things, which is why a heading that looks right on screen can look small when printed.

Conversion table

ptpxPrint convention
68Legal small print
810.67Footnotes, captions
912Dense body text, tables
1013.33Newspaper body
1114.67Word’s Calibri default
1216Word’s Times default; standard manuscript body
1418.67Large print threshold
1824Sub-heading
2432Heading
3648Title

When to use pt in CSS

Only inside a print stylesheet, and even then only for type. Everywhere else it buys nothing over px and confuses the scale.

@media print {
  body { font-size: 11pt; line-height: 1.4; }
  h1   { font-size: 20pt; }
  h2   { font-size: 15pt; }
  a[href]::after { content: " (" attr(href) ")"; font-size: 9pt; }
}

@page { margin: 20mm; }

Why the printed result may not match

  • Shrink to fit. Most browsers scale the page down to fit the paper width unless you turn it off in the print dialog. A 12pt heading can arrive at 11pt.
  • Default margins. Set them explicitly with the @page rule rather than relying on the browser’s.
  • Font substitution. A web font that fails to load in the print context is replaced by a fallback with different metrics.
  • Printer DPI. Irrelevant to size — 600dpi and 1200dpi produce the same physical dimensions, just different sharpness.

Points are not pica, and DTP points are not PostScript points

One pica is 12 points, or 16px in CSS terms. Historically, several slightly different point sizes existed — the American printer’s point was 1/72.27 inch — but every modern system, CSS included, uses the PostScript point of exactly 1/72 inch. If you are working from a very old typographic specification, that 0.4% difference is the reason numbers do not quite line up.

Questions

What is the exact relationship?

CSS fixes 1 inch = 96 px and 1 inch = 72 pt, so 1 pt = 96/72 px = 1.3333 px, and 1 px = 0.75 pt. 12 pt is exactly 16 px, which is why the browser default body size is 16 px — it matches the classic 12 pt of a printed page.

Is the pixel here a real screen pixel?

No. The CSS "reference pixel" is a unit of angular measure defined so that content looks the same size at a normal viewing distance on any device. That is why 96 px per inch holds regardless of the actual display density.

When do I need points?

Print stylesheets, PDF generation, and anywhere you are matching a document produced in Word or InDesign. Screen CSS should stay in rem and px — points buy you nothing on a display and confuse the type scale.

Why does my printed page not match?

Because printers scale. Most browsers apply a shrink-to-fit and a default margin when printing, so a 12 pt heading can come out at 11 pt. Set explicit `@page` margins and turn off scaling in the print dialog if exact sizing matters.