Unicode Superscript and Subscript Chart

Find a raised or lowered letter, check its code point, and see exactly what is missing. This chart compares the official Unicode 17.0 and 18.0 data; it does not substitute lookalike letters.

Fancy Text GeneratorIndependent reference, derived from Unicode dataAnalysis version 1.0.0
On this page

Select a glyph in the chart to copy it with your device’s normal copy command. Every match includes a code point and the Unicode version that first encoded it. “No direct mapping” has a precise meaning: no character meets the filter described below.

Coverage at a glance

Under our direct compatibility-mapping filter, Unicode 18.0 covers all 26 lowercase superscript letters, 23 uppercase superscript letters, 20 lowercase subscript letters and all ten digits in both positions. There are no uppercase subscript matches. The uppercase superscript gaps are X, Y and Z; lowercase subscript gaps are b, c, d, f, g and q.

The 62 base characters create 124 possible base-and-position cells. Unicode 18 has 91 matching encoded characters across 89 covered cells; Unicode 17 has 88 characters across 86 cells. Counts differ because superscript a and o each have more than one matching form. A compatibility mapping groups these forms by base; it does not make their meanings interchangeable.

Distinct bases covered, rather than number of code points
Unicode releaseRaised A–Z / a–z / 0–9Lowered A–Z / a–z / 0–9
17.0.023 / 26 / 100 / 17 / 10
18.0.023 / 26 / 100 / 20 / 10

Lowercase letters

Superscript q is encoded as U+107A5 (𐞥), a modifier letter added in Unicode 14.0. An older list or font can omit it. The chart lists actual encoded characters, not a claim that your current font can draw every one.

Lowercase Latin letters · direct ASCII mappings in Unicode 18.0
BaseSuperscriptSubscript
a
ªU+00AAfeminine ordinal indicator
Since Unicode 1.1
ᵃU+1D43modifier letter small a
Since Unicode 4.0
ₐU+2090latin subscript small letter a
Since Unicode 4.1
b
ᵇU+1D47modifier letter small b
Since Unicode 4.0
No direct mapping
c
ᶜU+1D9Cmodifier letter small c
Since Unicode 4.1
No direct mapping
d
ᵈU+1D48modifier letter small d
Since Unicode 4.0
No direct mapping
e
ᵉU+1D49modifier letter small e
Since Unicode 4.0
ₑU+2091latin subscript small letter e
Since Unicode 4.1
f
ᶠU+1DA0modifier letter small f
Since Unicode 4.1
No direct mapping
g
ᵍU+1D4Dmodifier letter small g
Since Unicode 4.0
No direct mapping
h
ʰU+02B0modifier letter small h
Since Unicode 1.1
ₕU+2095latin subscript small letter h
Since Unicode 6.0
i
ⁱU+2071superscript latin small letter i
Since Unicode 3.2
ᵢU+1D62latin subscript small letter i
Since Unicode 4.0
j
ʲU+02B2modifier letter small j
Since Unicode 1.1
ⱼU+2C7Clatin subscript small letter j
Since Unicode 5.1
k
ᵏU+1D4Fmodifier letter small k
Since Unicode 4.0
ₖU+2096latin subscript small letter k
Since Unicode 6.0
l
ˡU+02E1modifier letter small l
Since Unicode 1.1
ₗU+2097latin subscript small letter l
Since Unicode 6.0
m
ᵐU+1D50modifier letter small m
Since Unicode 4.0
ₘU+2098latin subscript small letter m
Since Unicode 6.0
n
ⁿU+207Fsuperscript latin small letter n
Since Unicode 1.1
ₙU+2099latin subscript small letter n
Since Unicode 6.0
o
ºU+00BAmasculine ordinal indicator
Since Unicode 1.1
ᵒU+1D52modifier letter small o
Since Unicode 4.0
ₒU+2092latin subscript small letter o
Since Unicode 4.1
p
ᵖU+1D56modifier letter small p
Since Unicode 4.0
ₚU+209Alatin subscript small letter p
Since Unicode 6.0
q
𐞥U+107A5modifier letter small q
Since Unicode 14.0
No direct mapping
r
ʳU+02B3modifier letter small r
Since Unicode 1.1
ᵣU+1D63latin subscript small letter r
Since Unicode 4.0
s
ˢU+02E2modifier letter small s
Since Unicode 1.1
ₛU+209Blatin subscript small letter s
Since Unicode 6.0
t
ᵗU+1D57modifier letter small t
Since Unicode 4.0
ₜU+209Clatin subscript small letter t
Since Unicode 6.0
u
ᵘU+1D58modifier letter small u
Since Unicode 4.0
ᵤU+1D64latin subscript small letter u
Since Unicode 4.0
v
ᵛU+1D5Bmodifier letter small v
Since Unicode 4.0
ᵥU+1D65latin subscript small letter v
Since Unicode 4.0
w
ʷU+02B7modifier letter small w
Since Unicode 1.1
₝U+209Dlatin subscript small letter w
Since Unicode 18.0 · new in 18
x
ˣU+02E3modifier letter small x
Since Unicode 1.1
ₓU+2093latin subscript small letter x
Since Unicode 4.1
y
ʸU+02B8modifier letter small y
Since Unicode 1.1
₞U+209Elatin subscript small letter y
Since Unicode 18.0 · new in 18
z
ᶻU+1DBBmodifier letter small z
Since Unicode 4.1
₟U+209Flatin subscript small letter z
Since Unicode 18.0 · new in 18

