Skip to main content
Rime expands numbers, currency, ranges, and measurements into their spoken form automatically. Most formats work without any preprocessing. Just write naturally.
For a tour of text normalization across all categories, see Text normalization. For specific patterns Rime doesn’t expand cleanly, see Pre-normalizing text.

Numbers

Insert spaces between digits to force digit-by-digit reading: 4 0 reads as “four zero” (not “forty”). For longer alphanumeric IDs and codes, use spell() instead.

Currency

Dozens of currency symbols and ISO codes are supported, including $, , £, ¥, , , , , CHF, HK$, AUD$, US$, and three-letter codes such as USD, EUR, GBP, JPY. Scale abbreviations K, M, B, bn are recognized.

Ranges

Ranges with hyphens or en-dashes between numeric values read as “X to Y,” with shared units on the right: 13-50, 35-58 mph, 49-56 °C, 78-84%, 67-77 mg.

Measurements

A space between number and unit (330 ft) is slightly more reliable than the tight form (330ft). Use the space when you can.

Phone numbers

US and international formats both work natively, with parentheses, hyphens, or spaces as separators.

Roman numerals

English does not expand Roman numerals; they pass through as written, with or without a context word (the sole exception is the whitelist entry World War II, read as “World War two”). Use spell() or write the number out.

Known gaps

A few specific patterns aren’t reliably expanded; most commonly bare 5+ digit runs without separators (10000000), a bare m with no denominator (1m reads as “one million”), ampere and joule units (5A, J), and Roman numerals. For the full list and a drop-in prompt template to handle them, see Pre-normalizing text.