Superscript text generator

Superscript text generator maps each letter and digit to its Unicode superscript counterpart so the raised styling travels with the text on copy-paste. Letters come from the Spacing Modifier Letters and Phonetic Extensions blocks; digits come from U+2070 to U+2079. Anything without a Unicode superscript form (some letters, most punctuation, accented characters) passes through unchanged. Need the matching subscript?

Input
Line 1:1 LF cloud_done Saved locally
Result Superscript Generator
0 lines 0 chars

Superscript via Unicode codepoints, not <sup>

Real superscript in HTML is <sup> and gets stripped from social bios. Unicode includes a small library of pre-baked superscript characters for footnotes, ordinals, and chemistry-style notation. This tool draws on three Unicode blocks: Spacing Modifier Letters (U+02B0 onwards), Phonetic Extensions (U+1D2C onwards), and the dedicated Superscripts and Subscripts block (U+2070 onwards).

Coverage is partial. Letters a-z mostly have superscript forms (the IPA pulled them in for phonetic notation), but Q is missing, and capitals have spotty coverage. The tool lowercases the input first to maximise the hit rate, then maps each letter and digit. Anything without a Unicode counterpart passes through verbatim, so the output is a mix of raised and baseline characters where coverage is incomplete.

Common uses: bio decoration, footnote markers in chat (a, b, c notation), ordinals (1st, 2nd, 3rd), and numeric exponents. The output reads as a single text run; no styling tags involved.

How to use superscript text generator

  1. 1Paste or type your text into the input panel on the left.
  2. 2The superscript result appears in the output panel as you type.
  3. 3Click Copy in the output header to copy the result.
  4. 4Paste into your bio, post, or footnote callout.
  5. 5Where coverage is missing (e.g. capital letters, accented chars), characters fall through at baseline.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Lowercases input first

Capital A-Z mostly do not have Unicode superscript forms (only a handful exist in the IPA blocks). The tool calls toLowerCase() on every input character before mapping, so HELLO and hello produce the same output.

Three Unicode blocks combined

Letters come from Spacing Modifier Letters (U+02B0 onwards) and Phonetic Extensions (U+1D2C onwards). Digits 0-9 come from the dedicated Superscripts block (U+2070 to U+2079). Math operators (+, -, =, parens) come from U+207A to U+207E.

Letter q has no superscript form

Unicode does not include a superscript lowercase q. The letter falls through at baseline. j and r use the IPA glyphs U+02B2 and U+02B3, which look slightly different from the rest of the run because they come from a different sub-block.

Punctuation and accents pass through

Spaces, hyphens, periods (other than the math operators noted above), accented Latin letters, emoji, and CJK pass through unchanged. The output is a mixed run if your input has anything beyond basic letters, digits, and the math operators.

Browser-side, deterministic

Single JavaScript object lookup per character. Same input always yields the same output. No upload, no log.

Worked example

Letters drop to lowercase first, then each mapped character is replaced. Digits 1 and 2 use U+00B9 and U+00B2, the equals sign uses U+207C, the space passes through.

Input
footnote 1 and 2
E = mc 2
Output
ᶠᵒᵒᵗⁿᵒᵗᵉ ¹ ᵃⁿᵈ ²
ᵉ ⁼ ᵐᶜ ²

Settings reference

Behaviour Effect on output
Letters a-z (lowercased) Mapped to superscript forms from the Spacing Modifier and Phonetic blocks. Example: a -> , n -> .
Letter q No Unicode superscript form exists. Falls through at baseline.
Capital A-Z Lowercased first, then mapped. Output reads as lowercase superscript regardless of input case.
Digits 0-9 Mapped to U+2070 / U+00B9 / U+00B2 / U+00B3 / U+2074-U+2079.
Math operators + - = ( ) mapped to U+207A / U+207B / U+207C / U+207D / U+207E.
Punctuation and accents Pass through unchanged because no superscript form exists in Unicode.
Whitespace Pass through unchanged.

FAQ

Why is the output mostly lowercase even when I typed capitals?
Unicode does not include a full set of superscript capitals. The tool lowercases input first to land in the alphabet that has the most coverage. If you need a capital effect, use small caps or bold instead.
Why does my q stay at baseline?
No superscript lowercase q exists in Unicode. Letters with no mapping pass through verbatim. The same is true of z in many fonts (the IPA glyph is sometimes drawn at full height by older fonts).
Will it work in Twitter, Instagram, Discord, TikTok?
Yes. The Superscripts and Phonetic Extensions blocks have shipped on every modern OS for over a decade. Some chat apps (older Slack mobile builds) render the IPA letters with slight kerning quirks; the digits and math operators always render cleanly.
Can I use this for math exponents?
For numeric exponents (x squared, x cubed, etc.), yes. Type x 2 and copy ˣ ². For algebraic exponents involving variables, the lowercase IPA letters work in casual posts but are not a substitute for proper math notation (use LaTeX or MathML for that).
How do I switch to subscript?
Use the subscript text generator, which is the same shape but maps to U+2080 / IPA subscript letters instead of the superscript block.