Roman Numeral Converter

Convert between Arabic numbers and Roman numerals, 1 to 3999 — both directions, live.

Both directions convert in your browser — no upload, no account

Convert numbers to Roman numerals — and Roman numerals back to numbers

About this Roman numeral converter

Type an Arabic number on the left to see its Roman numeral, or type a Roman numeral on the right to see the Arabic number — the fields are live-linked in both directions. The range is 1 to 3999, which is the standard set every source and style guide agrees on: I, V, X, L, C, D and M, with subtractive pairs (IV, IX, XL, XC, CD, CM) for the four numbers below each multiple of ten.

The parser is strict about correctness. It accepts any well-formed numeral and rejects the common wrong-looking forms: IIII (should be IV), VV (should be X), IC or LC (illegal subtractions — only I, X and C can precede a larger symbol, and only against the next two magnitudes up). If your input is invalid the tool tells you why, rather than silently returning a wrong answer. The check is a round-trip: parse to a number, re-serialize to Roman, and compare — anything that does not survive both passes was not canonical to begin with.

Why does the range stop at 3999? Because Romans wrote larger numbers by placing an overline (a vinculum) above a symbol to multiply it by 1,000 — V̄ meant 5,000, X̄ meant 10,000 — and that notation does not render reliably in plain text on the web. Some Unicode approximations exist but they are not universally supported, and every popular reference (Merriam-Webster, Britannica, most typography guides) treats 3,999 as the practical upper bound of everyday Roman numerals. If you need larger, use the base converter or write the number in words.

The most common use in 2026 is a date — birthdays, wedding anniversaries and tattoos being the top three. A quick tip if that is why you are here: dates in Roman numerals are conventionally written with month names spelled out and the day and year in Roman ("15 · V · MCMXCVI" for 15 May 1996), because two Roman numerals side by side ("V · XV") are ambiguous. The chart below has every year from 1900 to 2100 pre-computed so you do not have to translate one digit at a time.

Everything runs in your browser — nothing you type is sent anywhere, and there is no account or file limit. That matters more than usual for tattoo work, where the number is often a personal date; the confirmation you want is a second pair of eyes on the exact letters, not a form that records what you looked up.

The seven basic symbols

SymbolValue
I1
V5
X10
L50
C100
D500
M1,000

Every Roman numeral is built from these seven, using additive combinations (VII = 7, LX = 60) and the six subtractive pairs: IV = 4, IX = 9, XL = 40, XC = 90, CD = 400, CM = 900.

Common numbers and years

The values people look up most often — round numbers, common ages, and every century year from 1900 to 2100.

NumberRomanNumberRoman
1I50L
5V100C
10X500D
18XVIII1,000M
21XXI1,500MD
25XXV1,900MCM
30XXX1,999MCMXCIX
40XL2,000MM
49XLIX2,024MMXXIV
99XCIX2,025MMXXV
500D2,026MMXXVI
999CMXCIX2,050MML
1,000M2,100MMC
1,776MDCCLXXVI3,000MMM
1,984MCMLXXXIV3,999MMMCMXCIX

The rules behind the numerals

  1. Add symbols in decreasing size, left to right — MMXXVI reads as 1000 + 1000 + 10 + 10 + 5 + 1 = 2026.
  2. A smaller symbol before a larger one subtracts — IV = 4 (5 − 1), CM = 900 (1000 − 100).
  3. Only I, V, X, L, C, D, M repeat additively; and V, L, D never repeat at all — 10 is X, not VV.
  4. Only I, X, and C can subtract, and only against the next two magnitudes up: I from V and X, X from L and C, C from D and M.
  5. A symbol repeats at most three times in a row — 4 is IV (not IIII), 40 is XL (not XXXX).
  6. The valid range in the modern common system is 1 to 3999. Larger numbers historically used an overline (V̄ = 5000) that this tool does not attempt.

In Excel, Google Sheets, and Python

Excel and Google Sheets:
=ROMAN(2026)       → MMXXVI
=ARABIC("MMXXVI")  → 2026

ROMAN() supports a second argument for form (0 = classic, 1–4 = increasingly abbreviated). Only 0 (or omitted) gives the canonical form.

Python 3.10+ (standard library):
import re, functools
R = [(1000,"M"),(900,"CM"),(500,"D"),(400,"CD"),(100,"C"),(90,"XC"),(50,"L"),(40,"XL"),(10,"X"),(9,"IX"),(5,"V"),(4,"IV"),(1,"I")]
def to_roman(n):
    out=""
    for v,s in R:
        while n>=v: out+=s; n-=v
    return out
def from_roman(s):
    n=i=0
    for v,sym in R:
        while s[i:i+len(sym)]==sym: n+=v; i+=len(sym)
    return n if to_roman(n)==s else None
to_roman(2026)     # "MMXXVI"
Excel has native ROMAN() and ARABIC() functions. In Python the same greedy pairs table works both directions.

FAQ

What are the seven Roman numerals?

I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Every other value is built from these seven with two rules: the additive rule (VI = 6, LX = 60, CX = 110) and the subtractive rule (IV = 4, XL = 40, CM = 900). Only I, X and C can be subtracted, and each only from the next two magnitudes up — so IC (99) is wrong; the correct form is XCIX.

Why does the tool reject IIII, VV, or LC?

Because the classical rules forbid them. A symbol repeats at most three times consecutively — IIII is written IV, XXXX is XL. V, L and D never subtract and never repeat — VV is written X, DD is M. Only I, X and C subtract, and only from the next two magnitudes — so IL (49) is wrong; the correct form is XLIX, and LC (50) is not a form at all. If you paste one of these the tool tells you it is not canonical and does not guess what you meant.

How do I write a year like 2026 in Roman numerals?

2026 is MMXXVI: MM (2000) + XX (20) + VI (6). The year 2000 was the round MM, 2024 was MMXXIV, and 2050 will be MML. Every year from 1900 to 2100 is in the chart below — copy the exact string, because a Roman numeral for a tattoo has to be right the first time.

Was there a Roman numeral for zero?

Not in the classical system. The concept of zero as a number entered European mathematics from Arabic sources around the 12th century, centuries after Rome. Medieval scribes writing in Latin did use the letter "N" (from Latin nullus, "none") in astronomical tables, but that is a later workaround, not a Roman numeral. Zero is the reason the practical range starts at 1: there is no shorter valid Roman numeral.

Related tools