Methodology
Nothing on this site is a rating. Every number is a distance or an angle between named landmarks, divided by another distance so it does not depend on photo size, and compared with a typical band. This page lists the points, the formulas, the bands and, because a measurement is only useful if it repeats, how much each reading moves when the same face is photographed slightly differently.
Pipeline
1 · Landmarks
The photo goes through a face landmark model (MediaPipe Face Landmarker, 478 points) running in your browser via WebAssembly. Nothing is uploaded. The model places the same numbered points on every face, so point 133 is always the inner corner of the photo-left eye.
2 · Roll correction
Everything is rotated so the line between the two iris centres (468, 473) is horizontal. This removes head tilt before any angle or vertical difference is read. The roll removed is shown in the results; over 3° we suggest a retake.
3 · Readings
Each reading is an explicit formula on those points (table below). Widths are divided by face width (127–356) and heights by a vertical reference, so the numbers are ratios, not pixels.
4 · Bands
Each reading is shown next to a typical band. The bands come from published anthropometry where it exists (fWHR, canthal tilt, facial thirds) and from the app's own distribution where it does not. A reading outside its band is a description, not a verdict.
Every reading
| Reading | Landmarks | Formula | Band |
|---|---|---|---|
| Symmetry index Symmetry | Brow midline through 9 (glabella); pairs 159/386, 105/334, 61/291, 33/263, 234/454, 172/397, 48/278; 152, 1 | 100 − 380 × weighted mean of left-right deviations, each divided by face width (127–356) | 92–100 symmetric · 86–91 mild · under 86 noticeable |
| Chin / nose offset Symmetry | 152 (chin), 1 (nose tip) vs the vertical through 9 | (x − midline) ÷ face width | under 1.5 % usually unnoticed |
| Canthal tilt Eyes | Inner corners 133 / 362, outer corners 33 / 263 | atan2(inner.y − outer.y, |outer.x − inner.x|) per eye, after roll correction; average of both | 0 to +5° ideal on this scale · +2° and up reads positive |
| Eye aperture Eyes | Upper / lower lid 159–145 and 386–374; eye width 33–133, 362–263 | mean (lid height ÷ eye width) | ≤ 0.32 narrow · ≥ 0.38 round |
| Brow-to-lid distance Eyes | Brow lower edge 52 / 282, upper lid 159 / 386 | mean gap ÷ eye width | ≤ 0.50 low-set brow |
| Jaw angle Jaw | 172, 152, 397 | angle at the chin between the two jaw corners | 108–122° defined · 122–128° broad · over 128° soft |
| Jaw : face width Jaw | 172–397 over 127–356 | ratio of widths | 0.72–0.84 typical · over 0.84 square |
| Chin height Jaw | 14 (lower lip), 152, 2 (subnasale) | (chin − lower lip) ÷ (chin − subnasale) | 60–72 % typical |
| Facial thirds Proportions | Hairline estimate from 10 and 9; 9, 2, 152 | each segment ÷ total; hairline = glabella − 1.7 × (glabella − point 10) | 30–36 / 30–36 / 30–37 % |
| fWHR Proportions | 127–356 over lid line (159, 386) to upper lip (0) | width ÷ height | 1.80–2.10 typical |
| Midface ratio Proportions | Iris 468–473 over iris line to upper lip (0) | pupil span ÷ height | 0.95–1.15 typical |
| Golden ratios (5) Proportions | Face length ÷ width; 61–291 ÷ 48–278; 33–263 ÷ 61–291; 2–152 ÷ 14–152; iris line–152 ÷ 2–152 | each ratio vs φ = 1.618; match = 100 − |r − φ| ÷ φ × 100 | ≥ 90 % match per ratio |
| Face shape Shape | 21–251 (temples), 127–356, 172–397, 136–365, 9, 152 | length : width, jaw : face, lower-jaw : face, forehead : face and jaw angle scored against six shape profiles | best-fit shape with a % for each |
Landmark numbers are MediaPipe Face Landmarker indices. Photo-left means the left side of the image. The full source of these formulas is the same code that runs when you use a tool, so the table and the tool cannot drift apart.
Repeatability
Three AI-generated example faces were each measured five times: the original photo, tilted +1.5° and −1.5°, downscaled to 90 %, and darkened by 15 % (the original was also re-saved at JPEG quality 70). These are the kinds of differences you get by retaking a photo a few seconds later. For each reading the table shows the mean of the five runs and the spread (half the range between the highest and lowest run). Everything was measured with the exact code that runs on this site, in Chrome, on 12 September 2026.
| Reading | Face Amean · spread | Face Bmean · spread | Face Cmean · spread | Worst spread |
|---|---|---|---|---|
| Symmetry index0–100 | 94 · ±0.5 | 98 · ±0.5 | 96 · ±0.5 | ±0.5 |
| Chin offset% of face width | 1.2 · ±0.2 | 0.1 · ±0.1 | 0.5 · ±0.0 | ±0.2 |
| Canthal tiltdegrees | 7.6 · ±0.1 | 3.2 · ±0.4 | 9.3 · ±0.2 | ±0.4 |
| Jaw angledegrees | 110.6 · ±0.4 | 124.2 · ±0.3 | 106.8 · ±0.4 | ±0.4 |
| Jaw : face widthratio | 0.75 · ±0.01 | 0.85 · ±0.00 | 0.73 · ±0.00 | ±0.01 |
| fWHRratio | 1.99 · ±0.01 | 2.07 · ±0.01 | 2.05 · ±0.01 | ±0.01 |
| Midface ratioratio | 0.99 · ±0.01 | 0.98 · ±0.01 | 1.04 · ±0.01 | ±0.01 |
How to read it: a spread of ±1 on the symmetry index or ±0.3° on canthal tilt is smaller than any difference a person could see, so those readings are stable under retakes. The jaw angle moves the most of the seven, because the two jaw-corner landmarks sit on soft edges, but even that stayed within ±0.4° here; treat a jaw-angle difference under about 1° between two of your own photos as noise. Ratios that use face width (fWHR, jaw : face) barely move with scale or exposure because both numerator and denominator scale together. Lens distance is not part of this test and moves readings far more than anything here; take the same kind of photo each time.
What a photo cannot tell you
The app guides distance and angle, scores every reading against its band, marks bone versus trainable, and repeats the measurement on a schedule so change is measured, not remembered.
Questions about the method, corrections, or citation requests: [email protected]. Symmi is built by TidalAurum LLC.