Millimetre ruler · calibrated against a card you already own
An online ruler in millimetres — and the half-millimetre marks it will not fake
Twenty centimetres of millimetre scale, drawn at whatever density your display turns out to have. Before you match a card it is drawn from the CSS specification's assumption that an inch is 96 pixels, and the readout says so; after you match one it is your screen's own scale, carrying the error band that match earned. The one thing this ruler will not do is print a graduation the raster cannot resolve — when a level goes, the page names it and quotes the density that would have kept it.
This page is set up for millimetres and the face follows the control above. Inches, in sixteenths and thirty-seconds, are a separate instrument rather than a second reading of this one.
UNCALIBRATED — assumed 96 CSS ppi
This is not actual size yet. Match a bank card to make it so.
Half-millimetre marks are not drawn on this display — they would land 1.9 device pixels apart, and below 3 they blur into a grey band instead of reading as marks. This screen would need 153 ppi.
Match the outline to a bank card
Hold any bank card, ID card or driving licence flat against the screen along the outline below and drag the slider until the two edges agree. All of them are the same object to ISO/IEC 7810, which fixes the format at 85.60 by 53.98 mm, and the spread the standard allows on that is one of the two terms in the band the readout prints. The other term is you: 0.7 mm of alignment slop across two edges, which is 0.818% of 85.60 mm and the larger of the two by a factor of 2.3.
Which edge you match changes the number, not the wording. The long edge earns ±1.2% and the short edge ±1.7%, because the same slop is a bigger share of 53.98 mm. On a phone in portrait the long edge does not fit across the glass at all — an iPhone 15 is about 64 mm wide — so stand the card upright and match it down the screen instead: the reference is still the full 85.60 mm and the band is still ±1.2%. The calibration walkthrough carries the clause, the sources and the objects that were checked and withheld.
A second object is worth having and it lives on the actual-size ruler, where a sheet of A4 can be matched against the card and the two answers compared as a percentage. That page is also where the arithmetic behind "actual size" is written out in full.
Which millimetre marks your screen can carry
A graduation is a claim that the gap between two marks is what the label says, and on a raster display that claim needs the marks to survive as marks. One pixel of line and two of clear gap is the floor: at a two-pixel pitch a comb aliases into flat grey and there is nothing left to count. So a level is drawn when its pitch reaches three device pixels and is dropped when it does not. Half-millimetre marks need 6.0 device pixels per millimetre, which is 152.4 pixels per inch, and that number is above the two commonest desktop monitors in the world.
| Level | Step | Device px per mm needed | Screen density needed | On a 24-inch 1080p panel (3.61) |
|---|---|---|---|---|
| Centimetre marks, numbered | 10 mm | 0.3 | 7.6 ppi | yes |
| Five-millimetre marks | 5 mm | 0.6 | 15.2 ppi | yes |
| Millimetre marks | 1 mm | 3.0 | 76.2 ppi | yes |
| Half-millimetre marks | 0.5 mm | 6.0 | 152.4 ppi | no |
The message under the ruler rounds the density it quotes up to the next whole pixel per inch, because a screen sitting exactly on a threshold is not above it. What it never does is stay quiet: the level that went is named, and so is the density that would have kept it. Every other online ruler we measured draws half-millimetre marks at any density at all, and the difference between the two behaviours is invisible in a screenshot — which is exactly why it is written down here instead.
What is measured, how it is kept, and what it cannot tell you
What is measured. One quantity: how many pixels of your display a millimetre occupies. A browser cannot ask the panel how large it is, and the CSS specification fixes an inch at exactly 96 pixels whatever the hardware, so that number has to come from you — an object whose size is fixed by a published standard, held against the glass, with an outline dragged to match it. Everything else on this page is arithmetic from that one ratio. The marks are then placed at their exact fractional pixel positions and never snapped to whole pixels, because snapping moves a mark by up to half a pixel, which is 0.13 mm at the CSS assumption and over a 10 mm reading a larger error than the band the page prints.
How it is kept. The stored quantity is device pixels per millimetre rather than CSS pixels per millimetre. Page zoom moves the browser's pixel ratio on Chrome, Edge and Firefox, and so does an operating-system display-scaling change on Windows and on GNOME; dividing by the current ratio returns the original figure, so a calibration survives those — measured across four display scales, the stored number did not move. Safari does not report page zoom that way, and a macOS scaled resolution puts the factor in the reported pixel count rather than the ratio; both of those are caught as a change and re-checked rather than corrected silently. Beside it the page records what the display was reporting at the time and compares them on every visit and on a timer, because a pixel-ratio change can fire no events at all. The record is one entry in your own browser storage, and it is shared with every other ruler here that needs a calibration — not with the screen ruler, which measures the browser's own layout and reads no record at all.
What it cannot tell you. Two limits, both real. No ruler in a browser can detect a swap to a different monitor of the same resolution: moving a 1080p profile from a 24-inch panel to a 32-inch one is a third wrong with every signal on the page identical, so the tool re-checks itself when the display reports something new and asks again after a long gap. And the band bounds two things only — the object's dimensional spread and your alignment. It does not model a bowed card, a card held at an angle to the glass, or screen curvature. Those are handled by which objects are offered at all, never by inflating a number until it means something other than what it says.