ArabicFixالعربية

GUIDES / Arabic-Indic and Western digits

Arabic-Indic, Persian and Western digits: convert ١٢٣ to 123

You type a phone number as ١٢٣ and the form refuses it. You paste a column of figures into a spreadsheet and it will not add them up or sort them properly. The reason is that ١٢٣, 123 and ۱۲۳ are three different sets of characters that happen to share a value. This guide covers what each set is called and why the names cause confusion, where mixed digits break things, how to convert in both directions, and what conversion deliberately leaves alone.

Published 4 October 2026 · Updated 22 October 2026 · 7 min read

Three sets of digits and some confusing names

Unicode has three sets of decimal digits that people writing Arabic, Persian and Urdu use. Each set is ten separate characters with the same values:

SetShapesUnicode rangeTypically used
Western (European)0123456789U+0030–U+0039The Maghreb, e.g. Algeria and Morocco, and most computer systems
Arabic-Indic٠١٢٣٤٥٦٧٨٩U+0660–U+0669The eastern Arab world, e.g. Egypt, Saudi Arabia and Iraq
Extended Arabic-Indic۰۱۲۳۴۵۶۷۸۹U+06F0–U+06F9Persian and Urdu, in Iran, Afghanistan, Pakistan and India

The names are where the trouble starts. As the Unicode Standard explains, 0–9 are widely known in English as “Arabic numerals”, while the digits used in the eastern Arab world are known there as “Hindi numbers”. So “convert the numbers to Arabic” can mean ١٢٣ to one person and 123 to another. Before you convert anything, agree on the shapes you need, not the name.

The third set looks close to the second, but Unicode notes distinct shapes for four, five, six and seven: compare ٤٥٦ with ۴۵۶. Urdu also draws ۴, ۶ and ۷ differently from Persian, even though they are the same characters.

Why forms, Excel and banks reject ١٢٣

The digit ٢ and the digit 2 are different characters with different code points. Software that expects 0–9 sees ٢ as just another character, not a number. Worse, the Arabic ٢ and the Persian ۲ look identical in most fonts but are different characters too:

Example from the tool · CharactersThe digit two in three shapes: three different characters
Original
2٢۲
Result
U+0032 U+0662 U+06F2

Settings: Code points of 2, ٢ and ۲

Open the tool: Characters

That invisible difference shows up in a lot of places:

  • Online forms. Some phone, ID and postcode fields only accept 0–9. If your keyboard types ٠١٢٣, a valid number can be rejected, or accepted and then never found in a later search.
  • Excel and other spreadsheets. If a sheet stores ١٢٣ as text rather than as a number, formulas will not treat it the way you expect. Microsoft notes that when a column mixes numbers stored as numbers with numbers stored as text, the former sort before the latter, so the order no longer follows the values. Excel may also flag the cell as a number stored as text.
  • Phone numbers. A number typed half as ٠٥٥ and half as 123 will not match the same number stored in a database, and search will not find it.
  • IBANs. An IBAN starts with a two-letter country code, followed by two check digits calculated from the rest of the number with ISO/IEC 7064 (MOD 97-10). A system that runs that check expects Latin letters and the digits 0–9, so it will usually reject an IBAN typed with ١٢٣ even if every position is right.

The W3C draft note on string searching allows browsers to treat other digit shapes as 0–9 when searching, but does not require it. Do not assume the software will reconcile them for you.

Converting digits to 123, step by step

  1. Open the Cleaner and paste your text.
  2. Click the Digits to 123 quick action. It selects Western — 0123456789 and turns on Protect detected links & emails during digit conversion. Note that quick actions replace your current options.
  3. If you want other cleanup in the same pass, open Convert digits instead, pick the target shapes yourself, then tick link protection and any other options you need.
  4. Check the Change summary and Compare changes, then copy or download the result.
