Abjad numeral converter free online
Alif counts as 1, ba as 2 and ghayn as 1000 in the classical Eastern abjad table. Turn a number from 1 to 1999 into letters, read letters back as a total, or score a whole word for hisab al-jummal. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Calculation mode
- Number to abjad
- Input number
- 1
- Abjad representation
- ا
Classical Eastern abjad maps each Arabic letter to a fixed integer. Free on-device tool with Eastern Mashriqi Abjad values, greedy decomposition, and hisab al-jummal word totals.
Letters that also count
Arabic letters can double as numbers. In the Eastern abjad order each letter carries a fixed value: alif is 1, ba is 2, and the sequence runs through the ones, then the tens, then the hundreds, ending with ghayn at 1000. Adding up the letters of a word gives its total, a practice known as hisab al-jummal. Historians, calligraphers and students of classical texts still meet these values when an inscription dates a building with letters, when a coin or a colophon hides a year, or when a poet embeds a date inside a couplet.
Three ways to use the table, and its limits
You can turn a whole number into letters, turn a sequence of letters back into its total, or score a complete word. To write a number, the tool takes the largest value that fits, then the next, until nothing is left, which is how the classical place values are built. To read letters, it adds every recognised letter and skips spaces and diacritics that carry no value. Numbers are limited to 1 through 1999, because the classical expansion stops at ghayn and no higher symbol is invented. If your text contains no abjad letters at all, you are told so rather than shown a total.
What abjad numerals encode
The Eastern abjad order assigns ones, tens, hundreds and one thousand to successive Arabic letters: alif is one, ba is two, and so on through ghayn at one thousand. Historians, calligraphers and students of classical texts still meet these values when a manuscript dates a building with letters, when a poet embeds a year inside a couplet, or when a teacher drills hisab al-jummal.
What you can do with it
Manuscript and epigraphy study
Decode letter-dates on buildings, coins and colophons without hand-adding place values each time.
Classroom hisab al-jummal
Show students how a name or phrase totals under the classical table, with reproducible goldens.
FAQ
Why is the upper bound 1999?
The Eastern order used here tops out at ghayn for one thousand and composes lower places without extending past 1999 in this capacity.
What number does each Arabic letter stand for?
In the Eastern abjad order each letter has a fixed value: alif is 1, ba is 2, and the values climb through the tens and hundreds until ghayn, which is 1000.
How do I find the abjad total of a word or name?
Choose the word value option and type the word. The tool adds the value of every recognised letter and ignores spaces and diacritics, giving the hisab al-jummal total.
How is a number written in abjad letters?
The tool takes the largest letter value that fits, then the next, until nothing is left, and writes the matching letters. Any whole number from 1 to 1999 works; 1 is simply alif.
What happens if my text contains no abjad letters?
You get a clear message that no abjad letters were found, instead of a misleading total. Empty text and text made only of punctuation are treated the same way.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/math/abjad-numerals \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_abjad","n":1}'const res = await fetch("https://api.kit.forhosting.com/math/abjad-numerals", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_abjad",
"n": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/abjad-numerals",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_abjad",
"n": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/abjad-numerals", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_abjad","n":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_abjad","n":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/abjad-numerals", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mode": "to_abjad",
"n": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.abjad_numerals",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
This capacity converts whole numbers into letter strings with mode to_abjad, recovers totals with from_abjad, and scores words with word_value for hisab al-jummal. Everything runs as pure parse logic in the browser or API with the same deterministic table.
What abjad numerals encode
Mode to_abjad walks that table greedily for any integer in the closed range 1..1999; modes from_abjad and word_value sum recognized letters and ignore spaces and diacritics that carry no value.
How to call the three modes
Send mode to_abjad with integer field n when you want the letter string for a number. Send mode from_abjad or word_value with text (or abjad) when you want the total of a letter sequence or a whole word. The success payload always echoes mode and returns either abjad for conversions to letters or value for summations, so a client can bind UI without guessing field names. The conversion is fully deterministic and runs free in the browser with the same pure function as the API. Inputs are validated before any arithmetic so out-of-range integers and empty strings become clear invalid_input errors instead of silent failures.
Limits, determinism and errors
Values outside 1..1999 are rejected rather than wrapped, because classical place-value expansions used here stop at ghayn and do not invent higher symbols. Empty strings and pure punctuation produce a clear message that no abjad letters were found. The conversion is fully deterministic and runs free in the browser with the same pure function as the API. Inputs are validated before any arithmetic so out-of-range integers and empty strings become clear invalid_input errors instead of silent failures.
Integration use cases
Scripted batch conversion
Convert many integers or words from a pipeline using the same pure function as the free browser widget.
Technical questions
Which range does to_abjad accept?
Integers from 1 through 1999 inclusive. Outside that range you get invalid_input.
Do diacritics count toward word_value?
No. Only letters present in the abjad table contribute; spaces and marks without a value are skipped.
Is from_abjad different from word_value?
Both sum letter values. The names exist so UIs can label numeral strings versus ordinary words; the math is the same table.
Does this run offline in the browser?
Yes. Tier A parse keeps the table on-device; no account and no network call are required for the free widget.