Here’s what we actually measure.
We use Google’s MediaPipe Face Landmarker to locate facial points in your photo. Our own code then calculates simple, two-dimensional measurements. The model and its WebAssembly files are served from this site; your photo is processed in your browser.
These results describe one image. They do not measure attractiveness, health, age, ethnicity, personality or your value. We have not validated this tool as a diagnostic instrument or against a representative population.
From a photo to proportions
Photos must be JPG, PNG or WebP, up to 10 MB and 40 megapixels. We resize the working image to a maximum of 1,600 pixels on its longest side. The detector looks for up to two faces so we can reject group photos rather than silently pick someone.
All distances use pixel coordinates: x is multiplied by image width and y by image height. This avoids distorting results on rectangular images. The model outputs 478 points; only the subsets described below are used in the measurements.
| Measurement | Calculation |
|---|---|
| Length / width | Forehead–chin distance (points 10–152) ÷ cheekbone span (234–454). |
| Jaw ratio | Jaw span (172–397) ÷ cheekbone span. |
| Forehead ratio | Upper forehead span (103–332) ÷ cheekbone span. |
| Eye spacing | Inner eye gap (133–362) ÷ average eye width (33–133 and 263–362). |
| Mouth ratio | Mouth corner span (61–291) ÷ cheekbone span. |
| Golden ratio comparison | Absolute difference between length / width and 1.61803398875. |
| Eye tilt | Angle of inner-to-outer eye corners relative to the perpendicular of the forehead–chin axis. Positive means the outer corner appears higher. |
How we estimate a face shape
Our categories use simple descriptive heuristics, evaluated in this order. They are not a trained or validated shape classifier. People near a threshold may get a different category from another photo.
- Length / width ≥ 1.50: oblong.
- Otherwise, forehead / cheekbones ≥ 0.82 and jaw / cheekbones < 0.74: heart.
- Otherwise, forehead and jaw ratios both < 0.78: diamond.
- Otherwise, jaw / cheekbones ≥ 0.84: square.
- Otherwise, length / width < 1.25: round.
- Otherwise: oval.
The forehead landmark is not the hairline. The jaw span is a visible-photo proxy, not a bone measurement. Styling ideas are general suggestions attached to a category, not individually generated professional advice.
The photo symmetry index
We define a central axis between forehead point 10 and chin point 152. We reflect 12 pairs across that axis and average the distances between each reflected point and its partner. Pairs: 33/263, 133/362, 159/386, 145/374, 70/300, 105/334, 46/276, 98/327, 61/291, 172/397, 136/365 and 234/454.
Index = max(0, 100 × (1 − average mismatch / face width)).
The displayed mismatch percentage is 100 × average mismatch / face width. An index of 96 means an average mismatch of 4% of face width under this formula. It does not mean “96% attractive,” a population percentile, or that the tool is 96% accurate.
Quality checks and known limits
We reject missing faces, multiple faces, very small detected faces and obvious head rotation based on a coarse left–right nose-to-cheek distance comparison. That comparison cannot fully estimate 3D pose and can also be influenced by natural asymmetry. Moderate differences produce a warning. No single check guarantees a valid photograph.
Lens distortion, shadows, expression, facial hair, glasses, image edits and camera angle all affect the result. The underlying model can have uneven performance across people and conditions. Try another neutral, front-facing image if a landmark looks misplaced.
What happens to your photo
The analysis runs locally. No photo, landmarks or report are submitted to a server. We do not put them in cookies or browser storage. Clear the session or leave the page to release the tool’s references. Files you download and copies saved by your browser or operating system are under your control.
Technical reference
Google’s Face Landmarker documentation describes the landmark model and browser inference. MediaPipe is a dependency, not an endorsement of our classifications or formulas.
Try the free analyzer ↗