Number to Words
Write an amount out in full, the way an invoice or a contract prints it.
Mười lăm triệu năm trăm nghìn đồng
Fifteen million five hundred thousand dong
How it works
An invoice writes the amount twice — once in digits and once in words — so that neither can be altered without the other disagreeing. That is why the words have to be exactly right rather than approximately right.
Both languages here split the number into groups of three from the right, name each group, and attach a scale word. English runs thousand, million, billion, trillion and stops. Vietnamese runs nghìn, triệu, tỷ and then *repeats*: 10¹² is "nghìn tỷ", 10¹⁵ "triệu tỷ". Treating tỷ as a fourth scale and cycling every four groups is the near-miss that reads a trillion as a billion.
The Vietnamese output also has three irregularities that a digit-by-digit reading gets wrong: a tens digit of 1 is "mười" not "một mươi", a units digit of 1 after a tens digit of 2 or more is "mốt" not "một", and a units digit of 5 after any tens digit is "lăm" not "năm".
Formula
number → split into groups of three → name each group → attach its scale word
A zero group is silent. In English, "one million and one" simply skips the empty thousands group; in Vietnamese the "không trăm lẻ" comes from the final group being read in full, not from the empty ones.
Worked example
Writing out 1,234,567:
- Split into groups
- 1 | 234 | 567
- Millions group
- one million
- Thousands group
- two hundred and thirty-four thousand
- Units group
- five hundred and sixty-seven
The hyphen in "thirty-four" and the "and" after a hundred are both conventions of written English rather than decoration — an amount on a cheque is expected to follow them.
Frequently asked questions
Why does it refuse very large numbers?
JavaScript represents integers exactly only up to about 9 quadrillion. Beyond that the last digits are silently rounded. For a document, refusing is far better than being quietly wrong in the final digits.
Why does it only take whole numbers?
Because the everyday use is a currency amount, and Vietnamese đồng has no minor unit in practice. A decimal would need a convention for how to read the fraction, and there is no single right answer to that.
Is the "and" after a hundred correct?
It is the British convention and the one used on cheques and contracts: "one hundred and five". American usage often drops it. Either is understood; this follows the form that appears on financial documents.
Why does Vietnamese have two words for 5 and for 1?
Position changes the word. Five is "năm" alone and "lăm" as a units digit after a tens digit. One is "một" alone and "mốt" as a units digit after a tens digit of two or more. Both are spoken rules, not spelling variants.
Is anything I type sent anywhere?
No. The conversion runs in your browser. This site is a set of static files with no server to receive it.