Contraction rate analyser
By Jack Stovell · published 2026-09-24
Contraction rate (contraction_rate) is a writer's overall tendency to contract words in a given register: a unitless value where higher means more contracted. A model judges it in a ScriptGrain voice profile, and it never moves the voice match score. Code counts a separate attribute, contraction frequency, in contractions per 1,000 words when drafts are scored.
Analyse your contraction rate free
Your free voice profile measures contraction rate among all 45 attributes, from a sample of your own writing. No card needed.
Try the six-signal check first
At a glance
- API field: contraction_rate
- How it is measured: Judged by an AI model
- Group: Tone and register (ScriptGrain voice profile, 45 attributes in 8 groups)
- Scale: unitless tendency; higher means more contracted (ScriptGrain attribute definitions)
- Voice match: Not scored (ScriptGrain voice-match engine (published method))
What contraction rate measures
Contraction rate measures how naturally your writing leans on "don't", "it's" and "you're" instead of their full forms, across whatever register you're writing in. The app's own definition calls it "overall tendency to contract words in this register (unitless; higher means more contracted)", and that phrasing matters: it's a tendency, judged by an extraction model reading your samples, not a tally pulled from code. Claude Sonnet 5 does the reading, in two passes: pass one goes sample by sample (each 50+ words), pass two synthesises everything into one profile with a confidence score attached. There is no fixed scale: the field is a plain number with no unit, and ScriptGrain's own sample data holds values from 0.08 to 35.2.
Contraction rate and contraction frequency sound like the same measurement wearing two names. They are two attributes. Contraction frequency sits in the lexical group, in contractions per 1,000 words, and code counts it when a draft is scored. Contraction rate is the model's higher-level judgement of the same behaviour, unitless, sitting in the tone and register group with five siblings. It pairs naturally with formality score: ScriptGrain's Formal register avoids contractions and its Conversational register uses them freely.
How contraction rate is scored
Contraction rate does not move your voice match score. The voice-match engine has no comparator for this attribute, so this reading can't push the number up or down, and polish can't target it. Of the profile's 45 attributes, 28 can shift a voice match score; this isn't one of them. Your contractions still matter, though: code counts them per 1,000 words in every scored draft, under contraction frequency, at a weight of 2.
That doesn't make it decorative. It still shapes how a profile writes when you generate with it, which is a separate mechanism from scoring. For the mechanics of what does move a score, comma density, pronoun mix, sentence length and the rest, see the voice measurement framework and the voice match glossary entry.
How to analyse contraction rate in your own writing
You can get a rough reading of your own contraction habits by hand, no software required.
- Pull a sample of your writing, at least a few hundred words, ideally from the register you actually care about (an email isn't a whitepaper).
- Count every contraction: "don't", "can't", "it's", "we're", all of it.
- Count total words in the same sample.
- Divide contractions by words and multiply by 1,000. That gives contractions per 1,000 words, the unit of contraction frequency; contraction rate itself has no unit, so this count is the closest you can get by hand.
- Repeat across two or three samples in the same register and compare. One outlier tells you nothing; a pattern across samples does.
- Ask whether the number matches the register. A conversational newsletter sitting near zero contractions will read stiff regardless of what else it does right.
ScriptGrain's free voice profile reads contraction rate from a writing sample among all 45 attributes, contraction frequency included.
Typical contraction rate in published writing
There is no typical value for contraction rate itself; the published figures are for its counted proxy, contraction frequency. ScriptGrain's reference corpus is 299 recent public English-language pieces from 47 sources (blogs, newsletters and essay sites; 835,655 words, built 2026-09-20), each measured with the product's own code and then discarded. Across it, contraction frequency runs: p10 at 8.1, p25 at 13.8, median 19.4, p75 at 24.7, p90 at 32.2, all contractions per 1,000 words.
Read that median plainly: half the pieces in the corpus use fewer than about 19 contractions per 1,000 words, half use more. At 8 you contract less than about nine in ten of them; at 32, more than about nine in ten. Compare your own hand count with these figures, never a profile's contraction rate, which has no unit.
How to make AI contract words the way you do
Getting an AI assistant to contract words the way you actually do comes down to telling it two things clearly.
- Name the register explicitly. Contraction habits shift hard between formal, professional and conversational writing, and an assistant left to guess the register can guess wrong. In ScriptGrain, the Conversational register uses contractions freely; say so.
- Hand it a real sample written for the same audience. A model imitating your contraction habits from an actual paragraph will do better than one working from a description of them.
When ScriptGrain writes, this attribute travels in the voice profile JSON block of the system prompt as a hard constraint, and the register override governs contractions directly: Formal "Avoid contractions", Professional "Allow selective contractions", Conversational "Use contractions freely". The profile reaches ChatGPT, Claude and other tools through the API and the MCP server, contraction rate and contraction frequency included.
How to make AI stop contracting in formal copy
Stopping an AI from contracting in formal copy is mostly about naming the register and then policing the edges.
- Pick the right register up front. In ScriptGrain, Formal avoids contractions outright; Professional allows selective ones. Choose deliberately rather than leaving it to the default.
- Ask explicitly for full forms in openings, conclusions and instructions, the three places a stray "don't" reads worst.
- Keep contractions out of terms, prices and quoted figures altogether. Example: "The agreement does not renew automatically" beats "doesn't" in a contract clause, every time.
The same generation mechanism applies here: the attribute sits inside the profile as a constraint, and in ScriptGrain the Formal override does the heavy lifting for that piece. In ChatGPT or another tool reading your profile through the API or MCP server, ask for full forms outright.
Questions
What is a contraction rate analyser?
It's a way of reading how contracted a piece of writing is, either by counting contractions per 1,000 words by hand or letting a voice profile judge the tendency across samples. A ScriptGrain voice profile does the judged version automatically, alongside 44 other attributes, from your writing samples.
Contraction rate vs contraction frequency: what's the difference?
Contraction frequency is contractions per 1,000 words, a lexical attribute that code counts when a draft is scored; it moves the voice match score and has reference corpus figures (median 19.4). Contraction rate is judged: an extraction model's read on your overall tendency to contract in a register, unitless, higher meaning more contracted. It has no corpus figures and never moves the score.
How is contraction rate measured?
An extraction model, Claude Sonnet 5, reads your samples in two passes: sample by sample, then synthesised into one profile. There's no code counting contractions for this attribute; that job belongs to its proxy, contraction frequency. Values in ScriptGrain's own sample data run from 0.08 to 35.2, so it has no fixed scale.
How do I make AI write in a more conversational register?
Tell it the register directly and give it a real sample from that register, rather than a bare request to "sound more casual". In ScriptGrain, the Conversational register tells the generator to use contractions freely and shifts formality to the 3 to 5 range on the 0 to 10 scale. Your profile's other tone attributes, such as humour register and confidence vs hedging, still apply.
How do I make ChatGPT sound less stiff?
Name the register you want, supply a genuine writing sample, and ask for contractions wherever a person reading aloud would use them. Then count the contractions in the result against your own writing instead of trusting the instruction. Contractions are not the only source of stiffness: a high formality score and heavy hedging make prose stiff too.
Related
- Tone and register attributes
- Formality score
- Humour register
- Emotional expressiveness
- Tone and register, measured: the attributes behind 'that sounds like us'