Minus vs Hyphen vs Dash: Five Characters That Look Like a Line
- ○ 1. En Dash vs Em Dash: When to Use – and —
- ○ 2. Curly Quotes vs Straight Quotes: Typography's Most Common Mix-Up
- ○ 3. Ellipsis (…) vs Three Dots (...): One Character or Three?
- ○ 4. Multiplication Sign (×) vs Letter X: Spot the Difference
- ● 5. Minus vs Hyphen vs Dash: Five Characters That Look Like a Line
- ○ 6. Zero vs Letter O: Unicode Confusables and Homograph Attacks
- ○ 7. Space Characters in Unicode: 20+ Invisible Characters Compared
- ○ 8. Bullet (•) vs Middle Dot (·): Small Dots, Big Differences
Take a close look at these five characters:
- ‐ – — −
From left to right: the hyphen-minus, the true hyphen, the en dash, the em dash, and the minus sign. In most fonts, they look like progressively longer horizontal lines. In most coding contexts, the first one does the work of all five. But when typographic precision matters — and in web development, it often does — knowing which character to use and when makes the difference between professional output and sloppy markup.
This is the most complex comparison in the Symbol Showdown series, because the five characters exist at the intersection of typographic tradition, mathematical notation, and the compromises that ASCII forced on digital text.
All Five Characters at a Glance
| Character | Name | Unicode | HTML Entity | Approx. Width | Primary Use |
|---|---|---|---|---|---|
| - | Hyphen-Minus | U+002D | - |
Shortest | Everything (ASCII catch-all) |
| ‐ | Hyphen | U+2010 | ‐ |
Same as U+002D | Word-breaking hyphen |
| – | En Dash | U+2013 | – |
Medium | Ranges, compounds |
| — | Em Dash | U+2014 | — |
Longest | Parenthetical, break |
| − | Minus Sign | U+2212 | − |
Between hyphen and en | Mathematics |
There are also several additional horizontal-line characters worth knowing:
| Character | Name | Unicode | Use |
|---|---|---|---|
| ― | Horizontal Bar | U+2015 | Block quotes, dialogue attribution |
| ‒ | Figure Dash | U+2012 | Telephone numbers (same width as a digit) |
| ﹣ | Small Hyphen-Minus | U+FE63 | Compatibility character (avoid) |
| - | Fullwidth Hyphen-Minus | U+FF0D | CJK compatibility (avoid in English) |
| ⁻ | Superscript Minus | U+207B | Exponents: 10⁻³ |
The Hyphen-Minus: The Character That Does Everything (Badly)
The hyphen-minus (-, U+002D) is the workhorse of ASCII-era computing. Before Unicode, there was one key for "a horizontal line character" on keyboards and typewriters, and it was pressed whenever any of the following was needed:
- A hyphen in a compound word
- A minus sign in arithmetic
- A dash in punctuation
- A negative number indicator
- A command-line option flag (
--help,-v) - A separator in identifiers (
my-component,kebab-case) - A bullet point in plain text
The hyphen-minus is technically correct only in the compound-word sense (and even then, U+2010 is typographically preferable). In every other context, a more specific character exists and should be used in polished text.
That said, the hyphen-minus remains the right choice in all code contexts: programming languages, URLs, filenames, CSS class names, and command-line arguments. In these contexts, the semantics come from position and syntax, not from the specific Unicode code point.
The True Hyphen (U+2010)
The true hyphen (‐, U+2010) looks identical to the hyphen-minus in most fonts. Its dedicated purpose is word-breaking and hyphenated compound words:
<!-- Ambiguous: hyphen-minus used as hyphen -->
<p>He had a well-known reputation.</p>
<!-- Typographically correct: true hyphen -->
<p>He had a well‐known reputation.</p>
In practice, virtually no one uses U+2010 explicitly — CSS hyphens: auto and the soft hyphen (­, U+00AD) handle automatic hyphenation. The true hyphen exists primarily for completeness in typographic systems and Unicode compliance.
The key distinction from hyphen-minus: the true hyphen U+2010 should never line-break, whereas the hyphen-minus may allow breaks in some rendering engines. For precise control over line-breaking, use CSS and soft hyphens rather than different hyphen characters.
The En Dash (U+2013)
The en dash is covered in depth in the first article of this series, but here's a focused summary of its visual and functional position among horizontal-line characters:
Width: Approximately the width of the capital letter N — about twice the width of a hyphen, half the width of an em dash.
Visual appearance: In most fonts, the en dash sits higher on the baseline than the hyphen-minus, vertically centered in the line height.
Primary uses:
- Numeric and date ranges: 1939–1945, Pages 10–25
- Scores: 3–1
- Compound adjectives involving multi-word elements: New York–based
<!-- Range -->
<p>The conference runs June 14–16.</p>
<!-- Score -->
<p>Final score: Arsenal 2–1 Chelsea</p>
<!-- Compound with multi-word part -->
<p>A post–World War II economic boom</p>
The Em Dash (U+2014)
The em dash is the long, dramatic dash. It draws attention, creates emphasis, and replaces parentheses or colons in certain constructions:
<!-- Parenthetical aside -->
<p>The project—already three months late—finally launched.</p>
<!-- Summary after list -->
<p>JavaScript, Python, Rust—all are valid choices.</p>
<!-- Attribution -->
<blockquote>
<p>To be or not to be.</p>
<footer>—Shakespeare</footer>
</blockquote>
Spacing: American style uses no spaces (word—word); British and some international styles use spaces (word — word). CSS cannot automatically manage this — it must be encoded in the markup or text.
The Minus Sign (U+2212)
The minus sign (−, U+2212) is the mathematically correct character for subtraction. Its purpose is exclusively mathematical:
| Expression | Use | Correct Character |
|---|---|---|
| -5 | Negative number | U+2212 (−) or U+002D (-) |
| a - b | Subtraction | U+2212 (−) |
| Ctrl-C | Key combination | U+002D (-) |
| -v flag | CLI option | U+002D (-) |
The minus sign is specifically designed to be visually aligned with the plus sign (+) — same height, same stroke width — so that mathematical expressions look balanced and consistent:
5 + 3 = 8 (plus at x-height)
5 − 3 = 2 (minus sign at x-height — matches plus visually)
5 - 3 = 2 (hyphen-minus — slightly lower, slightly thinner)
The visual difference is small in body text but meaningful in displayed mathematics.
<!-- Mathematical expression with proper minus sign -->
<p>The discriminant: b² − 4ac</p>
<!-- Temperature with minus sign -->
<p>Temperature: −15°C</p>
<!-- In MathML (prefer this for formal math) -->
<math>
<mrow>
<mi>x</mi>
<mo>−</mo>
<mn>5</mn>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
The Figure Dash (U+2012)
The figure dash (‒) has a very specific typographic purpose: it is exactly the same width as a digit (a "figure" in typographic terminology). This makes it ideal for phone numbers and other numeric sequences where you want dashes to align with the digits:
<!-- Phone number with figure dash (digits remain aligned) -->
<p>Phone: 212‒555‒0100</p>
In practice, the figure dash is rarely used explicitly. Most designers rely on font features or consistent numeric character widths rather than selecting this specific character.
The Horizontal Bar (U+2015)
The horizontal bar (―, U+2015) is longer than an em dash and is used in specific typographic contexts:
- Block quotation attribution (particularly in Greek and some European typography)
- Dialogue in certain literary traditions (Irish and South American authors, including James Joyce and Gabriel García Márquez, used it instead of quotation marks for dialogue)
― I don't know what you mean, she said.
― Yes you do, he replied.
This character is uncommon in standard English typography. In English, em dash handles both dialogue interruption and attribution.
How to Type Each Character
Mac
| Character | Shortcut |
|---|---|
| Hyphen-minus (-) | - key |
| En dash (–) | ⌥- (Option + Hyphen) |
| Em dash (—) | ⌥⇧- (Option + Shift + Hyphen) |
| Minus sign (−) | No default; use Character Viewer |
| True hyphen (‐) | No default; use HTML entity |
Windows
| Character | Alt Code |
|---|---|
| Hyphen-minus (-) | - key |
| En dash (–) | Alt + 0150 |
| Em dash (—) | Alt + 0151 |
| Minus sign (−) | Alt + 8722 |
Linux
All characters via: Ctrl + Shift + U → code point (in hex) → Enter
| Character | Hex Code |
|---|---|
| Hyphen-minus | 002D |
| True hyphen | 2010 |
| En dash | 2013 |
| Em dash | 2014 |
| Minus sign | 2212 |
| Figure dash | 2012 |
| Horizontal bar | 2015 |
HTML Entities
- <!-- Hyphen-minus (literal) -->
‐ <!-- True Hyphen (U+2010) -->
– <!-- En Dash (U+2013) -->
— <!-- Em Dash (U+2014) -->
− <!-- Minus Sign (U+2212) -->
‒ <!-- Figure Dash (U+2012) -->
― <!-- Horizontal Bar (U+2015) -->
CSS Handling
When you need to control which dash character appears in generated content or need to handle line-breaking around dashes:
/* Prevent line breaks within date/number ranges */
.range {
white-space: nowrap;
}
/* Em dash parenthetical — prevent break immediately after opening dash */
.em-dash-open::after {
content: "\2014";
/* Prevent line break after opening em dash: use word-joiner */
}
/* Generate minus sign in CSS (for negative value indicators) */
.negative::before {
content: "\2212"; /* minus sign, not hyphen-minus */
color: var(--color-negative);
}
Programmatic Detection
Use our Character Analyzer to identify which horizontal-line character is present in any text. In code:
import unicodedata
HORIZONTAL_LINE_CHARS = {
'\u002D': 'Hyphen-Minus',
'\u2010': 'Hyphen',
'\u2011': 'Non-Breaking Hyphen',
'\u2012': 'Figure Dash',
'\u2013': 'En Dash',
'\u2014': 'Em Dash',
'\u2015': 'Horizontal Bar',
'\u2212': 'Minus Sign',
'\uFE58': 'Small Em Dash',
'\uFE63': 'Small Hyphen-Minus',
'\uFF0D': 'Fullwidth Hyphen-Minus',
}
def identify_dash(char: str) -> str:
return HORIZONTAL_LINE_CHARS.get(char, unicodedata.name(char, 'Unknown'))
# Example
for ch in '- ‐ – — −':
if ch.strip():
print(f"'{ch}' → {identify_dash(ch)}")
The Decision Tree
Is it in code (programming, CLI, filenames, CSS class names)?
→ Use hyphen-minus (-)
Is it a mathematical operation (subtraction, negative number)?
→ Use minus sign (−, U+2212)
Is it a range or score (numbers, dates)?
→ Use en dash (–, U+2013)
Is it parenthetical, a break, or attribution?
→ Use em dash (—, U+2014)
Is it a phone/reference number that should align with digits?
→ Use figure dash (‒, U+2012)
Is it a word-breaking hyphen in compound words?
→ Use hyphen-minus (-) or true hyphen (‐, U+2010)
Next in Series: Zero vs letter O vs Cyrillic О — characters that look identical but come from entirely different scripts, with real security implications. See Zero vs Letter O: Unicode Confusables.