How every number
is made.
This page is the specification. If a value in a report can't be traced to a row here, that's a bug. Each report is stamped with this version and a SHA-256 fingerprint of its result.
1Pipeline
- 01Capture gatePose from the transformation matrix, distance from EXIF + IOD, expression from blendshapes, blur, exposure.
- 02478 landmarksMediaPipe Face Landmarker, CPU delegate, self-hosted. Rounded to 0.01 px. Nothing leaves the browser.
- 03LevelRotate so the interpupillary line is horizontal.
- 04MeasureRatios of distances and angles between named landmarks. No millimetres.
- 05Propagate σPer-landmark error → every distance, ratio and angle. Reported as ±1σ.
- 06Comparez and percentile against the population and norms you chose.
- 07SkinsRGB → CIE L*a*b*, regions from landmark hulls.
- 08MorphProcrustes-aligned canonical mesh, α-blend, piecewise-affine warp.
- 09WriteDeterministic templates keyed on the z-band. No language model.
Capture gate thresholds
Camera distance is estimated from two things: the inter-ocular distance in pixels, which is the pupil-to-pupil span, and the EXIF 35 mm-equivalent focal length. It assumes a population-mean IOD ≈ 62 mm. Below 70 cm we warn, citing Ward 2018 (≈30% nasal-base widening at 12″) and Derakhshan 2024 (12–19% midface stretch). Sharpness is the Laplacian variance of a 256 px face crop. Exposure is the fraction of face pixels that are clipped.
2Uncertainty
σ per landmark coordinate = 0.0396 × IOD px (Kartynnik 2019). Read σ as the spread on a single point: how far it is expected to sit from where it should be. Not every point is equally certain. Well-defined points (canthi, iris centres, lip midline, mouth corners, subnasale, nose tip, alar edges, lid margins) get 0.5σ. Nasion and sublabiale get 0.75σ. Silhouette points (zygion-ish, gonion-ish, menton, mesh top, brow) get the full σ.
σ(a / b) = (a / b) · √((σa / a)² + (σb / b)²)
σ(angle over baseline L) = σ · √2 / L
Why the intervals are the size they are
Each metric also has a floor (ci_floor) that reflects landmark-definition ambiguity: for canthal tilt it is ±3°. Ratios of paired facial measures are positively correlated, and the arithmetic above assumes independence instead. That makes the intervals conservative by construction, wider than they strictly need to be.
The published landmark error is not spread evenly. It is dominated by loosely-defined cheek and forehead vertices. That is what puts silhouette-based metrics (jaw, face width) in Tier B and canthal metrics in Tier A.
3Metric table
3bMeasurements from your other views
The table above is the front photograph. Everything below is measured from the extra views: the two ¾ shots, the two profiles, the smiling shot, the side view an ear is read from and the hair-back shot the hairline is read from. A value that cannot be traced to a row on this page is a bug.
They differ from the front metrics in kind. A ratio or a silhouette angle is a geometric fact about the photograph. A luminance read is a brightness difference between two patches of skin, and lighting direction moves it more than anatomy does. A detection is a shape found by a heuristic. It carries a confidence, and it refuses rather than guesses.
The one rule that decides which profile angles are here
A three-point angle can be taken from a photograph when its vertex and both arms sit on the visible outline. The angle between two chords does not change with scale, and it does not change with how the camera was rolled. So neither millimetres nor Frankfort horizontal is needed, and neither is used.
What does not cancel is yaw. A head turned off a true profile foreshortens the outline and opens every angle on it. These run only on a genuine profile, and every one of them carries that caveat.
An angle taken against a plane is a different object: the nasofacial angle against the facial plane, tip rotation against the vertical, anything in Frankfort horizontal (whose defining point, porion, sits inside the ear canal). A plane you cannot see is not recoverable from one uncalibrated photograph. Those stay on what we don't measure.
| Measurement | View | Kind | What is taken | Provenance |
|---|---|---|---|---|
| The angle at the root of the nose nasofrontal | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | glabella → the deepest point of the nasal root → the tip, all three found on the traced outline | Quoted ranges are from rhinoplasty planning literature on standardised lateral photographs (commonly 115–130° in men, 125–140° in women). Measured here between three points on the traced silhouette: glabella, the deepest point of the nasal root, and the tip. That needs no scale and no Frankfort horizontal, only a true profile. Not a nasofacial angle: that one is measured against the facial plane and stays refused. |
| The angle between nose and upper lip nasolabial | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | the columella → subnasale → the upper lip, on the traced outline | Rhinoplasty planning convention (roughly 90–105° in men, 95–110° in women, e.g. Naini, Facial Aesthetics 2011). Taken here off the silhouette between the columella, subnasale and the upper lip. Expression moves it: a raised or tensed upper lip changes it by several degrees, which is why it is banded. |
| The crease between lip and chin mentolabial | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | the lower lip → the crease beneath it → the chin point | Naini et al. 2017 (Maxillofac Plast Reconstr Surg) report a mean near 120° with a standard deviation of ±20.7° in males. That scatter is so wide that the honest use of it is a band, never a target. Measured here between the lower lip, the crease beneath it and the chin point, all on the traced outline. Facial hair changes the reading. |
| The angle under the chin cervicomental | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | chin point → the corner under the jaw → down the neck, with each arm fitted as a line so the smoothing that rounds the corner cannot open the angle | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| How straight the profile runs convexity | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | glabella → the base of the nose → the chin point, reported with which side of the brow-to-chin chord the nose base falls on; an unsigned angle cannot tell a convex profile from a concave one | The soft-tissue facial convexity angle (glabella–subnasale–pogonion), commonly quoted around 165–175° with the nose excluded. Orthodontic sources use the same three soft-tissue surface points; this is not the skeletal ANB angle, which needs a cephalogram, and no attempt is made to infer one. |
| The same line with the nose in it total_convexity | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | glabella → the tip of the nose → the chin point | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| How far the nose projects tip_projection | profile | ratio a ratio of two distances in the same photograph, so camera distance cancels | the tip's perpendicular distance from the root→base line, over the length of that line. Not Goode's ratio, which measures from the alar crease: a point a silhouette does not contain | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| The line of the nose, traced dorsal_peak | profile | ratio a ratio of two distances in the same photograph, so camera distance cancels | the largest signed departure of the traced dorsum from a straight line between its ends, as a percentage of that line | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Laryngeal prominence laryngeal | profile | ratio a ratio of two distances in the same photograph, so camera distance cancels | the forward bow of the neck line below the cervical point, over the length of the neck traced | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Chin-to-lip direction chin_lip | profile | ratio a ratio of two distances in the same photograph, so camera distance cancels | the lower lip's signed offset from the nose-tip→chin line, as a share of that line. The photographic equivalent of the Ricketts E-line, whose own norms are in millimetres | Internal, and deliberately coarse: a direction (behind / level / ahead), never a distance. The clinical construct people expect here is the Ricketts E-line, whose norms are in millimetres (upper lip −4 ± 2 mm) and which requires a calibrated lateral in Frankfort horizontal. This is its photographic equivalent, and says so. |
| Forehead slope forehead_slope | profile | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | the mesh top (≈ the hairline) through nasion, in degrees from vertical. Hairline recession moves the upper point, and the read says so | Internal, descriptive. Measured on the soft-tissue silhouette from the mesh top (roughly the hairline) through the nasion, so hairstyle and hairline recession move it. Not a cephalometric measurement. |
| Jaw definition jaw_definition | ¾ | luminance a brightness difference between two patches of skin; lighting direction moves it more than anatomy does | the |ΔL*| step across the soft-tissue jaw silhouette, as a percentage of face L* | No published photographic norm exists for a soft-tissue jaw-shadow gradient. Internal thresholds, set so the buckets separate visibly different photographs. Lighting direction moves this more than anatomy does: a window on one side will manufacture a "defined" jaw on that side alone. |
| Jaw taper jaw_taper | ¾ | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | the angle of the visible soft-tissue jaw silhouette from the jaw-angle region to the chin, against the horizontal after levelling to the pupils. Not a gonial angle | Internal, descriptive. This is the angle of the visible SOFT-TISSUE jaw silhouette from the jaw-angle region to the chin, measured against the horizontal after levelling to your pupils. It is NOT a gonial angle: gonion is a point on the mandibular bone, hidden under masseter and fat, and is not recoverable from a photograph (see /what-we-dont-measure). |
| Under-chin separation submental | ¾ | luminance a brightness difference between two patches of skin; lighting direction moves it more than anatomy does | ΔL* from the chin to the patch under it. A shading read, not an angle | Internal. Submental fullness is graded clinically on a 5-point rating scale by a trained observer from a standardised 45° photograph (Jones et al. 2016); we do not attempt that scale and do not report a grade on it. |
| Cheekbone shading malar_shading | ¾ | luminance a brightness difference between two patches of skin; lighting direction moves it more than anatomy does | mid-cheek L* minus lower-cheek L* | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Where the cheekbone sits cheekbone_height | ¾ | ratio a ratio of two distances in the same photograph, so camera distance cancels | the row at which the head's outline is widest, as a fraction of the brow-to-chin distance: the height half of “high cheekbones”, which the shading read does not carry | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Nasal dorsum shape nasal_dorsum | ¾ / profile | ratio a ratio of two distances in the same photograph, so camera distance cancels | the signed mean deviation of the mid-dorsum from the nasion→tip chord, as a percentage of the chord | Internal, descriptive shape only. Not a nasofrontal, nasofacial or nasolabial angle: those are cephalometric measurements needing a calibrated lateral in Frankfort horizontal, and this is their photographic equivalent. |
| Neckline grooming neckline | ¾ / profile | texture a density of dark broken texture, compared between two regions | dark broken-texture density on the neck, over the same density on the chin | Internal. A texture-density ratio, not a hair count: it asks whether the same kind of dark broken texture that is on your chin also continues below the jaw line. |
| Ear height against nasal length ear_nose_ratio | side | detection a shape found by a heuristic, carrying a confidence, which refuses rather than guesses | the detected ear's height over the nasion→nose-base distance, with a confidence | Farkas, Anthropometry of the Head and Face (2nd ed., 1994): the neoclassical canon that ear length ≈ nasal length. It is a canon, not a measured population distribution, and Farkas' own samples failed most canons; we use it only as a ±15% sanity band on a heuristic detection. |
| Where the ear starts ear_set | side | detection a shape found by a heuristic, carrying a confidence, which refuses rather than guesses | the ear top against the brow line, in brow-to-nose-base units | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Where the ear ends ear_bottom | side | detection a shape found by a heuristic, carrying a confidence, which refuses rather than guesses | the ear bottom against the nose base, in the same units | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| How far the ear stands off ear_standoff | side | detection a shape found by a heuristic, carrying a confidence, which refuses rather than guesses | the gap between the ear's medial edge and the head outline, over the ear's own width. Not an auriculocephalic angle, which needs a view from above | Otoplasty literature: prominence is the only ear trait with a measurable effect on how faces are rated, and correcting it moves ratings; ear size and shape on their own do not. The clinical definition (auriculocephalic angle above ~30–40°, helix-to-mastoid distance above ~20 mm) needs a top-down view and millimetres, neither of which a frontal photo can give. The thresholds here are internal, from the width of ear visible beyond the face silhouette. |
| The tilt of the ear ear_tilt | side | silhouette angle an angle between two chords of the visible outline: invariant to scale and camera roll | the ear's principal axis against the nasion→tip chord: two chords of one photograph | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Ear protrusion, from the front ear_prominence | front | detection a shape found by a heuristic, carrying a confidence, which refuses rather than guesses | the width of ear visible beyond the face outline, as a percentage of bizygomatic width, per side, with an explicit unreadable and a weak-read path | Otoplasty literature: prominence is the only ear trait with a measurable effect on how faces are rated, and correcting it moves ratings; ear size and shape on their own do not. The clinical definition (auriculocephalic angle above ~30–40°, helix-to-mastoid distance above ~20 mm) needs a top-down view and millimetres, neither of which a frontal photo can give. The thresholds here are internal, from the width of ear visible beyond the face silhouette. |
| Smile width smile_width | smiling | ratio a ratio of two distances in the same photograph, so camera distance cancels | mouth width smiling over mouth width at rest | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Corner lift commissure_lift | smiling | ratio a ratio of two distances in the same photograph, so camera distance cancels | how far the mouth corners rise, against the inter-pupil distance | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Smile symmetry smile_symmetry | smiling | ratio a ratio of two distances in the same photograph, so camera distance cancels | left against right corner rise; dropped entirely above 15° of turn, because a turned head manufactures asymmetry | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Whether the smile reaches the eyes eye_narrowing | smiling | ratio a ratio of two distances in the same photograph, so camera distance cancels | eye-aperture narrowing between the neutral and smiling photographs (the Duchenne marker) | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Tooth show tooth_show | smiling | pixel a pixel measurement inside a landmark-bounded region | the share of the lip aperture filled by tooth | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Tooth shade tooth_shade | smiling | pixel a pixel measurement inside a landmark-bounded region | tooth L* referenced to the subject's own sclera in the same photograph, so no calibrated white is claimed | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
| Gum display gum_show | smiling | pixel a pixel measurement inside a landmark-bounded region | the pink band above the teeth as a share of the mouth opening | Kokich, Kiyak & Shapiro 1999 (J Esthet Dent): laypeople begin to notice gingival display at roughly 4 mm. A photo cannot give millimetres, so the pink band above the teeth is expressed as a share of the mouth opening and bucketed. The 15% cut is ours. |
| Buccal corridors buccal_corridors | smiling | pixel a pixel measurement inside a landmark-bounded region | the dark corner areas as a share of the inner-mouth width | Moore, Harkness et al. 2005 (Am J Orthod Dentofacial Orthop): smiles with smaller buccal corridors were rated more attractive; their corridor ratios ran roughly 2–28%. Their measure is taken on standardised frontal smile photographs of the dentition. Ours is a dark-pixel proportion at the corners of the lip aperture, so the thresholds are ours, not theirs. |
| Smile arc smile_arc | smiling | pixel a pixel measurement inside a landmark-bounded region | the curvature of the tooth mask against the curvature of the lower lip; bucketed only, no numeric norm exists | Sarver 2001 (Am J Orthod Dentofacial Orthop) described the consonant smile arc: upper incisal edges following the curve of the lower lip. It is a qualitative construct with no numeric norm, so this is bucketed only, from the curvature of the detected tooth mask against the curvature of your lower lip. |
| The shape of the hairline hairline_shape | hair-back | pixel a pixel measurement inside a landmark-bounded region | twenty-three columns walked up from above the brows to the edge of the hair, giving recession, centre peak and left-right asymmetry in brow-to-chin units. Refused outright when hair covers the forehead | Internal, descriptive. No published photographic norm exists for this measure, so it is bucketed on internal thresholds and says so in the report. |
4Norm provenance
Reference means and SDs are transcribed from the young-adult tables of Farkas et al. (1994; 2005 international study, 1,470 subjects, 25 groups), Jayaratne et al. 2012 (Southern Chinese, n=103, 3D), Al-Sebaei 2015 (Saudi, n=168), and metric-specific sources listed per page. Those two numbers, the average for the group and the usual spread around it, are what a z-score is made from: a z of 1 means one standard deviation above the group average.
Values shown with prov. have not yet been audited line-by-line against the primary printed tables. They are close, cited, and marked. The base table lives in scripts/gen-metrics.mjs.
How the pooled population is built
Ratios are derived from a single base table of linear measures, so every derived value is internally consistent. The pooled population is an unweighted average across the six groups, with the spread between groups folded into its SD. It is wide by construction.
5Why "ideal ranges" are not shown
Sources and what we do instead
Farkas 1985; Jayaratne 2012; Al-Sebaei 2015 (92% of Saudi men have a nose wider than ICD); Khoshab 2022 (PRISMA review of 27 studies across six ethnic categories: no ethnic/gender group consistently approximates the canons or the golden ratio). Canthion reports each canon as a descriptive check and prints its conformity statistic beside it. It is never used as a target.
6Skin
The face is cropped at 512 px and converted from sRGB to approximate CIE L*a*b* (D65), a colour space that separates lightness (L*) from the red-green axis (a*) and the yellow-blue axis (b*). Regions come from convex hulls of landmark groups, shrunk 15–20% to avoid edges.
Definitions
- Redness = cheek/nose a* − forehead a*
- Under-eye = infraorbital L* − mid-cheek L*
- Texture = mean local σ of L* in 5×5 windows
- Spots = connected components on a*/L* thresholds, size 6–300 px, aspect < 2.5
- Uniformity = σ of regional mean L*
- Shine = fraction of T-zone with L* > 92 and chroma < 12
Erythema, the redness read, is flagged unreliable when mean cheek L* < 45, because at that lightness melanin dominates a*. All values are relative to this photo's lighting.
7Morph
MediaPipe's canonical face mesh is aligned to the user's 468 points by similarity Procrustes, which matches position, rotation and scale but leaves shape alone. The blend is target = user + α·(canonical − user), warped piecewise-affine over the official 898-triangle tesselation plus a border ring. α is user-controlled, default 0.25, and labelled literally. What the face moves towards is a symmetric generic face. It is not a population mean.
8Protocol grading
Protocol items are drawn from a fixed library, by deterministic triggers on the findings. Four of them reach grade A: daily broad-spectrum sunscreen (Hughes 2013, N=903, 4.5-year RCT), topical tretinoin (Weiss 1988 and successors), sun avoidance and physical shade, and the two things that keep teeth white. Mewing is included at grade D so the report says, in writing, why it is not recommended.
Full library (21 items)
- A Daily broad-spectrum sunscreen · source
- A Topical retinoid (tretinoin), evening · source
- B Body composition and facial adiposity · source
- B Sleep · source
- B Camera distance, height and lens (for photos of you) · source
- A Sun avoidance and physical shade · source
- C Brow grooming and hair framing
- C Facial exercise · source
- D Mewing / orthotropics (not recommended) · source
- D Chewing gum 'for jawline' (not recommended as a strategy)
- B Antioxidant / niacinamide serum (morning, under sunscreen)
- B Barrier-repair moisturiser
- B In-clinic options for texture and pigmentation (chemical peels, laser resurfacing, microneedling)
- C In-clinic options for the under-eye (tear-trough filler, lower blepharoplasty)
- info About surgical and injectable recommendations in general · source
- A The two things that actually keep teeth white
- B Peroxide whitening (strips, trays, dentist-supervised gel)
- B In-clinic options for tooth colour, shape and alignment
- B Cosmetics, the one grooming lever with rating trials behind it · source
- info What makeup does to the measurements on this page
- B The under-eye, and why it is the first region on a female face
9Determinism
CPU inference is bit-stable on the same device. Landmarks are rounded to 0.01 px, and all downstream math is closed-form. Each report shows a SHA-256 fingerprint of the numeric result, and "Re-run" re-detects from scratch and compares the two. Across devices, last-decimal differences are possible: the fingerprint is a same-device guarantee.
10Known limits
- Limit 01Vertices, not landmarksMesh vertices are not anthropometric landmarks. "Zygion" and "gonion" here are points on a silhouette, and are labelled that way.
- Limit 02A known bias, corrected where it can beMeasuring from a 2D photograph carries a systematic bias against calipers (~9.3 mm bigonial, ~3.3 mm bizygomatic; Lim 2022). Where a mesh vertex sat off the anthropometric landmark it stood for, the vertex was changed (alare is the wing's own edge, not the cheek crease; the philtrum starts where the columella meets the lip; the gonion is the jaw angle; the brow apex is a fitted peak, not the nearest vertex). No reference mean is shifted to compensate for what is left: a shift was tried for two ratios and withdrawn, because the calibration set behind it was generated faces and the stored reports from real photographs disagreed with it — a correction only as good as its sample is not a correction. What remains repeats well, but it repeats the residual bias too.
- Limit 03Depth inflates at selfie distanceFeatures that span depth (nose width against ICD, the midface) are inflated 12–30% at selfie distance. We estimate the distance and warn. We cannot correct it.
- Limit 04Phone processing is invisibleComputational photography (skin smoothing, face-slimming, HDR) is undetectable in general and corrupts skin metrics first.
- Limit 05Norms are samplesPopulation norms are the means of specific samples, not of "populations". You choose which label your numbers are compared against.
- Limit 06Taste is personalNothing here predicts what any specific person will find attractive. About 40% of that variance is idiosyncratic to whoever is doing the looking (Leder 2016; Germine 2015).
11Changelog
- 2026.08-r1initial public methodology. 18 geometric metrics from the front photograph, 6 skin metrics, 34 more from the extra views (§3b), 11 bone-level measurements taken as photographic equivalents, 21 protocol items. Norm tables marked provisional pending audit.
- 2026.09-r1landmark corrections from a calibration set of twelve frontal photographs: alare taken at the wing's edge (64/294) rather than the cheek crease, the philtrum measured from the columella–lip junction, the gonion as the jaw angle, the brow apex as a fitted peak; leanness & definition read on its own reference distribution; the headline percentile read against the distribution of the overall over a simulated population (82.4 ± 5.5) rather than off the single-proportion curve; the harmony reference generalised to any number of proportions (80.1 ± 13.1/√n).
- Plannedline-by-line audit of norm tables against Farkas 2005 Table 2 and Farkas 1994; per-population mean shapes for the morph from a consented dataset; controlled-capture longitudinal mode; TrueDepth/WebXR metric capture to unlock profile metrics.