Subscript Generator - Convert text to Unicode subscripts

Subscript generator for plain text. Convert any string to Unicode subscript digits, lowercase letters, and operators, see live counts, and copy output.

Updated: June 19, 2026 • Free Tool

Subscript Generator

Type or paste up to 2,000 code points. Each character is checked against the Unicode Subscripts and Superscripts block.

Results

Subscript Output
0
Source Characters 0characters
Converted Characters 0characters
Unchanged Characters 0characters

What Is Subscript Generator?

A subscript generator is a Unicode text tool that rewrites plain text into subscript form using the Subscripts and Superscripts block defined by the Unicode Consortium. It walks the input one character at a time, swaps in the matching subscript code point where one exists, and leaves the rest of the text unchanged. The output is a plain Unicode string you can paste into chat apps, slides, or notes without installing a font or writing HTML.

  • Writing chemistry formulas: Render H2O, CO2, or NH3 quickly so subscripts read clearly in titles, captions, and study notes.
  • Formatting footnote markers: Convert plain digits into subscript digits for numbered footnotes, indices, and citation labels in casual writing.
  • Adding subscript styling to social posts: Drop subscript Unicode into X, Instagram, or Discord bios so the styling shows up without HTML or rich-text markup.
  • Cleaning up math notation in messages: Type x1 + y2 or a2 + b2 in plain text and let the calculator swap the digits into proper subscript form for a clean math look.

The calculator uses the Unicode subscripts block, which means the output is a real string of code points rather than styled HTML. It pastes into any modern chat app, code editor, or word processor that supports Unicode, and characters without a subscript equivalent are copied through unchanged so the rest of the text stays readable.

When you need the numeric code points for the same source text instead of the styled glyphs, ASCII converter maps each character to its decimal, hex, octal, or binary value.

How Subscript Generator Works

The calculator looks each code point up in a fixed subscript map and rebuilds the output string character by character. Anything outside the Subscripts and Superscripts block is copied through as-is.

For each character c in input: output_c = SUBSCRIPT_MAP[c] if defined, else c
  • inputText: The plain-text source string. The calculator reads up to 2,000 code points; longer input is truncated.
  • SUBSCRIPT_MAP: A lookup table that maps source characters to their Unicode subscript equivalents. Covers digits 0-9 (U+2080-U+2089), lowercase letters a, e, h, k, l, m, n, o, p, s, t, x (U+2090-U+209C with gaps), and operators + - = ( ) (U+208A-U+208E).
  • subscriptText: The output string rebuilt character by character. Converted characters carry a subscript code point; the rest stay identical to the source.
  • sourceChars: Total code points examined after truncation. Emoji and other supplementary characters each count as one code point.
  • convertedChars: Count of source characters that matched a subscript entry and were replaced.
  • unchangedChars: Count of source characters copied through because no subscript code point exists.

The lookup table covers the entire Unicode subscripts block as of Unicode 15.0: digits, the supported lowercase letters, and the small set of subscript operators and parentheses. Any code point outside that table is copied through unchanged so the output stays valid Unicode.

Convert H2O to subscript Unicode

inputText = 'H2O'

H (no entry) -> 'H'; 2 -> U+2082 = ₂; O (uppercase, no entry) -> 'O'. Output: 'H' + ₂ + 'O' = 'H₂O'.

Subscript text: H₂O. Source: 3 characters. Converted: 1. Unchanged: 2.

The digit 2 swaps into U+2082 while the uppercase letters H and O pass through because Unicode does not assign subscript code points to uppercase Latin letters.

Convert 'CO2 + H2O' with operators and digits

inputText = 'CO2 + H2O'

C -> 'C'; O -> 'O'; 2 -> ₂; space -> ' '; + -> U+208A = ₊; space -> ' '; H -> 'H'; 2 -> ₂; O -> 'O'. Output: 'C' + 'O' + ₂ + ' ' + ₊ + ' ' + 'H' + ₂ + 'O' = 'CO₂ ₊ H₂O'.

Subscript text: CO₂ ₊ H₂O. Source: 9 characters. Converted: 3. Unchanged: 6.

Digit-to-subscript substitution happens alongside operator-to-subscript substitution because both sets share the same lookup table; spaces and uppercase letters pass through.

