Methodology — Every Formula, Every Weight, Nothing Hidden

The public scale behind FaceRuler: all 8 metric formulas with reference bands, the 5-dimension weights, the median-anchored curve, calibration policy and honest limitations.
Oct 12, 2026

Every number FaceRuler produces comes from the formulas on this page. No hidden model re-weights your face after the measurement, no generative AI vibes a score — the detection model finds landmarks, and everything after that is geometry you can check by hand.

Pipeline overview

  1. Detect — a face-landmark model places 478 points (MediaPipe FaceLandmarker, run client-side in your browser).
  2. Measure — 8 metrics are computed as raw geometry from those points, each scored 0–100 against a community reference band with a Gaussian falloff: 100 at dead-center, falling off by tolerance.
  3. Weight — sub-scores roll up into 5 dimensions with fixed weights.
  4. Curve — the weighted overall (0–100) maps onto the 0–8 PSL scale through a logistic curve with the median anchored at 4.0.

The 8 metrics

#MetricReadsReference (target)ToleranceDimension
1SymmetryMidline deviation over 8 paired landmarks, roll-corrected0%1.2% of face widthSymmetry
2Facial ThirdsMax deviation of upper/mid/lower height from equal thirds33.3% each±4.5%Proportions
3Golden RatiosFace h/w 1.46 · mouth/nose 1.55 · eye-int/nose 1.0 (3-way average)As listed0.12 / 0.25 / 0.14Proportions
4Eye SpacingInterpupillary ÷ face width0.460.035Proportions
5FWHRBizygomatic (pts 127/356) ÷ nasion(168)→upper-lip(0), roll-corrected2.75*0.22Structure
6Jaw Width RatioBigonial (172/397) ÷ bizygomatic width0.880.07Structure
7Canthal TiltOuter-vs-inner corner angle, averaged over both eyes, roll-corrected+6°±4.5°Eyes
8Eye AspectEye height ÷ eye width, averaged0.330.06Eyes

*FWHR is calibrated in MediaPipe normalized coordinates, where nasion-to-lip runs ~36% of bizygomatic width — so the population centers near 2.75. The academic photo-measurement value (~1.85) is a different ruler and not comparable. See the note on the PSL calculator.

Weights

DimensionSub-metricsWeight
Symmetrysymmetry20%
Proportionsthirds, golden, eye spacing (mean)25%
StructureFWHR, jaw (mean)25%
Eyescanthal tilt, eye aspect (mean)15%
Harmonyconsistency of all 8 sub-scores15%

Harmony is computed, not hand-waved: the standard deviation of the 8 sub-scores, mapped as max(0, 100 − 2.2 × σ). A face with one dragged metric loses harmony; a uniformly average face keeps it.

The curve

The weighted overall (0–100) maps onto 0–8 through a logistic function:

psl = 8 / (1 + exp(−(overall − 50) / 13))

The slope (13) and the anchor (overall 50 → exactly PSL 4.0) are chosen so the population median sits at 4.0 and the practical top of the curve lands around PSL 7.7. Casual 1–10 conversion: min(10, 2.4 + psl).

Calibration policy

  • Reference bands are community consensus values, cross-checked against facial anthropometry (Farkas).
  • FWHR is explicitly re-anchored to the MediaPipe coordinate space (2.75, tol 0.22) because the literature's 1.85 measures a different ruler.
  • Bands are recalibrated from anonymous aggregate data quarterly. No individual data ever leaves the device — calibration uses aggregate distributions only.

What this tool cannot do

  • It reads one photo's geometry — not skin, style, expression, height, or voice.
  • Readings move with head pose, lighting and distance; the PSL test protocol exists because of this.
  • It cannot see bone beneath soft tissue. "Structure" is a surface reading.
  • It is a ruler, not a verdict: a low reading on one metric is information about one photo, not about a person.

Privacy

Detection and measurement run entirely in your browser via WebAssembly. The photo is never uploaded — there is no server copy, nothing to leak, and calibration never receives individual data. This is not a policy promise; it is an architectural fact.

Where to go next