Roman Numeral Converter
Roman numerals are built from I (1), V (5), X (10), L (50), C (100), D (500) and M (1000), taking the largest values first — 1994 becomes MCMXCIV (1000 + 900 + 90 + 4).
Result
MCMXCIV
Show the math
- 1
Take out M (1000)
1994 − 1000 = 994
M represents 1000.
= M
Read the steps as text
- Take out M (1000). 1994 − 1000 = 994 M represents 1000.
- Take out CM (900). 994 − 900 = 94 CM represents 900.
- Take out XC (90). 94 − 90 = 4 XC represents 90.
- Take out IV (4). 4 − 4 = 0 IV represents 4.
How a number becomes Roman numerals
The converter repeatedly takes out the largest possible value's symbol until nothing is left. It works through the values from largest to smallest — including the 'subtractive' pairs like CM (900) and IV (4) — so that, for example, 1994 is built as M (1000) + CM (900) + XC (90) + IV (4) = MCMXCIV.
The subtractive pairs (IV, IX, XL, XC, CD, CM) exist so that no symbol is ever repeated more than three times in a row — Romans wrote 4 as IV rather than IIII.
Converting Roman numerals back to numbers
Reading a Roman numeral works left to right: if a symbol's value is smaller than the one right after it, it's subtracted rather than added — that's what makes IV mean 4 (1 before 5) rather than 6. This calculator also checks that what you typed is a valid, canonical Roman numeral, rejecting non-standard forms like IIII or VX.
Frequently asked questions
- What is the largest number Roman numerals can represent here?
- 3,999 (MMMCMXCIX). Standard Roman numerals don't have a symbol for numbers of 4,000 or more without extra notation, so this converter is limited to 1–3999.
- Why is 4 written as IV instead of IIII?
- Roman numeral convention avoids repeating a symbol more than three times in a row. Instead, a smaller value placed before a larger one means subtraction, so IV (1 before 5) means 4.
- Is 'IIII' ever correct?
- Not in standard modern usage, though it does appear historically, particularly on some clock faces. This converter follows the standard subtractive-notation rules and won't accept it as valid input.