According to Unicode Consortium Superscripts and Subscripts chart, the Superscripts and Subscripts block spans U+2070 to U+209F and assigns subscript digits 0 through 9 to U+2080 through U+2089 and subscript lowercase letters a, e, h, k, l, m, n, o, p, s, t, x to U+2090 through U+209C, with U+208A through U+208E reserved for subscript operators and parentheses

If the destination does not render the subscript Unicode block and you need a different text style, Strikethrough Text Calculator applies Unicode overlay strokes to the same source string.

Key Concepts Explained

Four small ideas explain what the calculator actually swaps and why some characters stay unchanged.

Unicode Subscripts Block

Unicode defines a single block, U+2080 to U+209C, that holds the canonical subscript code points. The calculator reads its lookup table from that block, so any subscript glyph it emits can be looked up directly in the Unicode charts.

Subscript Digits (U+2080 to U+2089)

All ten decimal digits 0 through 9 have subscript counterparts in the Unicode block. The calculator always converts the ASCII digits 0-9 because the block was designed to cover the full digit set first.

Subscript Lowercase Letters (U+2090 to U+209C)

Only 12 lowercase letters have subscript forms in the calculator's lookup table: a, e, h, k, l, m, n, o, p, s, t, x. Letters like b, c, d, f, g, j, q, r, u, v, w, y, z have no subscript form in the standard and pass through unchanged.

Subscript Operators and Parentheses (U+208A to U+208E)

The block also includes subscript + - = ( ) for inline math like CO₂ ₊ H₂O. Other punctuation, including comma, period, and question mark, has no subscript form, so the calculator copies those characters through unchanged.

Together these four ideas explain the whole behavior: digits, the supported lowercase letters, and the small operator set convert; everything else passes through. When uppercase subscripts are required, the right answer is usually HTML <sub> tags rather than a Unicode-only generator.

When you need to look up the broader Unicode properties of each character in the input rather than just rewrite digits and letters, Unicode text calculator returns the code points, names, and categories for any string.

How to Use This Calculator

Five quick steps get from a plain string to copy-ready subscript Unicode.

  1. 1 Paste or type your text: Drop the source string into the Text to convert field. The calculator accepts up to 2,000 code points per pass, which covers most paragraphs and formulas.
  2. 2 Read the live output: The Subscript Output panel updates as you type. Digits become subscript digits, supported lowercase letters become subscript letters, and operators like + and - become subscript operators.
  3. 3 Check the character counts: The right-hand panel shows how many source characters were processed, how many were converted, and how many passed through unchanged, so you can see at a glance if any letter did not get swapped.
  4. 4 Adjust and re-run: If a character did not convert and you need it in subscript form, replace it with the matching supported character (for example, swap an uppercase X for lowercase x) or wrap the run in HTML <sub> tags in the destination app.
  5. 5 Copy the output: Highlight the Subscript Output text and copy it like any other string. The output is plain Unicode, so it pastes into chat apps, word processors, and code editors without special handling.

Pasting 'NH3 + CO2' into the calculator returns 'NH₃ ₊ CO₂' with a source count of 9, a converted count of 3, and an unchanged count of 6, which matches the digits, the subscript plus sign, and the uppercase letters that pass through.

Before converting, you may want to clean the casing of the source string, and Sentence case converter rewrites any draft into proper sentence case in the same one-pass workflow.

Benefits of Using This Calculator

A purpose-built subscript generator removes the need to memorize Unicode code points or hand-code <sub> tags.

  • No font or markup required: Output is real Unicode, so it shows up correctly in chat apps, slide decks, and word processors that render Unicode without installing a subscript font or wrapping text in <sub> tags.
  • Full digit support in one pass: The calculator maps all ten decimal digits 0-9 to their subscript counterparts at once, so chemistry formulas like H2SO4 and CO2 rewrite cleanly without picking each character individually.
  • Honest pass-through for unsupported characters: When the input contains an uppercase letter or a punctuation mark with no subscript form, the calculator copies it through instead of dropping it, so the surrounding text stays readable and the output is a valid Unicode string.
  • Live counts show coverage at a glance: The converted and unchanged counters tell you exactly how much of the input was rewritten, which makes it easy to spot a missing subscript letter before pasting the result.
  • Works in plain-text contexts: Output is a single Unicode string with no HTML or CSS, so it pastes into Markdown previews, terminal logs, and short-message fields where rich-text markup would be stripped.