Uppercase letters

Case matters. Superscript Q is U+A7F4 (ꟴ), while lowercase q is a different character. The blank subscript column is intentional: this filter finds no direct uppercase ASCII subscript mappings.

Uppercase Latin letters · direct ASCII mappings in Unicode 18.0
BaseSuperscriptSubscript
A
ᴬU+1D2Cmodifier letter capital a
Since Unicode 4.0
No direct mapping
B
ᴮU+1D2Emodifier letter capital b
Since Unicode 4.0
No direct mapping
C
ꟲU+A7F2modifier letter capital c
Since Unicode 14.0
No direct mapping
D
ᴰU+1D30modifier letter capital d
Since Unicode 4.0
No direct mapping
E
ᴱU+1D31modifier letter capital e
Since Unicode 4.0
No direct mapping
F
ꟳU+A7F3modifier letter capital f
Since Unicode 14.0
No direct mapping
G
ᴳU+1D33modifier letter capital g
Since Unicode 4.0
No direct mapping
H
ᴴU+1D34modifier letter capital h
Since Unicode 4.0
No direct mapping
I
ᴵU+1D35modifier letter capital i
Since Unicode 4.0
No direct mapping
J
ᴶU+1D36modifier letter capital j
Since Unicode 4.0
No direct mapping
K
ᴷU+1D37modifier letter capital k
Since Unicode 4.0
No direct mapping
L
ᴸU+1D38modifier letter capital l
Since Unicode 4.0
No direct mapping
M
ᴹU+1D39modifier letter capital m
Since Unicode 4.0
No direct mapping
N
ᴺU+1D3Amodifier letter capital n
Since Unicode 4.0
No direct mapping
O
ᴼU+1D3Cmodifier letter capital o
Since Unicode 4.0
No direct mapping
P
ᴾU+1D3Emodifier letter capital p
Since Unicode 4.0
No direct mapping
Q
ꟴU+A7F4modifier letter capital q
Since Unicode 14.0
No direct mapping
R
ᴿU+1D3Fmodifier letter capital r
Since Unicode 4.0
No direct mapping
S
꟱U+A7F1modifier letter capital s
Since Unicode 17.0
No direct mapping
T
ᵀU+1D40modifier letter capital t
Since Unicode 4.0
No direct mapping
U
ᵁU+1D41modifier letter capital u
Since Unicode 4.0
No direct mapping
V
ⱽU+2C7Dmodifier letter capital v
Since Unicode 5.1
No direct mapping
W
ᵂU+1D42modifier letter capital w
Since Unicode 4.0
No direct mapping
XNo direct mappingNo direct mapping
YNo direct mappingNo direct mapping
ZNo direct mappingNo direct mapping

Digits

