Confusable Character Highlighter
Highlight visually similar characters like l/I/1, O/0, rn/m and more to improve text readability and catch ambiguities
Input
Output
Readme
What are confusable characters?
Confusable characters are letters, digits, and symbols that look nearly identical in many fonts but are actually different characters. For example, a lowercase "l" (el), an uppercase "I" (eye), the digit "1", and the pipe symbol "|" can be almost indistinguishable in sans-serif typefaces like Arial or Helvetica. Similarly, the uppercase letter "O" and the digit "0" are frequently mixed up.
These visual ambiguities cause real problems. In programming, using a 0 (zero) instead of an O in a variable name leads to bugs that are extremely hard to spot. In security contexts, attackers exploit confusable characters to create deceptive URLs, usernames, or passwords. In everyday writing, readers may misinterpret words or codes when similar-looking characters are swapped.
Unlike homoglyphs — which involve characters from different scripts (such as a Cyrillic "а" mimicking a Latin "a") — confusable characters exist within the same ASCII set. They are part of your everyday keyboard, making them even easier to overlook.
Tool description
This tool scans your text and highlights every character that belongs to a confusable group using color-coded underlines. Each group of similar-looking characters gets its own color, making it easy to spot potential ambiguities at a glance. Hover over any highlighted character to see its exact identity, including its full name and Unicode code point.
You can select which confusable groups to highlight using the multi-select dropdown, allowing you to focus on the specific ambiguities that matter for your use case.
Examples
Input:
Il1|egal passw0rd: S5Z2B8What gets highlighted:
I,l,1,|— highlighted in red (l / I / 1 / | group)0— highlighted in blue (O / 0 group)S,5— highlighted in purple (S / 5 group)Z,2— highlighted in orange (Z / 2 group)B,8— highlighted in teal (B / 8 group)
Hover tooltip example:
Hovering over l shows: Lowercase L (U+006C)
Hovering over I shows: Uppercase I (U+0049)
Features
- Color-coded highlighting for 14 confusable character groups
- Hover tooltips showing exact character name and Unicode code point
- Selectable groups to focus on specific ambiguities
- Real-time highlighting as you type
- Summary panel showing detected groups and occurrence counts
Supported groups
| Group | Characters | Common confusion |
|---|---|---|
| l / I / 1 / | | lowercase L, uppercase I, digit 1, pipe | Most common in sans-serif fonts |
| O / 0 | uppercase O, digit 0 | Frequent in codes and passwords |
| rn / m | r, n, m | "rn" resembles "m" in many fonts |
| S / 5 | uppercase S, digit 5 | Similar curves |
| Z / 2 | uppercase Z, digit 2 | Diagonal stroke similarity |
| B / 8 | uppercase B, digit 8 | Double-loop similarity |
| G / 6 | uppercase G, digit 6 | Curved shape overlap |
| D / O / 0 | uppercase D | Resembles O and 0 in rounded fonts |
| q / g | lowercase q, lowercase g | Descender confusion |
| cl / d | lowercase c, lowercase d | "cl" resembles "d" in tight kerning |
| vv / w | lowercase v, lowercase w | "vv" resembles "w" |
| ` / ' | grave accent, apostrophe | Nearly identical in most fonts |
| ; / : | semicolon, colon | Differ only by a dot vs comma |
| - / – / — | hyphen, en dash, em dash | Varying dash lengths |
Use cases
- Code review: Catch accidental use of
Oinstead of0orlinstead of1in variable names, API keys, or configuration values - Security auditing: Detect potentially deceptive text in URLs, email addresses, or user-generated content where confusable characters could be used for phishing or spoofing
- Typography and proofreading: Verify that the correct characters are used in serial numbers, license keys, or any text where precision matters
Tips
- Use a monospaced font in your editor to reduce visual ambiguity while writing code
- If you only care about a specific confusion (e.g., l vs 1), deselect all other groups to reduce noise
- Hover over any highlighted character to confirm its exact identity via the tooltip