How the hair type test works
The hair type test is a small image model that runs in your browser. It looks at a close-up of your hair and returns one of 12 types, from 1A to 4C, plus a check that the photo shows enough natural hair to judge. Here is how it was built and how well it works.
What the model looks at
The model sees a square, 280 by 280 pixel version of your photo. From that it reads the shape of the strands: whether they bend, how wide the waves or curls are, how tightly they pack and whether the pattern is round or zigzag. It does not look for a face and does not use skin tone.
A second output asks a simpler question: can the curl pattern be judged at all? Photos of braids, buns, wigs, straightened or very short hair, or blurry shots, score low. Then the test asks for another photo instead of guessing.
Why a close-up works better than a selfie
The subtypes differ mostly by curl size. 3A curls are about as wide as sidewalk chalk and 3C curls about as wide as a pencil. In a photo of the whole head, both shrink to a few pixels and look the same. A close-up from 10 to 20 cm keeps that detail, and a finger in the frame gives the model a sense of scale.
How it was trained
We started from DINOv2-small, an open image model from Meta released under the Apache 2.0 license, and trained it further on hair. The training set has about 7,000 images: photos from public hair image collections and close-up crops of the hair lengths cut from them, so the model learns from the same kind of picture you take.
Every image was labeled twice, independently, with the other label hidden, using the Andre Walker chart. Where the two labels agreed, that became the answer. Where they were one subtype apart, a third look broke the tie, and the model learned those cases as half one type and half the other. That is the honest picture: those photos really do sit between two types.
How accurate it is
We kept a set of photos aside that the model never saw in training, and split it by original photo so no close-up of a test photo could leak into training. On the 142 close-ups in that set, the kind of photo the app gets, the results were:
| What we checked | Close-ups | All test photos |
|---|---|---|
| Main type right (straight, wavy, curly or coily) | 86% | 90% |
| Within one subtype | 95% | 97% |
| Exact subtype | 68% | 74% |
| Photo correctly judged as usable or not | 82 to 85% | |
The scores are against labels both labeling passes agreed on. With 142 close-ups, each number could be off by several points either way, and we will update them as we test on more photos.
Where it still makes mistakes
- Rare types. 1C, 3C, 4A and 4B had the fewest training photos, and the model is least sure on them.
- Neighbors. Most mistakes are one subtype off, like 2C instead of 3A. That is why the result shows the runner-up when you are between two.
- Styled hair. Gel, straightening, braid-outs and fresh brushing change the pattern the model sees. Test on natural, air-dried hair.
- Scale. Without anything of known size in the frame, a small curl shot very close can look like a bigger one.
How it runs in your browser
The model is about 25 MB. Your browser downloads it once from our server and runs it with onnxruntime-web, an open source library from Microsoft. A test takes about half a second on a recent laptop and a little longer on older phones. Your photo is never uploaded. See the privacy policy.
Ready to try it? Take a close-up and run the hair type test.
Not sure which type you are? Take one close-up of your hair and the free hair type test tells you in seconds.
Check my hair type