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
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.
- px
- 16
- rem
- 1
- em
- 1
- pt
- 12
- %
- 100
pt = px ÷ 96/72 12pt = 16 px ÷ 1.3333 (via 16 px)
| px | rem | em | pt | % |
|---|---|---|---|---|
| 1px | 0.0625rem | 0.0625em | 0.75pt | 6.25% |
| 2px | 0.125rem | 0.125em | 1.5pt | 12.5% |
| 4px | 0.25rem | 0.25em | 3pt | 25% |
| 6px | 0.375rem | 0.375em | 4.5pt | 37.5% |
| 8px | 0.5rem | 0.5em | 6pt | 50% |
| 10px | 0.625rem | 0.625em | 7.5pt | 62.5% |
| 11px | 0.6875rem | 0.6875em | 8.25pt | 68.75% |
| 12px | 0.75rem | 0.75em | 9pt | 75% |
| 13px | 0.8125rem | 0.8125em | 9.75pt | 81.25% |
| 14px | 0.875rem | 0.875em | 10.5pt | 87.5% |
| 15px | 0.9375rem | 0.9375em | 11.25pt | 93.75% |
| 16px | 1rem | 1em | 12pt | 100% |
| 17px | 1.0625rem | 1.0625em | 12.75pt | 106.25% |
| 18px | 1.125rem | 1.125em | 13.5pt | 112.5% |
| 20px | 1.25rem | 1.25em | 15pt | 125% |
| 22px | 1.375rem | 1.375em | 16.5pt | 137.5% |
| 24px | 1.5rem | 1.5em | 18pt | 150% |
| 26px | 1.625rem | 1.625em | 19.5pt | 162.5% |
| 28px | 1.75rem | 1.75em | 21pt | 175% |
| 30px | 1.875rem | 1.875em | 22.5pt | 187.5% |
| 32px | 2rem | 2em | 24pt | 200% |
| 36px | 2.25rem | 2.25em | 27pt | 225% |
| 40px | 2.5rem | 2.5em | 30pt | 250% |
| 44px | 2.75rem | 2.75em | 33pt | 275% |
| 48px | 3rem | 3em | 36pt | 300% |
| 56px | 3.5rem | 3.5em | 42pt | 350% |
| 64px | 4rem | 4em | 48pt | 400% |
| 72px | 4.5rem | 4.5em | 54pt | 450% |
| 80px | 5rem | 5em | 60pt | 500% |
| 96px | 6rem | 6em | 72pt | 600% |
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
- Turn off Wi-Fi or enable airplane mode, then use the tool. It keeps working, because the page is already fully loaded.
- 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
| pt | px | Print convention |
|---|---|---|
| 6 | 8 | Legal small print |
| 8 | 10.67 | Footnotes, captions |
| 9 | 12 | Dense body text, tables |
| 10 | 13.33 | Newspaper body |
| 11 | 14.67 | Word’s Calibri default |
| 12 | 16 | Word’s Times default; standard manuscript body |
| 14 | 18.67 | Large print threshold |
| 18 | 24 | Sub-heading |
| 24 | 32 | Heading |
| 36 | 48 | Title |
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
@pagerule 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.