Face measurement dataset
Four files carry the statistics shown on the face measurement statistics page: percentiles of each measurement from 102 adult faces, the face, eye, lip and nose type rules, every classification threshold and the dated change history. Free to download and reuse under CC BY 4.0. No file contains a photo or a per-face value.
Files
| File | Contents | Address |
|---|---|---|
reference-set.json | Percentiles of every measurement (all, women, men), all classification thresholds, the score formula, validity results against 2,513 raters, method notes, citation and license. | https://thefaceanalysis.com/data/reference-set.json |
types.json | The face, eye, lip and nose types: name, page, definition, measurement rule and count in the reference set. | https://thefaceanalysis.com/data/types.json |
face-measurements.csv | The percentiles in reference-set.json as a flat table: one row per measure and group, 21 rows. | https://thefaceanalysis.com/data/face-measurements.csv |
changelog.json | Every change to a threshold, formula or reference value: date, before and after, how many reference faces it affected. | https://thefaceanalysis.com/data/changelog.json |
All four are static, served with CORS open (Access-Control-Allow-Origin: *) and cached for an hour, so a browser app can fetch them directly. The same files ship in the npm package thefaceanalysis-data.
CSV columns
| Column | Values |
|---|---|
measure | composite, symmetry, golden, fwhr, midface, pd, tilt |
unit | points (0-100), percent, ratio, mm, degrees |
group | all, female, male |
n | Faces in the group (102, 49 or 53) |
p10, p25, median, p75, p90 | Percentiles |
min, max | Smallest and largest value |
One row per measure and group: seven measures and three groups make 21 rows.
reference-set.json structure
| Key | Contains |
|---|---|
measurements | Percentiles keyed measure → group. The CSV is this block flattened. |
thresholds | Every cut-off the detectors use: face shape rules, eye, lip and nose thresholds, the pupillary distance model. |
score | How the composite and the 1-10 score are built, with weights. |
validity | Spearman correlations between the measurements and 2,513 raters' attractiveness ratings, with 95% confidence intervals. |
sample | How many faces: 102 in total, 49 women and 53 men. |
methodology | The method page, when the method last changed and the revision count. |
license, citeAs, source | License, citation text and the source photo set. |
Examples
Median fWHR across all 102 faces is 1.78. These four snippets all read it.
curl -s https://thefaceanalysis.com/data/reference-set.json | jq '.measurements.fwhr.all.median'
# 1.78import { referenceSet, median } from "thefaceanalysis-data";
median("fwhr"); // 1.78
median("midface", "male"); // 1.06
referenceSet.citeAs; // citation textimport pandas as pd
df = pd.read_csv("https://thefaceanalysis.com/data/face-measurements.csv")
df[(df.measure == "fwhr") & (df.group == "all")][["median", "p10", "p90"]]df <- read.csv("https://thefaceanalysis.com/data/face-measurements.csv")
subset(df, measure == "fwhr" & group == "all")License and citation
The aggregate numbers are licensed CC BY 4.0. Cite The Face Analysis, link the statistics page and credit the photo set.
The Face Analysis (2026). Face Measurement Statistics 2026: 102 faces measured with MediaPipe. Updated 6 October 2026. https://thefaceanalysis.com/face-measurement-statisticsDeBruine, L. & Jones, B. (2017). Face Research Lab London Set. figshare. doi:10.6084/m9.figshare.5047666.v5 (CC BY 4.0).Limits
The photos are 102 adults photographed under the same conditions in London in April 2012. The numbers describe those faces, not a population. Face type splits show how the detectors divide these faces, not how common a type is, and no accuracy figure is claimed for any label. A different photo of the same person can move a borderline reading. Read the methodology before quoting a number as a norm.
Versions
The files change only when the measurement code or the reference data changes, and every such change is dated in the changelog. The npm package version follows: a changed threshold or number is a new version, so a pinned dependency never shifts under you. Current package version: 0.1.0.