WS Scale Ring Size adds an on-screen ring sizer to any page, post or product. The visitor lays a ring they already own on the screen, shrinks the circle to the inside edge of the band, and reads their size. There is nothing to set up and nothing for them to calibrate.
Why on-screen sizers are usually wrong, and how this one is not
Most of them assume one CSS pixel equals 1/96 inch. That is only true on a classic desktop monitor. On a phone the viewport is scaled for reading distance, so the same circle renders about 40% smaller than intended — enough to be several sizes out.
WS Scale Ring Size instead reads what the browser really does report: the size of the screen in CSS pixels and the device pixel ratio. Together those identify the handset, and a built-in profile table turns that into the panel’s pixels per inch. From there:
pixels per mm = pixels per inch / 25.4 / device pixel ratio
Known devices are exact. Anything else is derived from the screen resolution against a typical diagonal for that class of device, which is usually within a few per cent. Browser zoom is folded into the device pixel ratio and cancels straight back out of that formula, and pinch zoom is corrected separately, so the circle stays true — the visitor is still told when they are not at 100%, because a zoomed page can crop it.
Features
Adding your own device
Densities come from a filterable table, so an unusual handset can be pinned down exactly:
add_filter( 'srsz_device_profiles', function ( $p ) { $p['generic']['360x772@3'] = 409; return $p; } );
The key is the CSS portrait viewport and the device pixel ratio; the value is the panel density in pixels per inch.