All ten digits have both forms, but their code points are not one continuous range: ¹, ² and ³ are in Latin-1 Supplement, while the other superscript digits are in the Superscripts and Subscripts block. Use the code point beside the character rather than calculating it from a single offset.

Decimal digits · direct ASCII mappings in Unicode 18.0
BaseSuperscriptSubscript
0
⁰U+2070superscript zero
Since Unicode 1.1
₀U+2080subscript zero
Since Unicode 1.1
1
¹U+00B9superscript one
Since Unicode 1.1
₁U+2081subscript one
Since Unicode 1.1
2
²U+00B2superscript two
Since Unicode 1.1
₂U+2082subscript two
Since Unicode 1.1
3
³U+00B3superscript three
Since Unicode 1.1
₃U+2083subscript three
Since Unicode 1.1
4
⁴U+2074superscript four
Since Unicode 1.1
₄U+2084subscript four
Since Unicode 1.1
5
⁵U+2075superscript five
Since Unicode 1.1
₅U+2085subscript five
Since Unicode 1.1
6
⁶U+2076superscript six
Since Unicode 1.1
₆U+2086subscript six
Since Unicode 1.1
7
⁷U+2077superscript seven
Since Unicode 1.1
₇U+2087subscript seven
Since Unicode 1.1
8
⁸U+2078superscript eight
Since Unicode 1.1
₈U+2088subscript eight
Since Unicode 1.1
9
⁹U+2079superscript nine
Since Unicode 1.1
₉U+2089subscript nine
Since Unicode 1.1

What changed in Unicode 18

The comparison adds three direct lowercase subscript mappings: w (U+209D, ₝), y (U+209E, ₞) and z (U+209F, ₟). All three have age 18.0 in DerivedAge.txt. They have no match in Unicode 17 under the same filter. We found no removed code points in this selected set.

These additions do not guarantee immediate support in operating systems, browsers or fonts. A missing-glyph box means the display stack may need newer character coverage; using a letter from another script as a visual substitute would change the text.

Method and sources

We parsed the complete, final UnicodeData 17.0.0 and UnicodeData 18.0.0 files. We kept a record only when its decomposition field (zero-based field 5) is exactly <super> or <sub> followed by one ASCII letter A–Z, a–z or digit 0–9. Every matching character is retained, including alternative forms. We joined the releases by code point and read each character’s age from DerivedAge 18.0.0.

Unicode Standard Annex #44 defines the data properties. This chart’s counts, organization and release comparison are our reproducible derivation. The underlying Unicode data and character names are Unicode’s work; this site is independent of the Unicode Consortium. Source hashes, the exact filter and the calculation are downloadable below.

Using these characters

Character lookup is different from formatting

The Unicode Standard’s discussion of compatibility characters explains the specialized uses of these forms. This inventory excludes operators, Greek and IPA bases, multi-character decompositions and combining marks. “No direct mapping” is a result of that scope, not a claim that no other visual representation is possible.

Normalization can remove the raised or lowered distinction

Compatibility normalization, including NFKC, can map these forms back to their base letters or digits. See Unicode Standard Annex #15. We read pinned data files; we did not benchmark a browser’s normalization implementation. An older runtime can use an older Unicode version.

Keep meaning and accessibility intact

Use an editor’s semantic superscript or subscript formatting for equations and accessible documents. Decorative characters can be pronounced differently by screen readers and can affect searching or text matching. Check the destination, keep important wording in ordinary text, and do not treat the chart as a device-compatibility guarantee.

Data and reproduction

Download the three source files listed in sources.json using their specified filenames, then run:

node reproduce.mjs ./ucd-input ./reproduced

The script verifies all source hashes and produces inventory.json and characters.csv for a byte-for-byte comparison with these downloads. It makes no network requests and does not rely on the runtime’s built-in Unicode tables. Our reproduction code is available under the MIT license; Unicode-derived records retain the linked Unicode license.

Corrections: report a code point, Unicode version or calculation issue through our contact page. Change record: November 3, 2026 — first analysis, version 1.0.0, comparing the final Unicode 17.0 and 18.0 data. No device or font tests are claimed.

Try a short phrase

Our small-text tool previews a practical selection of characters. Its supported set can be smaller than this reference.

Open small text generator →