The same Unicode block that the calculator reads is also what most modern apps already render, so the result looks consistent across iOS, Android, and desktop platforms without per-app tweaking.

For other Unicode-style text treatments that work in plain-text contexts the same way subscript output does, Mirror Text Converter flips individual characters into mirror glyphs on the same one-pass input.

Factors That Affect Your Results

Three factors determine how much of your text gets rewritten, and two limitations explain when to reach for a different tool.

Character set of the input

ASCII digits 0-9, the 12 supported lowercase letters, and the operators + - = ( ) convert. Every other character passes through unchanged, which keeps the output safe but also limits how much of the text can be rewritten at once.

Case of letters

Lowercase a, e, h, k, l, m, n, o, p, s, t, x rewrite; their uppercase counterparts do not because the Unicode subscripts block defines no uppercase subscript letters. Use lowercase variants where the destination allows it.

Mix of subscript and non-subscript characters

When the input mixes digits, supported letters, and unsupported letters like b, c, d, f, g, j, q, r, u, v, w, y, z, the converted count drops but the output stays readable. Use the counts panel to decide whether the result is acceptable.

  • The Unicode subscripts block defines no uppercase subscript letters, so H, X, and other uppercase letters pass through unchanged; for uppercase subscripts, wrap text in HTML <sub> tags in the destination document.
  • Most punctuation marks (period, comma, colon, semicolon, question mark, exclamation mark) have no subscript form and pass through unchanged; only + - = ( ) convert.
  • Accented letters, emoji, CJK characters, and other non-ASCII code points are outside the Subscripts block and pass through unchanged; the calculator only targets ASCII source characters.

These limits come straight from the Unicode 15.0 specification, not from the calculator, so they hold for any Unicode subscript workflow. The best-calculators.com strikethrough and uppercase/lowercase converters handle the surrounding text styling when this one cannot rewrite a character.

According to Omni Calculator subscript generator, the subscript generator accepts any text and substitutes subscript Unicode glyphs in place, which is the same workflow this calculator follows

According to Unicode 15.0 core specification, the Subscripts and Superscripts block was introduced in Unicode 1.1 and assigns subscript code points to all ten decimal digits, a limited set of lowercase letters, and a small set of subscript operators and parentheses

Because uppercase letters pass through unchanged, lowering the case with uppercase to lowercase converter first lets the subscript pass cover the full input instead of leaving the uppercase letters behind.

Subscript generator interface showing source text on the left and Unicode subscript output with live character, converted, and unchanged counts on the right
Subscript generator interface showing source text on the left and Unicode subscript output with live character, converted, and unchanged counts on the right

Frequently Asked Questions

Q: What does the subscript generator do?

A: It rewrites plain text using the Unicode Subscripts and Superscripts block. Each digit, supported lowercase letter, and a small set of operators becomes its subscript code point, while every other character passes through unchanged.

Q: Which characters have a Unicode subscript form?

A: All ten decimal digits 0-9, the lowercase letters a, e, h, k, l, m, n, o, p, s, t, and x, and the operators + - = ( ) have subscript code points. Uppercase Latin letters and most punctuation do not.

Q: How do I type a subscript character without a generator?

A: On Windows hold Alt and type 8320 for subscript 0 through 8329 for subscript 9. On macOS open the Emoji and Symbols viewer and search 'subscript'. A generator like this one is faster for full strings.

Q: Does the subscript generator convert uppercase letters?

A: No. The Unicode subscripts block defines no uppercase subscript code points, so A, B, C and the other uppercase letters pass through unchanged. Use HTML <sub> tags if you need uppercase subscripts.

Q: Will the subscript generator work in chat apps and social media?

A: Yes. The output is plain Unicode, which modern chat apps like Discord, iMessage, WhatsApp, and most social platforms render directly without any markup or font installation.

Q: How long can the input text be?

A: Up to 2,000 code points per pass. Inputs longer than that are truncated before processing, and the source character count reflects the truncated length.