CEFR level of a text

Estimate the CEFR reading level (A1–C2) of a text, with separate levels for vocabulary, grammar and sentence structure, the reasons, and the words above the overall level.

CHF 0.04 / callCall itTry it
Yost typewriter, patent model, 1885
Yost typewriter, patent model1885

Details

Languages: English, German, French, Spanish, Italian, Dutch, Portuguese, Russian, Thai, Chinese, Japanese (others are attempted).

Also returns deterministic statistics: words, sentences, average sentence and word length, lexical variety, and a readability score with the formula used for that language (Flesch, Amstad, Kandel-Moles, Fernández Huerta, Gulpease, Oborneva …).

The CEFR judgement comes from a language model and is an estimate, not an exam result. The text is not stored.

Limits: 20 to 3000 words.

Price: CHF 0.04 per call (first 100 calls per day free).

Example: {"text":"Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.","language":"de"} → cefr "A1".

Call it

REST
curl -X POST https://api.tausendwerk.xyz/v1/text-level \
  -H "Content-Type: application/json" \
  -d '{"text":"Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.","language":"de"}'
MCP tool name
text_level

After the free 100 calls per day, add a key: Authorization: Bearer tw_live_…. Pricing

Try it

Runs against the live API with the free allowance.

Input schema JSON Schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30000
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it",
        "nl",
        "pt",
        "ru",
        "th",
        "zh",
        "ja"
      ],
      "description": "Text language. Omit to detect."
    }
  },
  "examples": [
    {
      "text": "Ich wohne in Bern. Ich habe einen Hund. Er heisst Max.",
      "language": "de"
    }
  ]
}

More in Language level