Count syllables in a word
Beautiful has 3 syllables: the eau in the middle counts as one vowel group. The estimate follows simple English spelling rules, drops a silent final e and restores the beat in endings like table. Handy for meter, haiku and name checks. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Word
- beautiful
- Normalized
- beautiful
- Syllables
- 3
- Vowel groups
- 3
Syllable counts matter whenever you shape rhythm, readability, or pronunciation cues: poets and lyricists check meter, teachers grade haiku and cinquain forms, product teams score brand names for speakability, and accessibility tools estimate how long a word will take to say. This syllable counter accepts a single word, strips non-letters for analysis, and estimates the number of syllables with a transparent vowel-group heuristic rather than a proprietary dictionary. Contiguous runs of a, e, i, o, u, and y are counted as nuclei; a silent trailing e is usually dropped; consonant-plus-le endings such as table restore a final beat. Use the result as a fast estimate for English-oriented text, then refine with a dictionary when legal or linguistic precision demands it.
How the vowel-group syllable estimate works
English orthography is messy, so this capability never claims dictionary truth; it applies a small, documented set of orthographic heuristics that match classroom intuition on the majority of common words. First the input is coerced to a string and the original value is echoed so clients can display what they submitted. For counting, only ASCII letters A through Z survive, lowercased into a normalized letter stream.
On a non-empty stream the algorithm walks left to right and increments a counter each time a vowel (a, e, i, o, u, or y) begins after a consonant or at the start of the word; a run of adjacent vowels such as the eau in beautiful therefore counts as a single nucleus. After the raw run tally, a silent final e often drops one syllable when more than one nucleus was found, which maps make, time, and cake to a single beat.
When the word ends with a consonant followed by le, as in table or bottle, that silent-e subtraction would undercount the final syllable, so the heuristic restores one. The final count is floored at one for any letter-bearing word, so short forms like I or a never return zero.
Where a syllable counter earns its keep
Writing classrooms and tutoring platforms use a syllable counter so learners can check haiku (five–seven–five), tanka, and stress patterns without waiting for a teacher to mark every draft. Brand and naming studios batch-score candidate product names for spoken length before focus groups, treating high syllable counts as a friction signal for radio spots and app store titles. Readability and AAC tools approximate speaking duration by summing per-word estimates, which is cheaper than shipping a full TTS stack for a first-pass length budget.
Exam generators and LMS plugins need a deterministic oracle that rejects digit-only tokens instead of inventing a zero that a buggy grader might treat as success. Failed validation does not consume balance. Keep requests to one word when possible, document that the method is an orthographic estimate, and you get reproducible syllable counts for education, branding, and accessibility without standing up linguistic databases of your own.
What you can do with it
Classroom poetry and meter checks
Let students paste a draft word and verify the estimated syllable count against haiku lines, cinquains, or stress exercises without manual teacher marking for every token.
Brand and product name screening
Batch-score candidate names for spoken length before focus groups, flagging multi-syllable options that may hurt radio spots or short app titles.
Readability and speaking-time budgets
Sum per-word syllable estimates in AAC or caption tools as a cheap first-pass duration budget before invoking full text-to-speech.
FAQ
What happens if the input has no letters?
Digits-only or punctuation-only strings cannot form an English letter stream, so they are not billed.
Is the count always dictionary-perfect?
No. It is a deterministic vowel-group estimate with silent-e and -le adjustments. Use a pronunciation dictionary when legal or linguistic precision is required.
Does y count as a vowel?
Yes. In the heuristic, y is treated as a vowel nucleus the same way a, e, i, o, and u are, which matches common classroom rules for words like rhythm and happy.
Why does table get two syllables when make gets one?
A silent final e usually drops a beat, so make, time and cake count as one. When a word ends in a consonant followed by le, as in table or bottle, that final beat is restored, giving two.
Can I check a haiku or a whole line with it?
Count one word at a time. If you paste several words together, they collapse into a single stream of letters and the word boundaries are lost. For a haiku's five, seven and five pattern, add up the counts word by word.
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/text/count-syllables \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"word":"beautiful"}'const res = await fetch("https://api.kit.forhosting.com/text/count-syllables", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"word": "beautiful"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/count-syllables",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"word": "beautiful"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/count-syllables", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"word":"beautiful"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"word":"beautiful"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/count-syllables", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"word": "beautiful"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.count_syllables",
"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.
Limits
max_tokens | 20000 |
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
Input with no A–Z letters fails with invalid_input and is not billed.
How the vowel-group syllable estimate works
If that stream is empty—digits only, punctuation only, or whitespace only—the request is rejected as invalid_input because there is no pronounceable English word to analyse. The response also reports the unadjusted vowel_groups field and a method tag of vowel_groups so you can audit the intermediate tally in tests and teaching materials.
Input contract, response shape, and error behaviour
fails with a clear message that the word contains no letters and those failures are not billed. Example: beautiful normalizes to beautiful, reports three syllables, and keeps the raw vowel-group count for inspection. Punctuation and hyphens are ignored for counting, so hello! Finite numbers and bigints are stringified so spreadsheet exports that send numeric tokens still work; objects, arrays, booleans, null, and empty strings fail with invalid_input naming the field. After coercion, the letter filter must leave at least one A–Z character; a payload like 12345 or !!! On success the body includes word (the original string), normalized (lowercase letters only), syllables (the adjusted estimate), vowel_groups (raw contiguous vowel runs before silent-e and -le adjustments), and method set to vowel_groups. and co-op still yield a letter stream; multi-token strings collapse to their letters only, so prefer one word per call when you care about token boundaries. Pair the estimate with your own dictionary or IPA pipeline when you need legal-grade pronunciation data; this endpoint is deliberately a tiny parse tool, not a full phonology engine, and that is why every successful call stays at the published $0.002 base price with no model tokens and no outbound network.
Technical questions
How do I count syllables in a word with this API?
Send a JSON body with word set to the string to analyse. The API returns syllables (the adjusted estimate), normalized letters, raw vowel_groups, and method vowel_groups.
What does the syllable counter cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.