ChArUco, plain checkerboard, and Kalibr AprilGrid as true-vector PDF at exact physical dimensions. Free, and it runs entirely in your browser — nothing is uploaded.
Everything is vector. Each square and each marker cell is a filled rectangle written straight into the PDF. No image is rasterised anywhere in the chain, so the only dimensional error in your printed board comes from the printer and the paper.
ChArUco layout matches OpenCV. Square (col,row) is black when
col+row is even, and markers sit centred in the white squares numbered row-major
from the top-left — so cv2.aruco.CharucoBoard detects it directly.
AprilGrid follows Kalibr. Tags are numbered row-major from the
bottom-left, which is the opposite vertical order from ChArUco. Pitch is
tagSize × (1 + tagSpacing). The YAML button gives you a matching config.
Measure before you trust it. Put calipers across three squares, not one — short spans hide accumulated error. Whatever you measure is what belongs in your calibration config, not the nominal value.