Number to Words Converter

Convert a number to spelled-out words (cardinal, ordinal or currency for checks), or parse cardinal words back to a number. Runs in your browser.

🔒 Private by design: your text is processed locally in your browser and never uploaded to any server.

Three modes, and the exact strings each one produces

Cardinal is the counting form. Paste 1234 and you get “one thousand two hundred thirty-four”; paste 1234567 and you get “one million two hundred thirty-four thousand five hundred sixty-seven”. Zero comes back as “zero”, and a negative number picks up a “negative” prefix.

Ordinal is the position form, built by taking the cardinal spelling and converting only its final word, or the final segment of a hyphenated compound. So 42 gives “forty-second”, 21 gives “twenty-first”, 100 gives “one hundredth”, 101 gives “one hundred first” and 1000000 gives “one millionth”. Even 0 has an answer here, “zeroth”, which is more of a completeness thing than a practical one.

Currency spells both halves of an amount in one phrase. 1234.56 gives “one thousand two hundred thirty-four dollars and fifty-six cents”, and 123.45 gives “one hundred twenty-three dollars and forty-five cents”. Singular forms are handled, so 1.01 reads “one dollar and one cent”, and a whole amount still states its cents: 250 becomes “two hundred fifty dollars and zero cents”.

The amount-in-words line on a paper check

The reason this format survives at all is fraud resistance. Digits on a check are easy to extend; a one can gain a zero, a comma can move. A line of words is a different proposition, because altering it means rewriting a whole phrase in someone else’s handwriting. That is why the words line and the numeral box both appear, and why banking rules have long treated the written words as the controlling version when the two disagree.

Contracts inherit the same habit for the same reason, stating a figure numerically and then again in words. Style guides for formal writing come at it from a different angle, asking that small numbers, or any number opening a sentence, be spelled out. And occasionally the job runs the other way: an old invoice or a bond certificate has a figure written out longhand and you want to be sure it says what you think it says.

If you are producing the paperwork itself, the Invoice Generator builds the PDF with line items and tax, though it prints every amount as a formatted numeral rather than in words, so the words line is something you would take from here.

Converting an amount, mode by mode

  1. Paste into the box. Digits, a dollar amount, or a spelled-out cardinal phrase all work, and the direction is worked out from the characters rather than from a switch.
  2. Set Number-to-words mode (ignored when you paste words instead of digits) to the entry you need. It opens on Cardinal, e.g. “one thousand two hundred thirty-four”, with Ordinal, e.g. “forty-second” and Currency, e.g. “one hundred twenty-three dollars and forty-five cents” below it.
  3. Click Number to Words Converter. The button carries the tool’s own name, and it stays disabled until there is something in the box.
  4. Read the result, which arrives as a short labelled report rather than a bare string. Take it with Copy to clipboard, or press Process another to bring the input box and the mode selector back and start again.

The report looks like this for a dollar amount:

=== INPUT ===
1234.56 (interpreted as a dollar amount)

=== IN WORDS (currency) ===
one thousand two hundred thirty-four dollars and fifty-six cents

Rounding cents on the digits instead of on a float

Money and binary floating point are old enemies, so the rounding here never touches a floating point number. The pasted text is matched as a sign, a run of dollar digits and a run of decimal digits, and the decimal digits are padded to three characters so there is always a third digit to inspect. If that third digit is five or more, the cents go up by one.

Two consequences follow. First, 1234.564 rounds down to fifty-six cents while 1234.565 rounds up to fifty-seven, which is plain half-up rounding with no surprises. Second, a carry that spills out of the cents is applied to the dollars properly: 99.995 becomes “one hundred dollars and zero cents”, not the stale “ninety-nine dollars and one hundred cents” a naive implementation would emit. The size limit is re-checked after that carry, so an amount that only exceeds the maximum because of rounding is caught rather than silently wrapping.

Reading words back into digits, and where that stops

