Tools Guides
converters Free No signup

Roman Numeral Converter

Convert between Arabic numbers and Roman numerals — supports 1 to 3,999,999 with extended notation.

Loading tool…

About this tool

Instantly convert integers to Roman numerals and vice versa. Supports standard Roman numerals (1–3,999) and extended notation with vinculum (overbar) for larger values up to 3,999,999. Shows step-by-step conversion breakdown.

How to use

  1. 1 Type an Arabic number (1–3999) to convert to Roman numerals.
  2. 2 Or type Roman numeral letters to convert to an Arabic number.
  3. 3 View the step-by-step breakdown below.
  4. 4 Click Copy to copy the result.

How the Roman system represents numbers

Roman numerals build numbers from seven letters, each worth a fixed amount: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Unlike our place-value decimal system, there is no positional notation and no zero — a number is just a sum of symbols read left to right, with one twist called subtractive notation. This converter goes both ways: it turns an Arabic integer from 1 to 3,999 into numerals, and it reads numerals back into a number, showing every step so the logic is transparent.

Subtractive notation, the one rule that trips people up

Writing 4 as IIII works but is clumsy, so Romans placed a smaller symbol before a larger one to mean "subtract." Six specific pairs are valid:

PairValueReads as
IV45 − 1
IX910 − 1
XL4050 − 10
XC90100 − 10
CD400500 − 100
CM9001000 − 100

Everywhere else, symbols are simply added. When decoding, the tool looks at each pair of adjacent letters: if the left one is smaller than the right, it subtracts (and consumes both); otherwise it adds the single value. That single comparison handles the entire system.

The greedy encoding algorithm

To convert an Arabic number, the tool uses a greedy strategy over a value table that already includes the subtractive pairs, ordered from largest to smallest: 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). It repeatedly takes the largest value that still fits, appends its symbol, and subtracts it from what remains — until nothing is left. Because the table includes 900, 400, 90, 40, 9, and 4, the greedy approach never produces an invalid form like IIII.

A worked example: 2024

Watch the greedy algorithm chew through 2,024:

  1. 2024 ≥ 1000 → write M, remainder 1024
  2. 1024 ≥ 1000 → write M, remainder 24
  3. 24 ≥ 10 → write X, remainder 14
  4. 14 ≥ 10 → write X, remainder 4
  5. 4 ≥ 4 → write IV, remainder 0

Result: MMXXIV. The tool shows this exact ladder under "Conversion Breakdown," and decoding MMXXIV reverses it: M+M = 2000, X+X = 20, then the pair I<V gives 5 − 1 = 4, summing back to 2024.

Why the range stops at 3,999

With only the symbols up to M (1000), the largest number you can write before repeating M more than three times is 3,999 = MMMCMXCIX. Writing 4000 would need MMMM, which violates the convention of not stacking four identical primary symbols. Historically, larger values used a vinculum (a bar over a numeral to multiply it by 1,000), but this converter sticks to the universally agreed standard range of 1–3,999, so every result is unambiguous and valid.

Where Roman numerals still appear

  • Clock faces — often with IIII for 4 instead of IV, a traditional stylistic exception.
  • Copyright and film credits — release years like MMXXIV.
  • Sequels and events — Super Bowl numbering, movie franchises, monarch and pope names (Elizabeth II, Louis XIV).
  • Book structure — chapter and volume numbers, and lowercase numerals for front-matter page numbers.
  • Outlines — top-level list items in formal documents.

Common mistakes

  • Stacking four of a kind. 40 is XL, not XXXX; 90 is XC, not LXXXX.
  • Subtracting the wrong symbols. Only I, X, and C subtract, and only from the next one or two steps up — IL for 49 is invalid; the correct form is XLIX.
  • Expecting a zero or negatives. The system has neither; inputs must be 1 to 3,999.
  • Mixing case carelessly. The decoder accepts lowercase and uppercases it, but a stray invalid letter raises an error pinpointing the character.
  • Putting a subtractor before too large a jump. A symbol can only be subtracted from the next one or two values up — VX and IC are not valid forms.

A reference table to keep handy

The tool also shows a quick lookup grid combining the seven base symbols with the six subtractive pairs. Together these thirteen tokens are all you ever need to read or write any value in the standard range:

Symbol(s)Value
I, V, X, L, C, D, M1, 5, 10, 50, 100, 500, 1000
IV, IX, XL, XC, CD, CM4, 9, 40, 90, 400, 900

Reading any numeral is then a matter of scanning left to right, applying the one subtractive comparison at each pair, and summing — exactly what the decoder does for you.

Runs entirely in your browser

Both conversions and the step-by-step breakdown are computed locally in JavaScript — nothing you type is sent to a server. The tool loads with the current year pre-converted as a live example and works offline.

Frequently Asked Questions

{# Alpine.js — self-hosted. (The previous jsdelivr CDN tag had a stale SRI integrity hash, so the browser refused to run it and window.Alpine was never defined — silently breaking every FAQ accordion and Alpine tool.) #}