Blog / Compare

Bullets and shapes: • ‣ ● ○ ⁃ ∙

Bullet U+2022
Black Circle U+25CF
White Circle U+25CB
Hyphen Bullet U+2043
Bullet Operator U+2219

When to use which

CharacterWhen to use itWatch out for
BulletThe default marker in plain text: email, a commit message, a README, a slide, any field that offers no markup.Typing it does not make a list. A screen reader announces the word bullet on each line and loses the count, the nesting and the boundaries.
Triangular BulletSecond-level markers in a nested outline, or a cue that something expands.The forward-pointing shape reads as an action in an interface. Avoid it for a static list where nothing unfolds.
Black CircleA heavier marker than a standard bullet, and the solid dot in plain-text interfaces: masked password characters, a selected radio button, the current page in a row of pagination.The emoji at U+26AB is also called black circle in pickers and behaves nothing alike. It arrives pre-coloured at icon size and ignores your CSS.
White CircleThe hollow counterpart: an unselected option, an unreached step, an empty marker in a legend.Not the ideographic zero at U+3007, which is a CJK character meaning nought and sets at full width in Japanese text.
Hyphen BulletDash-led lists, which are the ordinary convention in German and French publishing rather than an English quirk.Uncommon enough to warrant a rendering check before you build on it. Any dash-led list you meet in the wild is almost certainly a plain ASCII hyphen doing the job by eye.
Bullet OperatorNothing, in a list. It is a mathematical operator that happens to be bullet-shaped.Choosing it because it looks right is the classic error. MathML, computer algebra and accessibility tooling all key off the character, so a formula built on it can render beautifully and be read as nothing in particular.

The most consequential thing about a typed bullet is that it does not make a list. Start each line with one and you get something that looks like a list without being one, and the failure is subtler than people expect, because a screen reader does read the character — announcing bullet on every line. What disappears is the structure around it: the item count, where the list starts and stops, how deep the nesting runs, and the ability to jump from one list to the next. Real markup announces a list of three items. A typed bullet announces the word bullet three times.

That is not an argument for never typing one, because plenty of places offer no markup at all — an email, a commit message, a plain-text README, a slide, a form field. In those, the bullet is the default and the right default. It is also newer than it feels: before word processors the asterisk did the job, and the earliest style guide known to define a use for the bullet is the New York News Type Book of 1950.

The alternatives divide by weight and by fill. Black circle sits in the middle of Unicode's range of filled circles, heavier than a bullet and smaller than the black large circle at U+2B24, and it earns its keep in plain-text interfaces as much as in lists: masked password characters, a selected radio button, the filled dot in a row of pagination. White circle is its hollow counterpart and carries a meaning the filled one cannot — not selected, not reached, not filled in. In Japan the pairing runs deeper than that: a circle marks a correct answer where Western schools use a tick, and a cross marks a wrong one. That convention is why circle confirmed and cross cancelled on every PlayStation from 1994 until Sony standardised on cross-to-confirm worldwide for the PS5, to the displeasure of players who had read the marks the other way their whole lives.

Triangular bullet points, and that is the whole of its character. It is why the same glyph does double duty as a second-level marker in a nested outline and as an expand or play cue in interfaces and file managers. Use it where something genuinely unfolds, or where a nested level ought to feel subordinate to the round bullets above it. Hyphen bullet exists because not every language bullets with a dot: German has a word for the dash that opens a list item, Spiegelstrich, and French publishing sets lists with a tiret. The character keeps that convention distinct from an actual hyphen, which software treats as part of a word for hyphenation, line breaking, search normalisation and spell-checking alike.

Bullet operator is the one to keep out of your lists altogether. It is a mathematical operator drawn like a bullet, which sounds as though it ought to be the multiplication dot and is not — the standard points at dot operator, U+22C5, for multiplication and gives this character no meaning beyond the shape it is named for. It is in the standard chiefly so that text from IBM's old code page 437 could round-trip. How heavily a font draws it is a font decision too, so the same expression can look properly set in one face and clumsy in the next, which is a poor thing to leave to chance in notation.

If circles are not the register you want, black square and white square do the same filled-and-hollow pairing with a harder edge, and the rule that governs all of them is the same: choose by meaning rather than by which glyph happens to look right at the size you are viewing. In HTML the bullet is • and the rest are numeric entities; on a Mac, Option-8 produces •, and on Windows Alt+0149 does. And in any document that supports real lists, type none of them — let the markup supply the marker and spend the decision on something the reader can act on.

← More from the blog