Most haircut advice starts with "know your face shape", and then skips the part where you actually find it out. Holding a phone up to a mirror and squinting at the outline of your face rarely settles it. You end up somewhere between "oval" and "round" and pick whichever sounds nicer.
This post walks through a more repeatable way: four measurements, a few rules of thumb for seven common shapes, and the places where a selfie-based estimate goes wrong. At the end there is a small JavaScript function that turns the four numbers into a guess, in case you want to play with the rules yourself.
The four measurements
You can take these with a soft tape measure, or on a straight-on photo with any image editor that shows pixel coordinates. Pixels are fine: only the ratios matter, so you never need to convert to centimeters.
- Forehead width. Measure across the widest part of the forehead, roughly halfway between the eyebrows and the hairline, from one temple to the other.
- Cheekbone width. Find the highest point of each cheekbone (usually just below the outer corner of the eye) and measure straight across.
- Jaw width. Measure from one jaw angle to the other. The jaw angle is the corner below each ear where the jaw turns forward toward the chin.
- Face length. Measure from the center of the hairline down to the tip of the chin.
Write all four down. If you are working on a photo, mark the points first and then measure, so you are not tempted to nudge a line toward the answer you expect.
Seven shapes and how to tell them apart
These are rules of thumb used in hair and styling guides, not anatomical categories. Real faces sit on a continuum, and a lot of people land between two shapes.
- Oval. The face is clearly longer than it is wide (often described as about one and a half times). Cheekbones are the widest line, the forehead is slightly wider than the jaw, and the jaw is rounded rather than angular.
- Round. Length and width are close to equal. Cheekbones are the widest point, and the jawline is soft with no visible corner.
- Square. Length and width are also close, but forehead, cheekbones and jaw are all about the same width, and the jaw has a sharp, visible angle.
- Oblong (rectangle). The face is noticeably long, and the three widths are similar to each other. Think of a square that has been stretched vertically.
- Heart. The forehead is the widest part, and the face narrows steadily to a narrow, sometimes pointed chin.
- Diamond. Cheekbones are clearly wider than both the forehead and the jaw, which are narrower and similar to each other. The chin is often pointed.
- Triangle (pear). The jaw is the widest line and the forehead is the narrowest, the reverse of a heart.
Two checks do most of the work. First, which of the three widths is the largest? That alone separates heart, diamond and triangle from the rest. Second, how long is the face compared with its widest line? That separates round and square from oval and oblong.
Round versus square is the one pair the numbers cannot decide. Both have similar length and width. The difference is the jaw corner, so you have to look at it: a defined angle below the ear points to square, a smooth curve points to round.
A small function to try the rules
Here is the logic above as code. The thresholds (5%, 10%, 1.2, 1.4) are my own picks to make the rules concrete. They are not from a study, so treat them as knobs to adjust.
// Rough rules of thumb, not a validated model.
// All four widths/lengths must use the same unit (cm or pixels).
function guessFaceShape({ forehead, cheekbones, jaw, length, angularJaw }) {
const width = Math.max(forehead, cheekbones, jaw);
const ratio = length / width; // how long vs. how wide
const near = (a, b) => Math.abs(a - b) / Math.max(a, b) <= 0.05;
if (jaw > cheekbones && jaw > forehead) return "triangle";
if (forehead >= cheekbones && forehead > jaw * 1.1) return "heart";
if (cheekbones > forehead * 1.1 && cheekbones > jaw * 1.1) return "diamond";
const even = near(forehead, cheekbones) && near(cheekbones, jaw);
if (ratio >= 1.4) return even ? "oblong" : "oval";
if (ratio <= 1.2) return angularJaw ? "square" : "round";
return "oval";
}
guessFaceShape({ forehead: 13, cheekbones: 14, jaw: 12, length: 19, angularJaw: false });
// -> "oval"
If you run your own numbers and the answer flips when you change one measurement by a few millimeters, that is useful information: you are close to a boundary, and both shapes are worth reading about.
Why selfie estimates go wrong
Whether you measure by hand or let a tool do it, the input photo is usually the weakest link. The common error sources:
- Lens distortion. Phone front cameras are wide-angle. Held close, they enlarge the middle of the face and shrink the sides, so cheekbones and jaw look narrower than they are. Hold the phone at arm's length or farther, or have someone take the photo from a distance.
- Head tilt and rotation. Tipping the chin up or down changes the apparent face length. Turning even slightly to one side narrows the far half of the face. Look straight into the lens with your head level.
- Hairline. Bangs, a receding hairline or hair pulled forward make the top of the face a guess, which affects both face length and forehead width. Pull hair back for the photo.
- Hair and beards over the edges. Hair falling over the cheeks or a full beard along the jaw hides exactly the lines you need to measure.
- Expression. A wide smile pushes the cheeks out; an open mouth adds length. Use a neutral face with the mouth closed.
- Inconsistent points. "The widest part of the forehead" is a judgment call. Measure twice on separate photos and see if you get the same answer.
- Borderline faces. Many faces genuinely fall between two shapes. A single label hides that, so treat the result as "mostly X, a bit of Y" and read the advice for both.
Turning the result into a haircut
The usual principle behind face-shape advice is balance: add volume where the face is narrow and keep it away from where the face is widest.
- Round: height on top and length below the chin; avoid volume at cheek level.
- Square: soft layers or waves around the jaw to take the edge off the corners.
- Oblong: bangs and width at the sides to shorten the overall line.
- Heart: volume around the chin and side-swept bangs to balance a wider forehead.
- Diamond: fringe to widen the forehead, fullness near the jaw.
- Triangle: volume at the crown and temples to balance a wider jaw.
- Oval: most cuts work; choose by hair texture and upkeep.
If you would rather not mark points by hand, I built HairTryOn, a free face shape detector that runs in the browser: it estimates your face shape from a selfie and shows haircuts that tend to suit it. The photo is processed on your device and not uploaded. It is subject to every error source in the list above, so a well-lit, straight-on photo still matters.
Whichever way you measure, take the result as a starting point for a conversation with your hairdresser, not a rule.
Top comments (0)