About Bullet

Bullet is the Unicode character • at codepoint U+2022 in the General Punctuation block of the Basic Multilingual Plane (BMP).

Jump to developer notes ↓

Reference

The list marker you can actually type. General category Po, in General Punctuation since Unicode 1.1, and the one list marker Windows-1252 carries — byte 0x95, which is why it survived the eight-bit era and its neighbours did not. Unicode gives it the formal alias black small circle and cross-references five lookalikes, of which only bullet operator is a mathematical operator rather than punctuation or a geometric shape. HTML names it twice, • and •. Two cautions come with it. East Asian Width is Ambiguous, so its rendered width depends on the surrounding context. And a typed bullet is not list markup: the character is what a screen reader announces, and the structure — item count, nesting, where the list ends — is what it cannot announce.

Typical uses

  • Plain-text lists, where no markup is available to carry the structure
  • Separators in bylines, breadcrumbs and footers — its commonest job on the live web
  • Placeholder dots in masked fields, though black circle is the heavier choice

At a glance

  • U+2022, General Punctuation; Unicode 1.1; general category Po
  • East Asian Width Ambiguous; line break class AL
  • HTML: • or •. Windows-1252 0x95 — the only list marker with a slot
  • Unicode's alias: black small circle. Not the same as bullet operator, which is mathematics

Historical Notes

Origins

The character's own record is short: it arrived with Unicode 1.1 in 1993, in the original General Punctuation block, alongside triangular bullet and hyphen bullet. What the standard adds is a formal alias — black small circle — which places it as a shape first and a list marker by convention. Claims about which style guide first sanctioned the bullet circulate widely and are not settled by any source consulted here.

The byte that mattered

Windows-1252 assigns this character 0x95. That single slot is most of the story of why it is the bullet people actually use: through the whole eight-bit era it could be typed, stored and transmitted where the alternatives could not. Of all the list markers Unicode encodes, this is the one Windows-1252 made typable, and it is the one people actually type.

A classification oddity

Unicode's own mathematical classification, MathClass-15, files this character as class B, binary operator — the same class it gives bullet operator. Two characters that the main database separates into punctuation and mathematics are, for the purposes of maths layout, treated alike. That file is explicitly not part of the UCD and carries its own caveats.

Developer Notes

Unicode Codepoint
Decimal
UTF-8 (hex)
UTF-16 (hex)
HEX Entity
HTML Entity
CSS (\xxxx)
JavaScript
Python

How to Use Bullet

To use the Bullet symbol (•) in HTML, insert the entity • directly into your markup. The decimal entity • works in any HTML-serialised document.

In CSS pseudo-elements use content: '\2022';. In JavaScript and TypeScript the escape '\u2022' evaluates to •. In Python source, write '\u2022'.

The character encodes to E2 80 A2 as UTF-8 bytes and 2022 as UTF-16 code units. Its decimal codepoint is 8226.

This is a text-based Unicode character. It will render in the current font on most platforms. If a font lacks this glyph, the browser may show a placeholder or fall back to a system font.

Things to know

  • A typed bullet is not a list. The character is read out; the structure is not. Use `<ul>` and let the marker be drawn — which is also why the character almost never appears in the text of a page that is full of lists.
  • East Asian Width is Ambiguous. In a terminal or a monospaced table its width depends on the context the renderer assumes, which is a real alignment problem and a non-issue in body copy.
  • Both &bull; and &bullet; produce it. Duplicate entity names are common in the WHATWG table; neither is more correct.
  • Windows-1252 0x95 is why mojibake from this character is so recognisable: read as UTF-8 and re-encoded, the byte sequence surfaces as the familiar `•`.
  • Unicode's confusables data (UTS #39) maps it to U+00B7 MIDDLE DOT — and maps bullet operator to the same target, so for security purposes the standard treats all three as one shape. Normalise before comparing.
  • It carries the Pattern_Syntax property, so a language following Unicode's identifier rules will refuse it in a name. That is deliberate, not a limitation to work around.

Comparisons

In the Wild

MDN's reference page for the `list-style-type` property runs to 42,069 characters about how list markers are drawn, and on 5 August 2026 it contained exactly one literal bullet: a separator in the page footer, between "View this page on GitHub" and "Report a problem with this content". Every actual bullet on that page is drawn by the stylesheet and is not in the text at all.

The other sightings that day were the same job. A classical music label's home page used nine, all separators between links. Chinese Wikipedia's article on China carried two, on a page that also carried 108 middle dots — the CJK separator doing the work people assume the bullet does.

That is this character's life on the web. Where it appears in text at all it is usually punctuating navigation, not marking a list. Pages change; this is what those showed on the day.

FAQ

Is a typed bullet good enough for a list?

Not for assistive technology. A screen reader announces the character but has no list to describe — no item count, no nesting, no boundaries. Real markup supplies all three.

Why is it barely on the pages I read?

Because bullets in real lists are drawn by the stylesheet, not encoded in the text. Where the character does appear it is usually a separator between links.

What is the difference from bullet operator?

Category. This one is punctuation (Po); that one is a mathematical operator (Sm), in the Mathematical Operators block. They can be drawn almost identically and are different characters to anything doing the reading.

Does it have an HTML entity?

Two: &bull; and &bullet;. Both resolve to U+2022.

Why do bullets sometimes appear as `•`?

That is a Windows-1252 byte read as if it were UTF-8. The character's 0x95 slot in that code page is the reason this particular corruption is so common.

Similar Symbols