Example from the tool · CleanerAn order message with Arabic-Indic and Persian digits, converted to 0–9
Original
طلب رقم ٢٠٤٥٨
الجوال: ۰۱۲۳۴۵۶۷۸۹
المبلغ: ١٬٢٥٠٫٥٠٠ د.ك
الخصم: ١٥٪
Result
طلب رقم 20458
الجوال: 0123456789
المبلغ: 1٬250٫500 د.ك
الخصم: 15٪

Settings: Cleaner · Digits to 123 quick action · Western with link and email protection

Open the tool: Cleaner

Three things to notice. The Arabic-Indic and Persian digits all became 0–9 in one pass, so you do not need to know where each number came from. The separators ٬ and ٫ in the amount stayed as they were. And the percent sign ٪ did not change. None of this is a bug; these are deliberate limits, covered in the next section.

For numbers in a spreadsheet, copy the whole column, paste it into the Cleaner and paste the result back into the same column. The tool keeps the number and order of lines as long as the line options stay off.

What conversion does not change

Conversion changes the shape of digits and nothing else. It does not touch values or formatting:

  • Separators. The Arabic decimal separator ٫ and thousands separator ٬ are their own characters, separate from the full stop and comma, and the tool leaves them alone. The W3C Arabic and Persian layout requirements write a number in Arabic-Indic digits as ١٬٢٣٤٫٥.
  • Units and currencies. د.ك, ر.س or كم stay exactly as typed. Nothing is converted between currencies or units.
  • Rounding. No rounding and no trimmed zeros: ٠٫٥٠٠ becomes 0٫500.
  • Dates. ٢٠٢٦/١٠/٠٤ becomes 2026/10/04 in the same order. Day and month are never swapped.

If the receiving software needs a decimal point, replace the separator yourself. Open Find & replace, tick Apply replacement to result, type ٫ in Find and a full stop in Replace with. Replacement runs after digit conversion, so the number comes out ready to use:

Example from the tool · CleanerDigits converted, then the Arabic decimal separator replaced with a full stop
Original
السعر ١٢٥٫٥٠ ر.س
Result
السعر 125.50 ر.س

Settings: Cleaner · Western digits · Find & replace: ٫ → .

Open the tool: Cleaner

To remove the thousands separator ٬ as well, paste the result back in as your original and run the replacement again with an empty Replace with. Spreadsheets cope with 1250.500 far better than with 1٬250.500.

Other digit systems: the World numerals tool

The Cleaner only converts between the three sets above. For Devanagari, Thai or other digits, use World numerals. In Digit system for conversion, pick the target code: latn for 0–9, arab for ٠–٩ or arabext for Persian digits. The tool recognizes every decimal digit system in its bundled CLDR data and converts them all at once:

Example from the tool · World numeralsDevanagari, Arabic-Indic, Persian and Thai digits on one line
Original
१२३ ٤٥٦ ۷۸۹ ๑๐
Result
123 456 789 10

Settings: World numerals · Digit system for conversion: latn

Open the tool: World numerals

Choose a locale under Language / region and the tool also shows what CLDR records for it: Default system, Decimal separator and Grouping separator. In the bundled CLDR release, for example, ar-EG and ar-SA default to ٠–٩ with ٫ and ٬, ar-MA uses 0–9 with a decimal comma and a full stop for thousands, and fa uses Persian digits. These are defaults that software follows, not rules every writer or publisher must obey.

The conversion itself is independent of the locale you choose. It leaves separators and currencies alone and never rounds. Algorithmic numbering systems, such as Roman numerals, are not offered for conversion because they do not map one digit to one digit.

The other direction: from 123 to ١٢٣

Sometimes you need the reverse: a book printed with Arabic-Indic digits, or a text that has to follow a publisher's house style. In the Cleaner choose Arabic-Indic — ٠١٢٣٤٥٦٧٨٩, or Extended Arabic-Indic — ۰۱۲۳۴۵۶۷۸۹ for Persian or Urdu text. This is where link protection really matters:

Example from the tool · CleanerDigits in the text change; the link and the email stay as they are
Original
الفصل 3، الصفحة 45
الرابط: https://example.com/ch3
البريد: info2@example.com
Result
الفصل ٣، الصفحة ٤٥
الرابط: https://example.com/ch3
البريد: info2@example.com

Settings: Cleaner · Arabic-Indic — ٠١٢٣٤٥٦٧٨٩ · link and email protection on

Open the tool: Cleaner

Without protection, the digits inside the link are converted too and the link stops working:

Example from the tool · CleanerWithout protection the digit inside the link changes and the link breaks
Original
الرابط: https://example.com/ch3
Result
الرابط: https://example.com/ch٣

Settings: Cleaner · Arabic-Indic — ٠١٢٣٤٥٦٧٨٩ · link protection off

Open the tool: Cleaner

Protection detects links starting with https://, http:// or www., and email addresses. A product code such as A320 is converted like any other number, so check those before publishing. And do not convert text whose numbers must stay exactly as they are, such as code samples or account numbers.

When you need the number in words

Changing digit shapes is one job; writing an amount out in words is another. To produce مئة وخمسة وعشرون دينارًا for a cheque, contract or invoice, use Number words. It accepts 123, ١٢٣ and ۱۲۳ and either . or ٫ as the decimal separator, so there is no need to convert digits first:

Example from the tool · Number wordsAn amount written with Arabic-Indic digits and ٫, spelled out
Original
١٢٥٫٥٠٠
Result
مئة وخمسة وعشرون دينارًا كويتيًا وخمسمئة فلس

Settings: Number words · Unit: KWD · Kuwaiti dinar · 3 decimals

Open the tool: Number words

It does not accept thousands separators, and it rejects more decimals than the currency allows instead of rounding. It supports Kuwaiti dinars with three decimals and Saudi riyals, UAE dirhams and US dollars with two, and lets you choose the grammatical case. The tafqit guide covers the details.

Frequently asked questions

What is the difference between Arabic numerals and Hindi numerals?

In English, “Arabic numerals” means 0–9, because Europe adopted them from the Arab world. In the eastern Arab world, ٠–٩ are called Hindi numbers because of their Indian origin. Unicode avoids both names and calls ٠–٩ Arabic-Indic digits. Same values, different characters.

Why is ٫ still there after converting?

Because it is a separator, not a digit, and the tool converts digits only. Use Find & replace in the Cleaner to turn it into a full stop, as in the example above.

Does conversion change or round the value?

No. Each digit is swapped for its counterpart in the other set. The number of digits, the zeros and the separators all stay the same.

How can I tell whether Excel read my pasted cells as numbers?

Try summing or sorting the column. If the order looks wrong or Excel flags the cells as numbers stored as text, they are still text. Make sure ٫ and ٬ have been removed or replaced with what your sheet expects, then convert the cells to numbers.

Why did the digits inside my link stay the same?

Because Protect detected links & emails during digit conversion is on. A link whose digits change usually breaks, so the tool leaves it alone. Turn the option off only if you really want every digit converted.

Tools used in this guide

Clean Arabic textRemove Arabic diacritics and tatweel, convert Arabic or Persian digits, and clean spacing. Compare changes and download your text locally for free.Arabic, Persian & worldwide digit converterExplore 30 CLDR locale records and convert digit shapes without rounding or changing their value.Arabic number-to-words · TafqitSpell integers and KWD, SAR, AED or USD amounts with an explicit grammatical case.

Sources

We checked these pages when writing and updating this guide.

Unicode Standard 18.0, chapter 9: Arabic-Indic digits ↗Unicode 18.0 names list (digits and Arabic separators) ↗W3C: Arabic & Persian Layout Requirements, families of numerals ↗W3C: String Searching (Group Note Draft), digit shaping ↗Unicode CLDR: numbering systems (UTS #35, Numbers) ↗Unicode CLDR JSON 48.2.3 ↗Microsoft Support: Sort data in a range or table in Excel ↗Microsoft Support: Convert numbers stored as text to numbers ↗National Bank of Georgia: IBAN structure and check digits ↗