Type a tick and you may get two different things, depending on exactly how you typed it. U+2714 entered Unicode in 1991 with the rest of the Dingbats block, whose source was Hermann Zapf's 1978 ornament font, and its Unicode name is HEAVY CHECK MARK: a black typographic tick, no colour, no emoji behaviour. Then emoji arrived, and the same code point acquired an optional emoji form — reached by following it with a variation selector, U+FE0F. So ✔ takes your font and your colour, while ✔️ arrives as an icon in whatever green or black the platform picked. Same character underneath. The invisible byte after it decides.
This is why a tick pasted into a document sometimes comes out oversized and coloured for no apparent reason, and why the bare form gets its own page here.
The neighbours matter more than people expect. Check mark button is the green-boxed one, emoji only, with no text form at all. Ballot box with check is a tick inside a checkbox, which is what a list of completed items actually wants. And for a plain tick that behaves like text and respects your styling, U+2714 without the selector is the right answer — and the one most keyboards make hardest to reach.
About Check Mark
Check Mark is the Unicode character ✔️ at codepoint U+2714 in the Dingbats block of the Basic Multilingual Plane (BMP).
Technical Reference
| Unicode Codepoint | |
| Decimal | |
| UTF-8 (hex) | |
| UTF-16 (hex) | |
| HEX Entity | |
| CSS (\xxxx) | |
| JavaScript | |
| Python |
How to Use Check Mark
To use the Check Mark symbol (✔️) in HTML, insert the
entity ✔️ directly into your markup.
In CSS pseudo-elements use content: '\2714';.
In JavaScript and TypeScript the escape '\u2714' evaluates to ✔️. In Python source, write '\u2714'.
The character encodes to E2 9C 94 as UTF-8 bytes and 2714 as UTF-16 code units. Its decimal codepoint is 10004.
This is a fully-qualified emoji and should render with colour on iOS, Android, Windows and macOS. Appearance may vary between platforms, but the underlying codepoint is identical everywhere.