Online ruler · calibrated against a card you already own

An online ruler that is actual size — and says how wrong it might be

Below is a working ruler. Until you match the outline to a bank card it is drawn from the CSS specification's assumption that an inch is 96 pixels, which is wrong on almost every display, and the readout says so in those words. One twenty-second match replaces the assumption with a measurement of your own screen, and every reading after that carries the error band it actually earned.

Calibrationuncalibrated Referencenone matched px/mm3.780 assumed Error bandnone — not calibrated Unitmm Length shown150 mm assumed
0123456789101112131415
Unit

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 against the screen, along the outline below, and drag the slider until the two edges line up. Every one of those cards is the same object to the standard that governs it: 85.60 by 53.98 mm nominal, and the tolerance on that is where the ruler's error band comes from. A card and an A4 sheet are the two objects this site offers, and the calibration walkthrough and reference table says which others were checked and why they are withheld.

Two ways to hold it, and the choice is worth a third of the error band. Laid flat across the screen the long edge needs 85.60 mm of width, which a phone in portrait does not have — an iPhone 15 is about 64 mm of glass, a Pro Max about 71, an SE about 58. Stood upright against the same phone the full long edge fits down the screen instead, so the reference stays 85.60 mm and the band stays ±1.2% rather than widening to the short edge's ±1.7%. On a tall screen this page starts you on the upright mode for that reason and says so under the ruler; the page about measuring on a phone carries the geometry in full.

324 px wide · steps of 1 px · 129–1369 px for this edge
Edge you are matching
How the card is held

A stated screen size moves the outline near where it probably belongs, so there is less dragging to do. It is not a calibration and never turns anything green: it assumes the pixel count your browser reports is the panel's own, which is false under macOS scaled resolutions, false in Safari under page zoom, and false wherever a privacy mode is rewriting those numbers. Once you have matched a card it also prints the two figures side by side, which is a sanity check and nothing more.

The readout turns green for one thing only: a reference match you completed. A stored calibration whose display has since changed, one old enough to be worth re-checking, one that failed its own checks on the way back in, and a live pinch-zoom are all reported in neutral, because none of them is a measurement.

Check it against a second object

One measurement is a measurement. Two independent measurements that agree are evidence, and this is the only thing on the site that earns the word verified. Take a sheet of A4, match its outline the same way, and the page prints how far apart the two answers are as a percentage of their mean. Inside 1% the readout says cross-checked. Outside it, the number is printed and the card measurement stands unchanged.

Paper is a second opinion here and never the calibration itself, and the tool refuses it as one rather than warning about it. A sheet bows away from a vertical screen, and that bias is systematic — it is not inside the ±1.0% the long edge earns, which covers only ISO 216's ±2 mm and your alignment. What paper has instead is length: 297 mm against a card's 85.60, so your hand's slop is a much smaller share of it.

Second object
1123 px wide · steps of 2 px · 446–4752 px for this edge
Edge you are matching
How the sheet is held

NOTHING TO CHECK YET — calibrate against a card first

What a disagreement above 1% means, stated because the arithmetic says something a tighter-sounding sentence would not: a card at ±1.2% and an A4 long edge at ±1.0% can legitimately differ by ±2.1% with both readings correct and inside their own bands, against a 1% gate. So above 1% the second object has not confirmed the first. It has not shown it wrong either, and this page will not say that it has. Re-matching the card starts again from one measurement, because the sheet agreed with a number that no longer exists.

Marks this ruler will not draw

A printed graduation is a claim that the distance 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 graduation needs three device pixels of pitch before it is drawn at all. Half-millimetre marks need 6.0 device pixels per millimetre, which is 152.4 pixels per inch, and the two commonest desktop monitors in the world are below it:

DisplayDevice px per mm1 mm marks½ mm marks
24-inch 1920×10803.61yesno
27-inch 2560×14404.28yesno
13.3-inch 1080p at 100%6.54yesyes
14-inch laptop retina panel10.00yesyes
Recent flagship phone18.11yesyes
55-inch 1080p television1.57nono

So on those screens the level is dropped, and the note under the ruler above says which level went and what density the screen would have needed to keep it. Competitors draw the marks anyway. The difference is not visible in a screenshot, which is exactly why it is written down.

The tools on this site

