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.
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.
| Unicode release | Raised A–Z / a–z / 0–9 | Lowered A–Z / a–z / 0–9 |
|---|---|---|
| 17.0.0 | 23 / 26 / 10 | 0 / 17 / 10 |
| 18.0.0 | 23 / 26 / 10 | 0 / 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.
| Base | Superscript | Subscript |
|---|---|---|
| a | ª U+00AAfeminine ordinal indicatorSince Unicode 1.1 ᵃ U+1D43modifier letter small aSince Unicode 4.0 | ₐ U+2090latin subscript small letter aSince Unicode 4.1 |
| b | ᵇ U+1D47modifier letter small bSince Unicode 4.0 | No direct mapping |
| c | ᶜ U+1D9Cmodifier letter small cSince Unicode 4.1 | No direct mapping |
| d | ᵈ U+1D48modifier letter small dSince Unicode 4.0 | No direct mapping |
| e | ᵉ U+1D49modifier letter small eSince Unicode 4.0 | ₑ U+2091latin subscript small letter eSince Unicode 4.1 |
| f | ᶠ U+1DA0modifier letter small fSince Unicode 4.1 | No direct mapping |
| g | ᵍ U+1D4Dmodifier letter small gSince Unicode 4.0 | No direct mapping |
| h | ʰ U+02B0modifier letter small hSince Unicode 1.1 | ₕ U+2095latin subscript small letter hSince Unicode 6.0 |
| i | ⁱ U+2071superscript latin small letter iSince Unicode 3.2 | ᵢ U+1D62latin subscript small letter iSince Unicode 4.0 |
| j | ʲ U+02B2modifier letter small jSince Unicode 1.1 | ⱼ U+2C7Clatin subscript small letter jSince Unicode 5.1 |
| k | ᵏ U+1D4Fmodifier letter small kSince Unicode 4.0 | ₖ U+2096latin subscript small letter kSince Unicode 6.0 |
| l | ˡ U+02E1modifier letter small lSince Unicode 1.1 | ₗ U+2097latin subscript small letter lSince Unicode 6.0 |
| m | ᵐ U+1D50modifier letter small mSince Unicode 4.0 | ₘ U+2098latin subscript small letter mSince Unicode 6.0 |
| n | ⁿ U+207Fsuperscript latin small letter nSince Unicode 1.1 | ₙ U+2099latin subscript small letter nSince Unicode 6.0 |
| o | º U+00BAmasculine ordinal indicatorSince Unicode 1.1 ᵒ U+1D52modifier letter small oSince Unicode 4.0 | ₒ U+2092latin subscript small letter oSince Unicode 4.1 |
| p | ᵖ U+1D56modifier letter small pSince Unicode 4.0 | ₚ U+209Alatin subscript small letter pSince Unicode 6.0 |
| q | 𐞥 U+107A5modifier letter small qSince Unicode 14.0 | No direct mapping |
| r | ʳ U+02B3modifier letter small rSince Unicode 1.1 | ᵣ U+1D63latin subscript small letter rSince Unicode 4.0 |
| s | ˢ U+02E2modifier letter small sSince Unicode 1.1 | ₛ U+209Blatin subscript small letter sSince Unicode 6.0 |
| t | ᵗ U+1D57modifier letter small tSince Unicode 4.0 | ₜ U+209Clatin subscript small letter tSince Unicode 6.0 |
| u | ᵘ U+1D58modifier letter small uSince Unicode 4.0 | ᵤ U+1D64latin subscript small letter uSince Unicode 4.0 |
| v | ᵛ U+1D5Bmodifier letter small vSince Unicode 4.0 | ᵥ U+1D65latin subscript small letter vSince Unicode 4.0 |
| w | ʷ U+02B7modifier letter small wSince Unicode 1.1 | U+209Dlatin subscript small letter wSince Unicode 18.0 · new in 18 |
| x | ˣ U+02E3modifier letter small xSince Unicode 1.1 | ₓ U+2093latin subscript small letter xSince Unicode 4.1 |
| y | ʸ U+02B8modifier letter small ySince Unicode 1.1 | U+209Elatin subscript small letter ySince Unicode 18.0 · new in 18 |
| z | ᶻ U+1DBBmodifier letter small zSince Unicode 4.1 | U+209Flatin subscript small letter zSince 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.
| Base | Superscript | Subscript |
|---|---|---|
| A | ᴬ U+1D2Cmodifier letter capital aSince Unicode 4.0 | No direct mapping |
| B | ᴮ U+1D2Emodifier letter capital bSince Unicode 4.0 | No direct mapping |
| C | ꟲ U+A7F2modifier letter capital cSince Unicode 14.0 | No direct mapping |
| D | ᴰ U+1D30modifier letter capital dSince Unicode 4.0 | No direct mapping |
| E | ᴱ U+1D31modifier letter capital eSince Unicode 4.0 | No direct mapping |
| F | ꟳ U+A7F3modifier letter capital fSince Unicode 14.0 | No direct mapping |
| G | ᴳ U+1D33modifier letter capital gSince Unicode 4.0 | No direct mapping |
| H | ᴴ U+1D34modifier letter capital hSince Unicode 4.0 | No direct mapping |
| I | ᴵ U+1D35modifier letter capital iSince Unicode 4.0 | No direct mapping |
| J | ᴶ U+1D36modifier letter capital jSince Unicode 4.0 | No direct mapping |
| K | ᴷ U+1D37modifier letter capital kSince Unicode 4.0 | No direct mapping |
| L | ᴸ U+1D38modifier letter capital lSince Unicode 4.0 | No direct mapping |
| M | ᴹ U+1D39modifier letter capital mSince Unicode 4.0 | No direct mapping |
| N | ᴺ U+1D3Amodifier letter capital nSince Unicode 4.0 | No direct mapping |
| O | ᴼ U+1D3Cmodifier letter capital oSince Unicode 4.0 | No direct mapping |
| P | ᴾ U+1D3Emodifier letter capital pSince Unicode 4.0 | No direct mapping |
| Q | ꟴ U+A7F4modifier letter capital qSince Unicode 14.0 | No direct mapping |
| R | ᴿ U+1D3Fmodifier letter capital rSince Unicode 4.0 | No direct mapping |
| S | U+A7F1modifier letter capital sSince Unicode 17.0 | No direct mapping |
| T | ᵀ U+1D40modifier letter capital tSince Unicode 4.0 | No direct mapping |
| U | ᵁ U+1D41modifier letter capital uSince Unicode 4.0 | No direct mapping |
| V | ⱽ U+2C7Dmodifier letter capital vSince Unicode 5.1 | No direct mapping |
| W | ᵂ U+1D42modifier letter capital wSince Unicode 4.0 | No direct mapping |
| X | No direct mapping | No direct mapping |
| Y | No direct mapping | No direct mapping |
| Z | No direct mapping | No 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.
| Base | Superscript | Subscript |
|---|---|---|
| 0 | ⁰ U+2070superscript zeroSince Unicode 1.1 | ₀ U+2080subscript zeroSince Unicode 1.1 |
| 1 | ¹ U+00B9superscript oneSince Unicode 1.1 | ₁ U+2081subscript oneSince Unicode 1.1 |
| 2 | ² U+00B2superscript twoSince Unicode 1.1 | ₂ U+2082subscript twoSince Unicode 1.1 |
| 3 | ³ U+00B3superscript threeSince Unicode 1.1 | ₃ U+2083subscript threeSince Unicode 1.1 |
| 4 | ⁴ U+2074superscript fourSince Unicode 1.1 | ₄ U+2084subscript fourSince Unicode 1.1 |
| 5 | ⁵ U+2075superscript fiveSince Unicode 1.1 | ₅ U+2085subscript fiveSince Unicode 1.1 |
| 6 | ⁶ U+2076superscript sixSince Unicode 1.1 | ₆ U+2086subscript sixSince Unicode 1.1 |
| 7 | ⁷ U+2077superscript sevenSince Unicode 1.1 | ₇ U+2087subscript sevenSince Unicode 1.1 |
| 8 | ⁸ U+2078superscript eightSince Unicode 1.1 | ₈ U+2088subscript eightSince Unicode 1.1 |
| 9 | ⁹ U+2079superscript nineSince Unicode 1.1 | ₉ U+2089subscript nineSince 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
- Character inventory (CSV, 91 records)
- Inventory, coverage and version differences (JSON)
- Reproduction script (Node.js, no dependencies)
- Source URLs and SHA-256 hashes
- Method and version policy · Scope and limitations
- Unicode data license
Download the three source files listed in sources.json using their specified filenames, then run:
node reproduce.mjs ./ucd-input ./reproducedThe 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 →