Paste “one thousand two hundred thirty-four” and you get 1,234 back, formatted with thousands separators. “negative one hundred twenty-three” gives -123. The parser validates as it goes rather than adding things up blindly: scale words have to appear largest first, so “two thousand one million” is rejected, and “hundred” has to follow a single digit word, so the common shorthand “twelve hundred” is refused rather than being guessed at.

The reverse direction is scoped to cardinal words only. Ordinal phrases are not parsed, which means “forty-second” fails on its second half, and a full currency phrase is not parsed either. Neither is British style: “one hundred and twenty-three” stops on the word “and”, which has no entry in the lookup. Mixed forms like “42nd” match neither the numeric pattern nor the letters-only pattern and come back with a message asking for one or the other.

English word lists only, which is why there is no Spanish edition

Almost every tool on this site ships with a Spanish counterpart. This one does not, and the reason is sitting in its source: the ones, tens, scale and ordinal tables are hardcoded English strings, and so is the parser that reads them back. Translating the page around them would produce a Spanish interface that still answered in English words, which is worse than not shipping it. Until those lists become locale-aware, this stays an English-only page.

For a different flavour of number notation, the Roman Numeral Converter works the same way with the same automatic direction detection, converting digits to numerals and back. If the words you get out need reformatting, the Case Converter handles upper, lower, title and sentence case in one pass, and the rest of the text tools are collected on the hub alongside our roundup of the text tools worth knowing.

See it in action

Screenshot of the Number to Words Converter tool with the sample input “4096”, Number-to-words mode (ignored when you paste words instead of digits) set to Cardinal, e.g. "one thousand two hundred thirty-four"
Number to Words Converter mid-process: the sample input “4096”, Number-to-words mode (ignored when you paste words instead of digits) set to Cardinal, e.g. "one thousand two hundred thirty-four".
Screenshot of the Number to Words Converter result screen showing the generated output “=== INPUT === 4096 (interpreted as a number, car…”
The finished result: the generated output “=== INPUT === 4096 (interpreted as a number, car…”. The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

How does the tool decide whether I gave it digits or words?

By looking at the characters, not at a toggle you have to remember to set. A string made only of digits with an optional leading minus sign, dollar sign, thousands commas and one decimal point is treated as a number. A string made only of letters, spaces and hyphens is treated as a word phrase. Anything mixing the two, like 42nd, matches neither pattern and comes back with a message asking for one form or the other.

Does an error message get swallowed by a generic banner?

No, and avoiding that was a deliberate design choice. The report builder never throws. Every problem, whether a malformed amount, an out-of-range value or an unrecognized word, is folded into an error section inside the result box, where you can read exactly what went wrong. Thrown errors would have been replaced by a fixed catch-all sentence from the surrounding shell.

Can I spell out a negative dollar amount?

Yes. Currency mode accepts a leading minus sign and prefixes the result accordingly, so minus fifty dollars and twenty-five cents reads as negative fifty dollars and twenty-five cents. It also gets the singular right when the count is exactly one, giving one dollar and one cent rather than one dollars and one cents.

Why does a whole dollar amount still say zero cents?

Because the cents clause is always written, even when there is nothing after the decimal point. An amount of 250 comes back as two hundred fifty dollars and zero cents. That is consistent rather than special-cased, and it matches how a filled-in amount line usually reads on a check, where an explicit zero is harder to alter than a blank space.

Is British style, with an "and" before the tens, supported anywhere?

Not in either direction. Output never inserts that word between the hundreds and what follows, so one hundred twenty-three is what you get. Input rejects it as well, since the parser has no entry for it and reports it as an unrecognized number word. Strip it out of a pasted phrase and the rest converts normally.

What is the biggest number it will handle?

Just under one thousand trillion, or fifteen digits, which is the largest magnitude where the underlying arithmetic stays exact without special handling. Longer digit strings are caught by comparing the text itself rather than by converting it first, so an absurdly long paste is rejected cleanly instead of quietly losing precision on the way to the check.

Related tools