What is measured, how it is kept, and what it cannot tell you

What is measured. A browser cannot ask the display how large it is. It reports CSS pixels, and the CSS specification defines an inch as exactly 96 of them whatever the panel actually is — so a ruler drawn straight from that number is correct only by coincidence. The one measurement that fixes this comes from you: hold an object of known size against the glass, match the rendered outline to it, and the ratio between the object's real millimetres and the outline's pixels is this display's scale. Marks are then drawn at their exact fractional pixel positions and never snapped to the pixel grid, because snapping moves a mark by up to half a pixel — 0.13 mm on a typical monitor, which over a 10 mm reading would be a larger error than the band this page prints.

How it is kept. What gets stored is device pixels per millimetre, not 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 the calibration survives those — measured across four display scales, 100 mm rendered at the same device-pixel width every time. Two cases are caught rather than corrected: Safari does not report page zoom through the pixel ratio, and a macOS scaled resolution moves the reported pixel count instead. Both leave green and ask for another twenty seconds, which is what the witnesses are for: alongside the density the page records what the display was reporting — pixel ratio, native pixel count, browser chrome, layout scale — and compares them on every visit and on a timer, because a pixel-ratio change can fire no events at all. There is one record and every ruler here that needs a calibration reads it, so a card matched here is a card matched on the millimetre ruler, the inch ruler, the actual-size ruler and the phone page — it does not travel to another browser, another device or another site, because browser storage is kept per site and per browser and nothing here is sent anywhere.

What it cannot tell you. Two limits, stated because they are real. First, no ruler in a browser can detect a change 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. Casting, mirroring, screen magnifiers and a same-profile move to another machine are undetectable for the same reason, which is why the calibration is re-checked when the display reports anything new and re-offered after a long gap. Second, the error band bounds the object's dimensional spread and your alignment. It does not model holding the card off the glass at an angle, screen curvature, or paper flexing against a vertical panel — those are handled by which objects are offered at all, not by inflating a number until it means something other than what it says.

Questions

Why does an on-screen ruler need a bank card?
A browser has no way to ask how large your screen is. It reports pixels, and the CSS specification fixes an inch at 96 pixels regardless of the panel, so a ruler drawn from that number is right only on a display that happens to be 96 pixels per inch. Holding a card of known size against the screen and matching an outline to it supplies the one measurement the browser cannot: how many pixels a millimetre is, on this display.
How accurate is a bank-card calibration?
Along the long edge, to within about 1.2 percent. That is the sum of two bounds: 0.351 percent for how far a personalized card may sit from its nominal 85.60 mm under ISO/IEC 7810:2019, and 0.818 percent for 0.7 mm of human slop across two edges of an 85.60 mm object. Matching the short edge instead widens it to 1.7 percent, because the same 0.7 mm of slop is a larger share of 53.98 mm. Matching a second object afterwards, an A4 sheet, does not tighten that band: it either agrees with the card inside 1 percent or it does not, and the page prints which.
Why are half-millimetre marks missing on my monitor?
Because on most desktop monitors they cannot be drawn as separate marks. A half-millimetre pitch needs at least 6 device pixels per millimetre to leave one pixel of line and two of gap. A 24-inch 1080p panel has 3.6 and a 27-inch 1440p panel has 4.3, so a half-millimetre comb there renders as a flat grey band that nobody can count. Marks below that threshold are left off and the omission is reported rather than hidden.
Does a calibration survive zooming or changing display scale?
What gets stored is device pixels per millimetre rather than CSS pixels per millimetre, so page zoom divides back out of it on Chrome, Edge and Firefox, and so does an operating-system display-scaling change on Windows and on GNOME. Measured across four display scales, the stored quantity did not move. Two cases are caught rather than corrected: Safari does not report page zoom through the pixel ratio, and a macOS scaled resolution moves the reported pixel count instead — both leave green and ask for another match. What no ruler can detect at all is a swap to a different monitor of the same resolution, so the tool re-checks itself when the display reports something new and asks again after a long gap.
Is anything measured here sent anywhere?
No. The arithmetic runs in your browser, a calibration is kept in your own browser storage, and the site runs no analytics on any page. The content security policy served with this site allows the page to talk to no origin at all, so the restriction is enforced by the browser rather than described in a paragraph.