Magesh Ravi
Artist | Techie | Entrepreneur

Update: This article may not be relevant anymore. See the W3C recommendation for font-sizes for HTML5.
Font sizes for heading h1 to h6 are usually defined by browsers (user agent stylesheet). For consistency purposes, it is often a good practice to reset browser specific CSS and define the values again. Are these values defined arbitrarily? Not really. Here is a simple way to calculate font size for heading tags h1 to h6.
In most cases, the heading h4 is given the base value 16px.
The font-size is a function of base and step values.
font_size = base * 2^(step/5)
For h4,
base = 16;
step = 0;
font_size = 16 * 2^(0/5); // 16px
For h3,
base = 16;
step = +1;
font_size = 16 * 2^(1/5); // 18.38px
Calculated font sizes in px
| Style | Step | Font size (px) | 
|---|---|---|
| h1 | 3 | 24.25 | 
| h2 | 2 | 21.11 | 
| h3 | 1 | 18.38 | 
| h4 | 0 | 16 | 
| h5 | -1 | 13.93 | 
| h6 | -2 | 12.13 | 
Calculated font sizes in em
| Style | Step | Font size (em) | 
|---|---|---|
| h1 | 3 | 1.52 | 
| h2 | 2 | 1.32 | 
| h3 | 1 | 1.15 | 
| h4 | 0 | 1 | 
| h5 | -1 | 0.87 | 
| h6 | -2 | 0.76 |