Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The initial-letter CSS property sets styling for dropped, raised, and sunken initial letters.

/* Keyword values */
initial-letter: normal;

/* Numeric values */
initial-letter: 1.5; /* Initial letter occupies 1.5 lines */
initial-letter: 3; /* Initial letter occupies 3 lines */
initial-letter: 3 2; /* Initial letter occupies 3 lines and
                           sinks 2 lines */

/* Global values */
initial-letter: inherit;
initial-letter: initial;
initial-letter: revert;
initial-letter: revert-layer;
initial-letter: unset;


The keyword value normal, or a <number> optionally followed by an <integer>.



No special initial-letter effect. Text behaves as normal.


Defines the size of the initial letter, in terms of how many lines it occupies. Negative values are not allowed.


Defines the number of lines the initial letter should sink when the size of it is given. Values must be greater than zero. If omitted, it duplicates the size value, floored to the nearest positive whole number.

Formal definition

Initial valuenormal
Applies to::first-letter pseudo-elements and inline-level first child of a block container
Computed valueas specified
Animation typediscrete

Formal syntax

initial-letter = 
normal |
<number [1,∞]> <integer [1,∞]> |
<number [1,∞]> && [ drop | raise ]?


Setting initial letter size


<p class="normal">Initial letter is normal</p>
<p class="onefive">Initial letter occupies 1.5 lines</p>
<p class="three">Initial letter occupies 3 lines</p>


.normal::first-letter {
  -webkit-initial-letter: normal;
  initial-letter: normal;

.onefive::first-letter {
  -webkit-initial-letter: 1.5;
  initial-letter: 1.5;

.three::first-letter {
  -webkit-initial-letter: 3;
  initial-letter: 3;



CSS Inline Layout Module Level 3
# sizing-drop-initials

Browser compatibility

BCD tables only load in the browser

See also