# Haiku Generator > Give it a subject, a mood or a rough line and it writes haiku in English that scan, showing the > syllable count for every line. Its syllable counter runs entirely in the browser, free and without > an account, so you can also paste a haiku you wrote yourself and be told honestly whether it works. https://haiku-generator.skillsafe.ai/ ## What it is A single-purpose web app on SkillSafe. One input, one structured output, no files and no chat. Two things happen on every run, and the second is the point: 1. A model writes the poems, in either strict 5-7-5 or the looser modern English form. 2. A syllable counter running in the browser **recounts every line the model wrote** and compares it against both the form's target and the model's own claimed counts. What the page displays is the browser's count, never the model's claim. That reconciliation is visible in the interface. If the model writes a nine-syllable middle line and calls it seven, the page says so, names the line, and shows the real number. ## The free lane The counter needs no account, no sign-in and no model, and it is a useful tool on its own: - Paste your own haiku and get the syllable count of every line and every word. - See which line is over or under, and by how much. - See which words legitimately count either way, with both readings named. - Click any word to correct how many syllables *you* say. The correction is saved to your account, follows you to another device, and is applied to every count afterwards. - Copy or download the check as plain text. Writing haiku is metered and needs a signed-in SkillSafe account. Checking them is not and never will be. ## The two forms **Strict 5-7-5.** Exactly five, seven and five syllables; seventeen in total. The form everyone learns. It is unforgiving in English because an English syllable carries far more weight than a Japanese *on*, so seventeen English syllables is a longer poem than a Japanese haiku and the images have to be concrete or the extra length reads as padding. **Modern English.** Three lines, short / long / short. Lines 1 and 3 sit between one and six syllables, line 2 between three and nine, line 2 is at least as long as each of the others, and the whole poem totals between eight and fifteen. This is what most haiku published in English actually does. It is a real constraint, not permission to write free verse in three lines. Both forms are offered as equals. Neither is treated as the correct one. ## How the syllable counting works Three tiers, applied to every word in order. 1. **Your own corrections.** A word you have corrected always wins. 2. **A built-in word list** of roughly twelve hundred entries, chosen as the words the rules get wrong plus the common core of English, so ordinary vocabulary never rests on a guess. 3. **Rules over vowel groups** for everything else. The base count is the number of maximal runs of `aeiouy`, corrected for: - **Silent final e** — stripped in *make*, *whale*, *stone*; kept where `-le` or `-re` follows a consonant and is therefore syllabic (*table*, *little*, *ochre*, *centre*), stripped where a vowel precedes the liquid (*whale*, *shore*). - **`-ed`** — a syllable only after *t* or *d* (*wanted*, *needed*), silent elsewhere (*walked*, *hoped*), and never subtracted when the letter before it is a vowel (*cried*, *agreed*). - **`-es`** — a syllable after a sibilant (*boxes*, *wishes*, *beaches*) or after the soft *g*/*c* that a stem's silent e keeps soft (*pages*, *bridges*, *faces*), silent otherwise (*makes*, *leaves*, *notes*). `-les` after a consonant keeps its syllabic *-le* (*apples*, *bottles*). - **Hiatus** — vowel pairs that are two syllables rather than one, decided on the preceding consonant because English marks the collapse there far more reliably than on the vowels: `ia` and `io` split after most letters (*piano*, *India*, *radio*, *violin*) and collapse after *c, t, s, x, g* and, for `io`, *n* and *l* (*special*, *nation*, *vision*, *onion*, *region*, *million*). `iu` always splits (*medium*, *helium*). `ua` splits except after *q* and *g* (*usual*, *annual* against *quantity*, *guard*). `oe` splits inside a word (*poem*, *poet*, *coerce*) but not before an *s* (*goes*, *shoes*, *does*). - **Syllabic `-sm` and `-thm`** — *prism*, *chasm*, *rhythm* each gain a syllable no vowel letter marks. - **Consonant-initial suffixes** — *-ly*, *-ness*, *-ful*, *-less*, *-ment* and friends are counted against a stem that has already had its silent e removed, which is what keeps *lovely* at two rather than three. - **Numerals**, read as spoken: *7* is two syllables, *17* is three, *1984* is five. ## Where it stops working — stated plainly Some words have no single right answer, and the app refuses to invent one. **Fire, flower, hour, our, every, heaven, quiet, poem, iron, world, prayer, science, towards** and about a hundred others are held as an explicit either-way list. A line containing one is never given a single number: it is shown as a range, both readings are named, and a poem that hits the form on only one of them is labelled "scans on one reading" rather than being passed or failed. Beyond that, two things are genuinely weak and are marked as uncertain rather than counted silently: - **Compounds with a silent e trapped inside them** — *timeworn* reads as three to the rules and is two. - **Long vowel runs** — *hydrangea*, *sequoia*, *queueing*. Any word containing three or more consecutive vowel letters is flagged low-confidence on principle. Measured on a held-out set of ninety words deliberately absent from the word list, the rules alone are right about 99% of the time; the word list exists because the remaining errors cluster on exactly the everyday words a poem is most likely to use. ## The output contract One JSON object. `title`, `reading`, `form`, then `poems[]` — each with `id`, `form`, three `lines`, a `syllables` array, `season_word`, `cut_after_line`, `note` and `changed` — then `craft_notes[]`, `set_aside[]` (lines the model wrote and rejected, with reasons) and `summary`. `syllables` is the model's own claim and is treated as one. The interface shows the browser's count beside it and flags every disagreement. ## Fixing a draft you already wrote Paste three lines, switch the mode to "my draft, to be fixed", and the run keeps your images while repairing the scansion. Every returned poem carries a `changed` list naming what was altered and why — *"line 2: dropped 'quietly' and 'the', which were the two syllables over"* — so you can see whether the repair cost you the thing you cared about. ## Cost Runs are metered against a SkillSafe account and priced per run; the price is shown before you commit, as a reservation that is usually far larger than the eventual charge. The syllable checker, the word corrections, the exports and the bundled example runs are all free and work without an account. ## API Full documentation, with worked examples in cURL, Python, JavaScript, Go, Java, Ruby, PHP and C#: https://haiku-generator.skillsafe.ai/api.html Base URL `https://api.skillsafe.ai/v1/app-api`. One input shape, not a lane router: `text` is the work object whether it is a subject or a draft, and a draft arrives with a `draft` object attached. ## Not what this is Not a rhyming dictionary, not a general poetry generator, not a scansion tool for metrical verse. It counts syllables and writes haiku, and it tells you when it is unsure.