German ordinal words
1 becomes erste and 2 becomes zweite: the converter gives the German ordinal word for any whole number from 1 to 100, with the special forms of the first twenty and the -ste ending after that. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- N
- 1
- Language
- de
- Words
- erste
German ordinal words for 1..100 (erste, zweite, …ste). Search intent: ordinal numbers german. No network calls or random seeds are required. Failed jobs are not billed.
How German ordinal numbers are built
An ordinal number names a position rather than a quantity: first, second, hundredth. German builds them in two groups. The first twenty have their own forms, which the converter keeps one by one: erste, zweite and so on up to 20. From twenty-one onward the rule is regular: take the cardinal number word and add -ste, so einundzwanzig becomes einundzwanzigste and hundert becomes hundertste. The converter covers every whole number from 1 to 100 and returns the finished word, always in one piece.
Where you need them, and the slips to avoid
Ordinals appear in dates, in rankings, in the floors of a building and in any list read aloud, so learners of German meet them early. The converter is a quick way to check a homework answer or a sentence before sending it. Typical slips are using the cardinal number where an ordinal is needed, adding -ste to the small numbers that take their own forms, and splitting a compound into two words. Keep in mind that the result is the form ending in -e, as in erste; inside a sentence German adapts that ending to the noun and the article.
When to use it
Use when search intent matches. German ordinal words for 1..100 (erste, zweite, …ste). English-only delivery; Nitro hydrates other locales.
No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required.
Failed jobs are not billed.
What you can do with it
Teaching
Pinned goldens.
FAQ
Which numbers can I turn into German ordinal words?
Whole numbers from 1 to 100. Zero, negative numbers, fractions and anything above 100 are not converted, because the converter covers exactly that range of positions, from first to hundredth.
How are German ordinals formed after twenty?
By adding -ste to the cardinal number. From twenty-one onward the converter takes the normal number word, such as einundzwanzig, and attaches the ending, which gives einundzwanzigste, all in one word.
Why do the first twenty ordinals need their own forms?
Because they do not all follow one pattern. Erste comes from eins but is not built by simply adding an ending, so the converter keeps the forms from 1 to 20 one by one, such as erste and zweite, and only then switches to the -ste rule.
How do you write hundredth in German?
Hundertste. It follows the same rule as the numbers after twenty: the cardinal hundert plus the ending -ste, written as a single word. Enter 100 to get it.
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/ordinal-words-de \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":3}'const res = await fetch("https://api.kit.forhosting.com/math/ordinal-words-de", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/ordinal-words-de",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/ordinal-words-de", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/ordinal-words-de", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"n": 3
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.ordinal_words_de",
"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
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
How it works
German ordinal words for 1..100 (erste, zweite, …ste). Special forms 1–20; otherwise card+ste. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input.
Inputs, limits and rounding
Optional decimals use half-up once. Optional output fields are omitted, never null. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields with DOM-safe names. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
When to use it
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
Integration use cases
Quick check
Free widget.
Automation
API same JSON.
Technical questions
Free?
Yes tier A.
Network?
No.
Bad input?
invalid_input.
API?
Yes.
Locales?
EN-only; Nitro hydrates.