The text-transform
CSS property specifies how to capitalize an element’s text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby.
Try it
The text-transform
property takes into account language-specific case mapping rules such as the following:
- In Turkic languages, like Turkish (
tr
), Azerbaijani (az
), Crimean Tatar (crh
), Volga Tatar (tt
), and Bashkir (ba
), there are two kinds ofi
, with and without the dot, and two case pairings:i
/İ
andı
/I
. - In German (
de
), theß
becomesSS
in uppercase. - In Dutch (
nl
), theij
digraph becomesIJ
, even withtext-transform: capitalize
, which only puts the first letter of a word in uppercase. - In Greek (
el
), vowels lose their accent when the whole word is in uppercase (ά
/Α
), except for the disjunctive eta (ή
/Ή
). Also, diphthongs with an accent on the first vowel lose the accent and gain a diaeresis on the second vowel (άι
/ΑΪ
). - In Greek (
el
), the lowercase sigma character has two forms:σ
andς
.ς
is used only when sigma terminates a word. When applyingtext-transform: lowercase
to an uppercase sigma (Σ
), the browser needs to choose the right lowercase form based on context. - in Irish (
ga
), certain prefixed letters remain in lowercase when the base initial is capitalized, so for exampletext-transform: uppercase
will changear aon tslí
toAR AON tSLÍ
and not, as one might expect,AR AON TSLÍ
(Firefox only). In some cases, a hyphen is also removed upon uppercasing:an t-uisce
transforms toAN tUISCE
(and the hyphen is correctly reinserted bytext-transform: lowercase
).
The language is defined by the lang
HTML attribute or the xml:lang
XML attribute.
Note: Support for language-specific cases varies between browsers, so check the browser compatibility table.
Syntax
/* Keyword values */
text-transform: none;
text-transform: capitalize;
text-transform: uppercase;
text-transform: lowercase;
text-transform: full-width;
text-transform: full-size-kana;
/* Global values */
text-transform: inherit;
text-transform: initial;
text-transform: revert;
text-transform: revert-layer;
text-transform: unset;
capitalize
-
Is a keyword that converts the first letter of each word to uppercase. Other characters remain unchanged (they retain their original case as written in the element’s text). A letter is defined as a character that is part of Unicode’s Letter or Number general categories
Experimental
; thus, any punctuation marks or symbols at the beginning of a word are ignored.Note: Authors should not expect
capitalize
to follow language-specific title casing conventions (such as skipping articles in English).Note: The
capitalize
keyword was under-specified in CSS 1 and CSS 2.1. This resulted in differences between browsers in the way the first letter was calculated (Firefox considered-
and_
as letters, but other browsers did not. Both Webkit and Gecko incorrectly considered letter-based symbols likeⓐ
to be real letters.) By precisely defining the correct behavior, CSS Text Level 3 cleans this mess up. Thecapitalize
line in the browser compatibility table contains the version the different engines started to support this now precisely-defined behavior. uppercase
-
Is a keyword that converts all characters to uppercase.
lowercase
-
Is a keyword that converts all characters to lowercase.
none
-
Is a keyword that prevents the case of all characters from being changed.
full-width
-
Is a keyword that forces the writing of a character — mainly ideograms and Latin scripts — inside a square, allowing them to be aligned in the usual East Asian scripts (like Chinese or Japanese).
full-size-kana
-
Generally used for
<ruby>
annotation text, the keyword converts all small Kana characters to the equivalent full-size Kana, to compensate for legibility issues at the small font sizes typically used in ruby.
Accessibility concerns
Large sections of text set with a text-transform
value of uppercase
may be difficult for people with cognitive concerns such as Dyslexia to read.
- MDN Understanding WCAG, Guideline 1.4 explanations
- W3C Understanding WCAG 2.1
Formal definition
Initial value | none |
---|---|
Applies to | all elements. It also applies to ::first-letter and ::first-line . |
Inherited | yes |
Computed value | as specified |
Animation type | discrete |
Formal syntax
text-transform =
none |
[ capitalize | uppercase | lowercase ] || full-width || full-size-kana |
math-auto |
math-bold |
math-italic |
math-bold-italic |
math-double-struck |
math-bold-fraktur |
math-script |
math-bold-script |
math-fraktur |
math-sans-serif |
math-bold-sans-serif |
math-sans-serif-italic |
math-sans-serif-bold-italic |
math-monospace |
math-initial |
math-tailed |
math-looped |
math-stretched
Examples
Example using «none»
<p>
Initial String
<strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</strong>
</p>
<p>
text-transform: none
<strong
><span
>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</span
></strong
>
</p>
span {
text-transform: none;
}
strong {
float: right;
}
This demonstrates no text transformation.
Example using «capitalize» (general)
<p>
Initial String
<strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</strong>
</p>
<p>
text-transform: capitalize
<strong
><span
>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</span
></strong
>
</p>
span {
text-transform: capitalize;
}
strong {
float: right;
}
This demonstrates text capitalization.
Example using «capitalize» (punctuation)
<p>
Initial String
<strong
>(this) "is" [a] –short– -test- «for» *the* _css_ ¿capitalize?
?¡transform!</strong
>
</p>
<p>
text-transform: capitalize
<strong
><span
>(this) "is" [a] –short– -test- «for» *the* _css_ ¿capitalize?
?¡transform!</span
></strong
>
</p>
span {
text-transform: capitalize;
}
strong {
float: right;
}
This demonstrates how initial punctuations of a word are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
Example using «capitalize» (Symbols)
<p>
Initial String
<strong>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</strong>
</p>
<p>
text-transform: capitalize
<strong><span>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</span></strong>
</p>
span {
text-transform: capitalize;
}
strong {
float: right;
}
This demonstrates how initial symbols are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
Example using «capitalize» (Dutch ij digraph)
<p>
Initial String
<strong lang="nl">The Dutch word: "ijsland" starts with a digraph.</strong>
</p>
<p>
text-transform: capitalize
<strong
><span lang="nl"
>The Dutch word: "ijsland" starts with a digraph.</span
></strong
>
</p>
span {
text-transform: capitalize;
}
strong {
float: right;
}
This demonstrates how the Dutch ij digraph must be handled like one single letter.
Example using «uppercase» (general)
<p>
Initial String
<strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</strong>
</p>
<p>
text-transform: uppercase
<strong
><span
>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</span
></strong
>
</p>
span {
text-transform: uppercase;
}
strong {
float: right;
}
This demonstrates transforming the text to uppercase.
Example using «uppercase» (Greek vowels)
<p>
Initial String
<strong>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</strong>
</p>
<p>
text-transform: uppercase
<strong
><span lang="el">Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</span></strong
>
</p>
span {
text-transform: uppercase;
}
strong {
float: right;
}
This demonstrates how Greek vowels except disjunctive eta should have no accent, and the accent on the first vowel of a vowel pair becomes a diaeresis on the second vowel.
Example using «lowercase» (general)
<p>
Initial String
<strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</strong>
</p>
<p>
text-transform: lowercase
<strong
><span
>Lorem ipsum dolor sit amet, consectetur adipisicing elit…</span
></strong
>
</p>
span {
text-transform: lowercase;
}
strong {
float: right;
}
This demonstrates transforming the text to lowercase.
Example using «lowercase» (Greek Σ)
<p>
Initial String
<strong>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</strong>
</p>
<p>
text-transform: lowercase
<strong
><span
>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</span
></strong
>
</p>
span {
text-transform: lowercase;
}
strong {
float: right;
}
This demonstrates how the Greek character sigma (Σ
) is transformed into the regular lowercase sigma (σ
) or the word-final variant (ς
), according the context.
Example using «lowercase» (Lithuanian)
<p>
Initial String
<strong>Ĩ is a Lithuanian LETTER as is J́</strong>
</p>
<p>
text-transform: lowercase
<strong><span lang="lt">Ĩ is a Lithuanian LETTER as is J́</span></strong>
</p>
span {
text-transform: lowercase;
}
strong {
float: right;
}
This demonstrates how the Lithuanian letters Ĩ
and J́
retain their dot when transformed to lowercase.
Example using «full-width» (general)
<p>
Initial String
<strong
>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>?@{|}~</strong
>
</p>
<p>
text-transform: full-width
<strong
><span
>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>?@{|}~</span
></strong
>
</p>
span {
text-transform: full-width;
}
strong {
width: 100%;
float: right;
}
Some characters exist in two formats: normal width and a full-width, with different Unicode code points. The full-width version is used to mix them smoothly with Asian ideographic characters.
Example using «full-width» (Japanese half-width katakana)
<p>
Initial String
<strong>ウェブプログラミングの勉強</strong>
</p>
<p>
text-transform: full-width
<strong><span>ウェブプログラミングの勉強</span></strong>
</p>
span {
text-transform: full-width;
}
strong {
width: 100%;
float: right;
}
The Japanese half-width katakana was used to represent katakana in 8-bit character codes. Unlike regular (full-width) katakana characters, a letter with dakuten (voiced sound mark) is represented as two code points, the body of letter and dakuten. The full-width
combines these into a single code point when converting these characters into full-width.
Example using «full-size-kana»
<p>ァィゥェ ォヵㇰヶ ㇱㇲッㇳ ㇴㇵㇶㇷ ㇸㇹㇺャ ュョㇻㇼ ㇽㇾㇿヮ</p>
<p>ァィゥェ ォヵㇰヶ ㇱㇲッㇳ ㇴㇵㇶㇷ ㇸㇹㇺャ ュョㇻㇼ ㇽㇾㇿヮ</p>
</p>
p:nth-of-type(2) {
text-transform: full-size-kana;
}
Specifications
Specification |
---|
CSS Text Module Level 3 # text-transform |
Browser compatibility
BCD tables only load in the browser
See also
Is there a way to make the first character Uppercase in a label in CSS.
Here is my HTML:
<a class="m_title" href="">gorr</a>
<a class="m_title" href="">trro</a>
<a class="m_title" href="">krro</a>
<a class="m_title" href="">yrro</a>
<a class="m_title" href="">gwwr</a>
Penny Liu
14.5k5 gold badges77 silver badges93 bronze badges
asked Apr 7, 2011 at 7:18
1
There’s a property for that:
a.m_title {
text-transform: capitalize;
}
If your links can contain multiple words and you only want the first letter of the first word to be uppercase, use :first-letter
with a different transform instead (although it doesn’t really matter). Note that in order for :first-letter
to work your a
elements need to be block containers (which can be display: block
, display: inline-block
, or any of a variety of other combinations of one or more properties):
a.m_title {
display: block;
}
a.m_title:first-letter {
text-transform: uppercase;
}
answered Apr 7, 2011 at 7:20
BoltClockBoltClock
692k159 gold badges1380 silver badges1351 bronze badges
16
Note that the ::first-letter
selector does not work with inline elements, so it must be either block
or inline-block
, as follows:
.m_title {display:inline-block}
.m_title:first-letter {text-transform: uppercase}
Dave Jarvis
30.2k39 gold badges178 silver badges312 bronze badges
answered Feb 23, 2015 at 16:02
1
Make it lowercase first:
.m_title {text-transform: lowercase}
Then make it the first letter uppercase:
.m_title::first-letter {text-transform: uppercase}
«text-transform: capitalize» works for a word; but if you want to use for sentences this solution is perfect.
Example:
.m_title {
display: inline-block; /* Thanks to Fanky (https://stackoverflow.com/users/2095642/fanky) */
text-transform: lowercase
}
.m_title::first-letter {
text-transform: uppercase
}
<a class="m_title" href="">gorr</a>
<a class="m_title" href="">trro trro</a>
<a class="m_title" href="">krro</a>
<a class="m_title" href="">yrro</a>
<a class="m_title" href="">gwwr gwwr gwwr</a>
Adrian
1,3771 gold badge12 silver badges29 bronze badges
answered Apr 7, 2019 at 12:11
OzgurGOzgurG
1,4791 gold badge15 silver badges20 bronze badges
2
<script type="text/javascript">
$(document).ready(function() {
var asdf = $('.capsf').text();
$('.capsf').text(asdf.toLowerCase());
});
</script>
<div style="text-transform: capitalize;" class="capsf">sd GJHGJ GJHgjh gh hghhjk ku</div>
answered Aug 19, 2017 at 13:58
1
I would recommend that you use the following code in CSS:
text-transform:uppercase;
Make sure you put it in your class.
answered Dec 1, 2016 at 16:36
Kevin DavisKevin Davis
3671 gold badge7 silver badges25 bronze badges
Works in React Native too:
textTransform: 'capitalize'
answered May 12, 2022 at 23:41
1
DigitalOcean provides cloud products for every stage of your journey. Get started with $200 in free credit!
The text-transform
property in CSS controls text case and capitalization.
.lowercase {
text-transform: lowercase;
}
Text-Transform Values
lowercase
makes all of the letters in the selected text lowercase.uppercase
makes all of the letters in the selected text uppercase.capitalize
capitalizes the first letter of each word in the selected text.none
leaves the text’s case and capitalization exactly as it was entered.inherit
gives the text the case and capitalization of its parent.
The demo below shows lowercase
, uppercase
, and capitalize
in use. Take a look at the HTML tab to see how the text was originally written, then switch back to the results tab to see it after the CSS is applied.
See the Pen 0f4293fce0d14aafc3818c950ab0ded3 by mariemosley (@mariemosley) on CodePen.
Points of Interest
capitalize
will capitalize words that appear inside single or double quotes, and the first letter after a hyphen. It won’t capitalize the first letter after a number, so dates like “February 4th, 2015” won’t transform into “February 4Th, 2015”.
capitalize
only affects the first letters of words. It will not change the case of the rest of the letters in a word. For example, if you capitalize
a word that’s in all capital letters already, the other letters in the word won’t switch to lowercase. This is nice when your text includes an acronym or abbreviation that shouldn’t include any lowercase letters.
CSS can’t do “title case”, the capitalization style used in titles of books, movies, songs, and poems, where articles are lowercase (as in “Raiders of the Lost Ark”). But, there are JavaScript solutions for title case, including David Gouch’s toTitleCase().
Related Properties
- font-variant
- text-indent
- ::first-letter
- ::first-line
More Information
- text-transform at MDN
- text-transform in the W3C Spec
- Notes on the accessibility of uppercase text from WebAIM
Browser Support
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Any | Any | Any | Any | Any | Any | Any |
Firefox supports language-specific capitalization rules for Turkic languages, German, Dutch, and Greek that are not supported by other browsers. Firefox is also the only browser that supports text-transform: full-width;
, which can help improve the readability of text that includes a mixture of latin and East Asian scripts. See details at MDN.
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS | |
6.0+ | 8.0+ | 1.0+ | 3.5+ | 1.0+ | 1.0+ | 1.0+ | 1.0+ |
Краткая информация
Значение по умолчанию | none |
---|---|
Наследуется | Да |
Применяется | Ко всем элементам |
Ссылка на спецификацию | http://www.w3.org/TR/CSS21/text.html#propdef-text-transform |
Версии CSS
CSS 1 | CSS 2 | CSS 2.1 | CSS 3 |
---|---|---|---|
Описание
Управляет преобразованием текста элемента в заглавные или прописные символы.
Когда значение отлично от none, регистр исходного
текста будет изменен.
Синтаксис
text-transform: capitalize | lowercase | uppercase | none | inherit
Значения
- capitalize
- Первый символ каждого слова в предложении будет заглавным. Остальные символы свой вид не меняют.
- lowercase
- Все символы текста становятся строчными (нижний регистр).
- uppercase
- Все символы текста становятся прописными (верхний регистр).
- none
- Не меняет регистр символов.
- inherit
- Наследует значение родителя.
Пример
HTML5CSS2.1IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text-transform</title>
<style>
h1 {
text-transform: uppercase; /* Заглавные буквы */
}
p {
text-transform: capitalize; /* Каждое слово начинается с заглавной буквы */
}
</style>
</head>
<body>
<h1>Lorem ipsum dolor sit amet</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem
nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.
Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit
lobortis nisl ut aliquip ex ea commodo consequat.</p>
</body>
</html>
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства text-transform
Объектная модель
[window.]document.getElementById(«elementID«).style.textTransform
Браузеры
Internet Explorer до версии 7.0 включительно не поддерживает значение inherit.
CSS по теме
Статьи по теме
Рецепты CSS
The text-transform
CSS property specifies how to capitalize an element’s text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.
The text-transform
property takes into account language-specific case mapping rules such as the following:
-
In Turkic languages, like Turkish (
tr
), Azerbaijani (az
), Crimean Tatar (crh
), Volga Tatar (tt
), and Bashkir (ba
), there are two kinds ofi
, with and without the dot, and two case pairings:i
/İ
andı
/I
. -
In German (
de
), theß
becomesSS
in uppercase. -
In Dutch (
nl
), theij
digraph becomesIJ
, even withtext-transform: capitalize
, which only puts the first letter of a word in uppercase. -
In Greek (
el
), vowels lose their accent when the whole word is in uppercase (ά
/Α
), except for the disjunctive eta (ή
/Ή
). Also, diphthongs with an accent on the first vowel lose the accent and gain a diaeresis on the second vowel (άι
/ΑΪ
). -
In Greek (
el
), the lowercase sigma character has two forms:σ
andς
.ς
is used only when sigma terminates a word. When applyingtext-transform: lowercase
to an uppercase sigma (Σ
), the browser needs to choose the right lowercase form based on context. - in Irish (
ga
), certain prefixed letters remain in lowercase when the base initial is capitalized, so for exampletext-transform: uppercase
will changear aon tslí
toAR AON tSLÍ
and not, as one might expect,AR AON TSLÍ
(Firefox only). In some cases, a hyphen is also removed upon uppercasing:an t-uisce
transforms toAN tUISCE
(and the hyphen is correctly reinserted bytext-transform: lowercase
).
The language is defined by the lang
HTML attribute or the xml:lang
XML attribute.
Note: Support for language-specific cases varies between browsers, so check the browser compatibility table.
Syntax
/* Keyword values */ text-transform: capitalize; text-transform: uppercase; text-transform: lowercase; text-transform: none; text-transform: full-width; /* Global values */ text-transform: inherit; text-transform: initial; text-transform: unset;
capitalize
-
Is a keyword that converts the first letter of each word to uppercase. Other characters remain unchanged (they retain their original case as written in the element’s text). A letter is defined as a character that is part of Unicode’s Letter or Number general categories ; thus, any punctuation marks or symbols at the beginning of a word are ignored.
Authors should not expect
capitalize
to follow language-specific title casing conventions (such as skipping articles in English).The
capitalize
keyword was under-specified in CSS 1 and CSS 2.1. This resulted in differences between browsers in the way the first letter was calculated (Firefox considered-
and_
as letters, but other browsers did not. Both Webkit and Gecko incorrectly considered letter-based symbols likeⓐ
to be real letters. Internet Explorer 9 was the closest to the CSS 2 definition, but with some weird cases.) By precisely defining the correct behavior, CSS Text Level 3 cleans this mess up. Thecapitalize
line in the browser compatibility table contains the version the different engines started to support this now precisely-defined behavior. uppercase
- Is a keyword that converts all characters to uppercase.
lowercase
- Is a keyword that converts all characters to lowercase.
none
- Is a keyword that prevents the case of all characters from being changed.
-
full-width
- Is a keyword that forces the writing of a character — mainly ideograms and Latin scripts — inside a square, allowing them to be aligned in the usual East Asian scripts (like Chinese or Japanese).
Formal syntax
none | capitalize | uppercase | lowercase | full-width
Examples
none
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: none <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: none; } strong { float: right; }
This demonstrates no text transformation.
capitalize
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: capitalize <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates text capitalization.
capitalize
(Punctuation)
<p>Initial String <strong>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!</strong> </p> <p>text-transform: capitalize <strong><span>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demostrates how initial punctuations of a word are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize
(Symbols)
<p>Initial String <strong>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</strong> </p> <p>text-transform: capitalize <strong><span>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how initial symbols are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize
(Dutch ij digraph)
<p>Initial String <strong lang="nl">The Dutch word: "ijsland" starts with a digraph.</strong> </p> <p>text-transform: capitalize <strong><span lang="nl">The Dutch word: "ijsland" starts with a digraph.</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how the Dutch ij digraph must be handled like one single letter.
uppercase
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: uppercase <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates transforming the text to uppercase.
uppercase
(Greek Vowels)
<p>Initial String <strong>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</strong> </p> <p>text-transform: uppercase <strong><span>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</span></strong> </p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates how Greek vowels except disjunctive eta should have no accent, and the accent on the first vowel of a vowel pair becomes a diaeresis on the second vowel.
lowercase
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: lowercase <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates transforming the text to lowercase.
lowercase
(Greek Σ)
<p>Initial String <strong>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</strong> </p> <p>text-transform: lowercase <strong><span>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</span></strong> </p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates how the Greek character sigma (Σ
) is transformed into the regular lowercase sigma (σ
) or the word-final variant (ς
), according the context.
full-width (General)
<p>Initial String <strong>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>[email protected]{|}~</strong> </p> <p>text-transform: full-width <strong><span>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>[email protected]{|}~</span></strong> </p>
span { text-transform: full-width; } strong { width: 100%; float: right; }
Some characters exists in two formats, normal width and a full-width, with different Unicode code points. The full-width version is used to mix them smoothly with Asian ideographic characters.
Accessibility concerns
Large sections of text set with a text-transform
value of uppercase
may be difficult for people with cognitive concerns such as Dyslexia to read.
- MDN Understanding WCAG, Guideline 1.4 explanations
- W3C Understanding WCAG 2.1
Specifications
Browser compatibilityUpdate compatibility data on GitHub
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 1
|
12 | 1 | 4 | 7
|
1
|
capitalize as defined by CSS level 3 |
? | ? | 14 | ? | ? | ? |
full-width |
No | ? | 19 | No | No | No |
Dutch IJ digraph |
No | ? | 14 | No | No | No |
Greek accented letters | 30 | ? | 15 | No | No | No |
Σ → σ or word-final ς
|
30 | ? | 14 | No | No | 6 |
i → İ and ı → I
|
No | ? | 14 | ? | ? | No |
ß → SS
|
? | ? | 1 | ? | ? | ? |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | 1
|
? | Yes | 4 | ? | 1
|
? |
capitalize as defined by CSS level 3 |
? | ? | ? | 14 | ? | ? | ? |
full-width |
No | ? | ? | 19 | No | No | No |
Dutch IJ digraph |
No | ? | ? | 14 | No | No | No |
Greek accented letters | No | ? | ? | No | No | No | ? |
Σ → σ or word-final ς
|
No | ? | ? | 14 | No | No | ? |
i → İ and ı → I
|
No | ? | ? | 14 | ? | No | No |
ß → SS
|
? | ? | ? | 4 | ? | ? | ? |
See also
font-variant
The text-transform
CSS property specifies how to capitalize an element’s text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby.
The text-transform
property takes into account language-specific case mapping rules such as the following:
- In Turkic languages, like Turkish (
tr
), Azerbaijani (az
), Crimean Tatar (crh
), Volga Tatar (tt
), and Bashkir (ba
), there are two kinds ofi
, with and without the dot, and two case pairings:i
/İ
andı
/I
. - In German (
de
), theß
becomesSS
in uppercase. - In Dutch (
nl
), theij
digraph becomesIJ
, even withtext-transform: capitalize
, which only puts the first letter of a word in uppercase. - In Greek (
el
), vowels lose their accent when the whole word is in uppercase (ά
/Α
), except for the disjunctive eta (ή
/Ή
). Also, diphthongs with an accent on the first vowel lose the accent and gain a diaeresis on the second vowel (άι
/ΑΪ
). - In Greek (
el
), the lowercase sigma character has two forms:σ
andς
.ς
is used only when sigma terminates a word. When applyingtext-transform: lowercase
to an uppercase sigma (Σ
), the browser needs to choose the right lowercase form based on context. - in Irish (
ga
), certain prefixed letters remain in lowercase when the base initial is capitalized, so for exampletext-transform: uppercase
will changear aon tslí
toAR AON tSLÍ
and not, as one might expect,AR AON TSLÍ
(Firefox only). In some cases, a hyphen is also removed upon uppercasing:an t-uisce
transforms toAN tUISCE
(and the hyphen is correctly reinserted bytext-transform: lowercase
).
The language is defined by the lang
HTML attribute or the xml:lang
XML attribute.
Note: Support for language-specific cases varies between browsers, so check the browser compatibility table.
Syntax
text-transform: none; text-transform: capitalize; text-transform: uppercase; text-transform: lowercase; text-transform: full-width; text-transform: full-size-kana; text-transform: inherit; text-transform: initial; text-transform: revert; text-transform: unset;
capitalize
-
Is a keyword that converts the first letter of each word to uppercase. Other characters remain unchanged (they retain their original case as written in the element’s text). A letter is defined as a character that is part of Unicode’s Letter or Number general categories ; thus, any punctuation marks or symbols at the beginning of a word are ignored.
Note: Authors should not expect
capitalize
to follow language-specific title casing conventions (such as skipping articles in English).Note: The
capitalize
keyword was under-specified in CSS 1 and CSS 2.1. This resulted in differences between browsers in the way the first letter was calculated (Firefox considered-
and_
as letters, but other browsers did not. Both Webkit and Gecko incorrectly considered letter-based symbols likeⓐ
to be real letters. Internet Explorer 9 was the closest to the CSS 2 definition, but with some weird cases.) By precisely defining the correct behavior, CSS Text Level 3 cleans this mess up. Thecapitalize
line in the browser compatibility table contains the version the different engines started to support this now precisely-defined behavior. uppercase
-
Is a keyword that converts all characters to uppercase.
lowercase
-
Is a keyword that converts all characters to lowercase.
none
-
Is a keyword that prevents the case of all characters from being changed.
full-width
-
Is a keyword that forces the writing of a character — mainly ideograms and Latin scripts — inside a square, allowing them to be aligned in the usual East Asian scripts (like Chinese or Japanese).
full-size-kana
-
Generally used for
<ruby>
annotation text, the keyword converts all small Kana characters to the equivalent full-size Kana, to compensate for legibility issues at the small font sizes typically used in ruby.
Accessibility concerns
Large sections of text set with a text-transform
value of uppercase
may be difficult for people with cognitive concerns such as Dyslexia to read.
- MDN Understanding WCAG, Guideline 1.4 explanations
- W3C Understanding WCAG 2.1
Formal definition
Formal syntax
none | capitalize | uppercase | lowercase | full-width | full-size-kana
Examples
none
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: none <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: none; } strong { float: right; }
This demonstrates no text transformation.
capitalize (General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: capitalize <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates text capitalization.
capitalize (Punctuation)
<p>Initial String <strong>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!</strong> </p> <p>text-transform: capitalize <strong><span>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how initial punctuations of a word are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize (Symbols)
<p>Initial String <strong>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</strong> </p> <p>text-transform: capitalize <strong><span>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how initial symbols are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize (Dutch ij digraph)
<p>Initial String <strong lang="nl">The Dutch word: "ijsland" starts with a digraph.</strong> </p> <p>text-transform: capitalize <strong><span lang="nl">The Dutch word: "ijsland" starts with a digraph.</span></strong> </p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how the Dutch ij digraph must be handled like one single letter.
uppercase (General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: uppercase <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates transforming the text to uppercase.
uppercase (Greek Vowels)
<p>Initial String <strong>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</strong> </p> <p>text-transform: uppercase <strong><span lang="el">Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"</span></strong> </p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates how Greek vowels except disjunctive eta should have no accent, and the accent on the first vowel of a vowel pair becomes a diaeresis on the second vowel.
lowercase (General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p> <p>text-transform: lowercase <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</span></strong> </p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates transforming the text to lowercase.
lowercase (Greek Σ)
<p>Initial String <strong>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</strong> </p> <p>text-transform: lowercase <strong><span>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.</span></strong> </p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates how the Greek character sigma (Σ
) is transformed into the regular lowercase sigma (σ
) or the word-final variant (ς
), according the context.
lowercase (Lithuanian)
<p>Initial String <strong>Ĩ is a Lithuanian LETTER as is J́</strong> </p> <p>text-transform: lowercase <strong><span lang="lt">Ĩ is a Lithuanian LETTER as is J́</span></strong> </p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates how the Lithuanian letters Ĩ
and J́
retain their dot when transformed to lowercase.
full-width (General)
<p>Initial String <strong>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>[email protected]{|}~</strong> </p> <p>text-transform: full-width <strong><span>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>[email protected]{|}~</span></strong> </p>
span { text-transform: full-width; } strong { width: 100%; float: right; }
Some characters exists in two formats, normal width and a full-width, with different Unicode code points. The full-width version is used to mix them smoothly with Asian ideographic characters.
full-width (Japanese half-width katakana)
<p>Initial String <strong>ウェブプログラミングの勉強</strong> </p> <p>text-transform: full-width <strong><span>ウェブプログラミングの勉強</span></strong> </p>
span { text-transform: full-width; } strong { width: 100%; float: right; }
The Japanese half-width katakana was used to represent katakana in 8-bit character codes. Unlike regular (full-width) katakana characters, a letter with dakuten (voiced sound mark) is represented as two code points, the body of letter and dakuten. The full-width
combines these into a single code point when converting these characters into full-width.
full-size-kana
<p>ァィゥェ ォヵㇰヶ ㇱㇲッㇳ ㇴㇵㇶㇷ ㇸㇹㇺャ ュョㇻㇼ ㇽㇾㇿヮ</p> <p>ァィゥェ ォヵㇰヶ ㇱㇲッㇳ ㇴㇵㇶㇷ ㇸㇹㇺャ ュョㇻㇼ ㇽㇾㇿヮ</p> </p>
p:nth-of-type(2) { text-transform: full-size-kana; }
Specifications
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
text-transform |
1 The |
12 |
1 |
4 |
7 Since Opera 15, the |
1 The |
1 The |
18 The |
4 |
11 |
1 The |
1.0 The |
capitalize |
1 |
12 |
1 Before Firefox 14, some punctuation characters could interfere with correct capitalization. See bug 731536. |
4 |
7 |
1 |
1 |
18 |
4 Before Firefox 14, some punctuation characters could interfere with correct capitalization. See bug 731536. |
11 |
1 |
1.0 |
dutch_ij_digraph |
No |
No |
14 |
No |
No |
No |
No |
No |
14 |
No |
No |
No |
full-size-kana |
No |
No |
64 |
No |
No |
No |
No |
No |
64 |
No |
No |
No |
full-width |
No |
No |
19 |
No |
No |
No |
No |
No |
19 |
No |
No |
No |
greek_accented_characters |
34 |
79 |
15 |
No |
21 |
No |
4.4 |
34 |
15 |
21 |
No |
2.0 |
lowercase_sigma |
30 |
12 |
14 |
4 |
17 |
6 |
4.4 |
30 |
14 |
18 |
6 |
2.0 |
turkic_is |
31 |
12 |
14 |
4 |
18 |
8 |
≤37 |
31 |
14 |
18 |
8 |
2.0 |
uppercase_eszett |
1 |
18 |
1 |
No |
7 |
1 |
1 |
18 |
4 |
11 |
1 |
1.0 |
See also
font-variant
Example
Transform text in different <div> elements:
div.a {
text-transform: uppercase;
}
div.b {
text-transform: lowercase;
}
div.c {
text-transform: capitalize;
}
Try it Yourself »
Definition and Usage
The text-transform
property controls the capitalization of text.
Show demo ❯
Default value: | none |
---|---|
Inherited: | yes |
Version: | CSS1 |
JavaScript syntax: | object.style.textTransform=»uppercase» Try it |
Browser Support
The numbers in the table specify the first browser version that fully supports the property.
Property | |||||
---|---|---|---|---|---|
text-transform | 1.0 | 4.0 | 1.0 | 1.0 | 7.0 |
CSS Syntax
text-transform: none|capitalize|uppercase|lowercase|initial|inherit;
Property Values
Value | Description | Demo |
---|---|---|
none | No capitalization. The text renders as it is. This is default | Demo ❯ |
capitalize | Transforms the first character of each word to uppercase | Demo ❯ |
uppercase | Transforms all characters to uppercase | Demo ❯ |
lowercase | Transforms all characters to lowercase | Demo ❯ |
initial | Sets this property to its default value. Read about initial | |
inherit | Inherits this property from its parent element. Read about inherit |
Related Pages
CSS tutorial: CSS Text
Transformation
HTML DOM reference: textTransform property
This CSS tutorial explains how to use the CSS property called text-transform with syntax and examples.
Description
The CSS text-transform property defines how to capitalize the text of an element such as uppercase, lowercase, capitalize.
Syntax
The syntax for the text-transform CSS property is:
text-transform: value;
Parameters or Arguments
- value
-
The capitalization of a font. It can be one of the following:
Value Description uppercase All letters are converted to uppercase
p { text-transform: uppercase; }lowercase All letters are converted to lowercase
p { text-transform: lowercase; }capitalize First letter of each word is converted to uppercase
p { text-transform: capitalize; }none Capitalization of letters are not changed
p { text-transform: none; }inherit Element will inherit the text-transform from its parent element
p { text-transform: inherit; }
Note
- If capitalize is chosen as the text-transform, the first letter of each word is capitalized while all other letters are not changed.
- The CSS text-transform property is a great way to make your headings uppercase without having to edit the HTML pages.
Browser Compatibility
The CSS text-transform property has basic support with the following browsers:
- Chrome
- Android
- Firefox (Gecko)
- Firefox Mobile (Gecko)
- Internet Explorer (IE)
- IE Phone
- Opera
- Opera Mobile
- Safari (WebKit)
- Safari Mobile
Example
We will discuss the text-transform property below, exploring examples of how to use this property in CSS.
Using Uppercase
Let’s look at a CSS text-transform example where we set the text-transform to uppercase.
h1 { text-transform: uppercase; }
In this CSS text-transform example, we have used the CSS text-transform property to change all text in the <h1> tag to uppercase. This allows you to quickly change the display of the <h1> tag without having to edit your HTML pages.
Using Lowercase
Let’s look at a CSS text-transform example where we set the text-transform to lowercase.
span { text-transform: lowercase; }
In this CSS text-transform example, we have used the CSS text-transform property to change all text in the <span> tag to lowercase.
Using Capitalize
Let’s look at a CSS text-transform example where we set the text-transform to capitalize.
.author_name { text-transform: capitalize; }
In this CSS text-transform example, we have used the CSS text-transform property to capitalize the first letter of each word in the text of the author_name class.
The text-transform property is used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.
Some language-specific case mapping rules are taken into account by this property. Let’s go through some of them:
- In Turkic languages, such as Turkish (tr), Azerbaijani (az), Crimean Tatar (crh), Volga Tatar (tt), and Bashkir (ba), there exist two types of i, with and without the dot, and the following two case pairings: i/İ and ı/I.
- In German (de) languages, the ß becomes SS in uppercase.
- In Greek (el) languages, when the whole word is uppercase (ά/Α) the vowel accent is lost, except the disjunctive eta (ή/Ή).
The browser support for the language-specific cases may vary.
The «full-width» and «full-size-kana» values are experimental and not yet supported by any browser.
text-transform: none | capitalize | uppercase | lowercase | full-width | full-width-kana | initial | inherit;
Example of the text-transform property with the «uppercase» value:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p {
text-transform: uppercase;
}
</style>
</head>
<body>
<h2>Text-transform property example</h2>
<p>This is some paragraph.</p>
<div>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
</div>
</body>
</html>
Result
The «capitalize» value of the text-transform property capitalizes the words inside single or double quotes, as well as the first letter that comes after a hyphen. The first letter coming after a number will not be capitalized. For example, dates like “January 3th, 2019” will not become “January 3Th, 2019”. This value only capitalizes the first letters of the word, so the other letters in the word won’t change.
In the example below, we have used the «capitalize» value for the first sentence and the «lowercase» value for the second sentence:
Example of the text-transform property with the «capitalize» and “lowercase” values:
<!DOCTYPE html>
<html>
<head>
<style>
.a {
text-transform: capitalize
}
.b {
text-transform: lowercase
}
</style>
</head>
<body>
<h2>Text-transform property example</h2>
<div class="a">"Text transform property"</div>
<br/>
<div class="b">
"THIS IS SOME PARAGRAPH FOR EXAMPLE".
</div>
</body>
</html>
Example of the text-transform property with the «none» value:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
h1 {
color: red;
}
h2 {
text-transform: none;
}
</style>
</head>
<body>
<h1>Example with text-transform property</h1>
<h2>
Example of the text-transform property with the "none” value:
</h2>
</body>
</html>
Example of the text-transform property with the «initial” value:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
h1 {
color: red;
}
p.text {
text-transform: initial;
}
</style>
</head>
<body>
<h1>Example with text-transform property</h1>
<h2>text-transform: initial:</h2>
<p class="text">
Example of the text-transform property with the "initial” value:
</p>
</body>
</html>
The text-transform
CSS property specifies how to capitalize an element’s text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.
/* Keyword values */ text-transform: capitalize; text-transform: uppercase; text-transform: lowercase; text-transform: none; text-transform: full-width; /* Global values */ text-transform: inherit; text-transform: initial; text-transform: unset;
The text-transform
property takes into account language-specific case mapping rules, like:
-
in Turkic languages, like Turkish (
tr
), Azerbaijani (az
), Crimean Tatar (crh
), Volga Tatar (tt
), and Bashkir (ba
), there are two kinds of i, with and without the dot, and two case pairings:i
/İ
andı
/I
. -
In German (
de
), theß
becomesSS
in uppercase. -
In Dutch (
nl
), theij
digraph becomesIJ
, even withtext-transform: capitalize
, which only put the first letter of a word in uppercase. -
In Greek (
el
), vowels lose their accent when the whole word is in uppercase (ά
/Α
), except for the disjunctive eta (ή
/Ή
). Also, diphthongs with an accent on the first vowel lose the accent and gain a diaeresis on the second vowel (άι
/ΑΪ
). -
In Greek (
el
), the lowercase sigma character has two forms:σ
andς
.ς
is used only when sigma terminates a word. When applyingtext-transform: lowercase
to an uppercase sigma (Σ
), the browser needs to choose the right lowercase form based on context. - in Irish (
ga
), certain prefixed letters remain in lowercase when the base initial is capitalised, so for exampletext-transform: uppercase
will changear aon tslí
toAR AON tSLÍ
and not, as one might expect,AR AON TSLÍ
(Firefox only). In some cases, a hyphen is also removed upon uppercasing:an t-uisce
transforms toAN tUISCE
(and the hyphen is correctly reinserted bytext-transform: lowercase
)
The language is defined by the lang
HTML attribute or the xml:lang
XML attribute.
Support for these specific cases vary from one browser to the other, so check the browser compatibility table.
Initial value | none |
---|---|
Applies to | all elements. It also applies to ::first-letter and ::first-line . |
Inherited | yes |
Media | visual |
Computed value | as specified |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Syntax
capitalize
-
Is a keyword forcing the first letter of each word to be converted to uppercase. Other characters are unchanged; that is, they retain their original case as written in the element’s text. A letter is any Unicode character part of the Letter or Number general categories : it excludes any punctuation marks or symbols at the beginning of the word.
Authors should not expect
capitalize
to follow language-specific titlecasing conventions (such as skipping articles in English). uppercase
- Is a keyword forcing all characters to be converted to uppercase.
lowercase
- Is a keyword forcing all characters to be converted to lowercase.
none
- Is a keyword preventing the case of all characters to be changed.
full-width
- Is a keyword forcing the writing of a character, mainly ideograms and latin scripts inside a square, allowing them to be aligned in the usual East Asian scripts (like Chinese or Japanese).
Formal syntax
none | capitalize | uppercase | lowercase | full-width
Examples
none
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p>
<p>text-transform: none <strong><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</span></strong> </p>
span { text-transform: none; } strong { float: right; }
This demonstrates no text transformation.
capitalize
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...</strong> </p>
<p>text-transform: capitalize<strong>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</span></strong>
</p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates text capitalization.
capitalize
(Punctuation)
<p>Initial String <strong>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!
</strong> </p>
<p>text-transform: capitalize<strong>
<span>(this) “is” [a] –short– -test- «for» *the* _css_ ¿capitalize? ?¡transform!
</span></strong>
</p>
span { text-transform: capitalize; } strong { float: right; }
This demostrates how initial punctuations of a word are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize
(Symbols)
<p>Initial String <strong>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl
</strong> </p>
<p>text-transform: capitalize<strong>
<span>ⓐⓑⓒ (ⓓⓔⓕ) —ⓖⓗⓘ— ⓙkl
</span></strong>
</p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how initial symbols are ignored. The keyword target the first letter, that is the first Unicode character part of the Letter or Number general category.
capitalize
(Dutch ij digraph)
<p>Initial String <strong lang="nl">The Dutch word: "ijsland" starts with a digraph.
</strong> </p>
<p>text-transform: capitalize<strong>
<span lang="nl">The Dutch word: "ijsland" starts with a digraph.
</span></strong>
</p>
span { text-transform: capitalize; } strong { float: right; }
This demonstrates how the Dutch ij digraph must be handled like one single letter.
uppercase
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</strong> </p>
<p>text-transform: uppercase<strong>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</span></strong>
</p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates transforming the text to uppercase.
uppercase
(Greek Vowels)
<p>Initial String <strong>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"
</strong> </p>
<p>text-transform: uppercase<strong>
<span>Θα πάμε στο "Θεϊκό φαΐ" ή στη "Νεράιδα"
</span></strong>
</p>
span { text-transform: uppercase; } strong { float: right; }
This demonstrates how Greek vowels except disjunctive eta should have no accent, and the accent on the first vowel of a vowel pair becomes a diaeresis on the second vowel.
lowercase
(General)
<p>Initial String <strong>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</strong> </p>
<p>text-transform: lowercase<strong>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...
</span></strong>
</p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates transforming the text to lowercase.
lowercase
(Greek Σ)
<p>Initial String <strong>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.
</strong> </p>
<p>text-transform: lowercase<strong>
<span>Σ IS A greek LETTER that appears SEVERAL TIMES IN ΟΔΥΣΣΕΥΣ.
</span></strong>
</p>
span { text-transform: lowercase; } strong { float: right; }
This demonstrates how the Greek character sigma (Σ
) is transformed into the regular lowercase sigma (σ
) or the word-final variant (ς
), according the context.
full-width
(General)
<p>Initial String <strong>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>?@{|}~</strong> </p>
<p>text-transform: full-width<strong>
<span>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;<=>?@{|}~</span></strong>
</p>
span { text-transform: full-width; } strong { width: 100%; float: right; }
Some characters exists in two formats, normal width and a full-width, with different Unicode code points. The full-width version is used to mix them smoothly with Asian ideographic characters.
Specifications
Specification | Status | Comment |
---|---|---|
CSS Text Level 4 The definition of ‘text-transform’ in that specification. |
Working Draft | From CSS Text Module Level 3 The definition of ‘text-transform’ in that specification., adds the full-size-kana keyword and allows the full-width keyword to be used together with another keyword. |
CSS Text Module Level 3 The definition of ‘text-transform’ in that specification. |
Working Draft | From CSS Level 2 (Revision 1) The definition of ‘text-transform’ in that specification., extends letters to any Unicode character in the Number or Letter general category. Modifies the behavior of capitalize to apply to the first letter of the word, ignoring initial punctuations or symbols. Adds the full-width keyword to mix smoothly ideographic characters and alphabetical characters. |
CSS Level 2 (Revision 1) The definition of ‘text-transform’ in that specification. |
Recommendation | From CSS Level 1 The definition of ‘text-transform’ in that specification., extends letters to non-latin bi-cameral scripts |
CSS Level 1 The definition of ‘text-transform’ in that specification. |
Recommendation | Initial definition |
Browser compatibility
- Desktop
- Mobile
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 1.0[1] | (Yes) | 1.0 (1.7 or earlier) | 4.0 | 7.0[2] | 1.0[3] |
capitalize (CSS3 version) |
?[4] | ? | 14 (14)[4] | ?[4] | ?[4] | ?[4] |
full-size-kana |
No support | ? | No support | No support | No support | No support |
full-width |
No support | ? | 19 (19) | No support | No support | No support |
ß → SS |
? | ? | 1.0 (1.7 or earlier) | ? | ? | ? |
i → İ and ı → I |
No support | ? | 14 (14) | ? | ? | No support |
Dutch IJ digraph |
No support | ? | 14 (14) | No support | No support | No support |
Greek accented letters | 30 | ? | 15 (15) | No support | No support | No support |
Σ → σ or word-final ς |
30 | ? | 14 (14) | No support | No support | 6.0 |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 1.0[1] | (Yes) | 1.0 (1) | 6.0 | 6.0[2 | 1.0[3] |
capitalize (CSS3 version) |
?[4] | ? | 14.0 (14)[4] | ?[4] | ?[4] | ?[4] |
full-size-kana |
No support | ? | No support | No support | No support | No support |
full-width |
No support | ? | 19.0 (19) | No support | No support | No support |
ß → SS |
? | ? | 1.0 (1) | ? | ? | ? |
i → İ and ı → I |
No support | ? | 14.0 (14) | ? | ? | No support |
Dutch IJ digraph |
No support | ? | 14.0 (14) | No support | No support | No support |
Greek accented letters | No support | ? | No support | No support | No support | No support |
Σ → σ or word-final ς |
No support | ? | 14.0 (14) | No support | No support | No support |
[1] The text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See Chromium bug 129669.
[2] Since Opera 15.0 (due to the switch to Blink) the text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See Chromium bug 129669.
[3] The text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See WebKit bug 3409.
[4] The capitalize
keyword was under-specified in CSS 1 and CSS 2.1. There were differences between browsers in the way the first letter was calculated (Firefox considered — and _ as letters, but not the others. Both Webkit and Gecko incorrectly considered letter-based symbols like ⓐ
to be real letters. Internet Explorer 9 was the closest to the CSS 2 definition, but with some weird cases). By precisely defining the correct behavior, CSS Text Level 3 cleans this mess up. The capitalize
line in the browser compatibility table contains the version the different engines started to support this now precisely defined behavior.
See also
font-variant