Formality score analyser

By Jack Stovell · published 2026-09-24

Formality score (formality_score) rates how formal a piece of writing reads, from 0 (casual) to 10 (highly formal). No code counts it: Claude Sonnet 5 judges it from your samples to build a ScriptGrain voice profile, and Claude Haiku judges drafts on the same scale when they are scored. It moves the voice match score with a weight of 2.

Analyse your formality score free

Your free voice profile measures formality score among all 45 attributes, from a sample of your own writing. No card needed.

Try the six-signal check first

At a glance

What the formality score measures

The formality score measures the register a piece of writing is pitched in, as one number: does it sound like a memo or a text message? ScriptGrain's own definition is blunt about it: "How formal the register reads: 0 is casual, 10 is highly formal." There are no sub-scores and no separate marks for vocabulary and sentence structure. Contractions, word choice, sentence shape and direct address all affect how formal a piece reads; the score records the overall impression.

It sits in the tone and register group with five other attributes, including humour register and emotional expressiveness. A profile stores each one separately, so a formal legal letter with a dry joke buried in it can read as formal and dry at once.

Formality measures register, so a casual piece can be grammatically flawless and still score a 1. ScriptGrain has no reference corpus figure for formality, so this page quotes no typical score for business emails or anything else.

How formality is scored

Formality is scored by a model reading the writing and judging the register; no code counts it. When ScriptGrain builds your voice profile, Claude Sonnet 5 runs two passes: pass one reads each sample and returns every attribute, pass two synthesises them into one profile. The formality_score it stores is a number from 0 to 10.

When a draft is checked against your profile, a different model does the judging: Claude Haiku (claude-haiku-4-5) reads the draft and returns its own formality score from 0 to 10. Code then compares the two numbers: similarity is 1 minus the gap divided by a tolerance of 3 points, floored at 0. An exact match earns full credit on this feature; if your profile says 6 and the draft is judged 9, the 3-point gap earns nothing.

Formality carries a weight of 2 in the voice match score, which rates a text from 0 to 1 against your profile. Judged values shift slightly from run to run, because a model makes the call each time. The voice measurement framework sets out how judged and counted features combine into one score.

How to score your own writing for formality

You can score your own writing for formality by hand in a few minutes. Take two or three pieces and, for each one:

  1. Count your contractions. Lots of "don't", "it's", "we're"? That pulls the score down towards casual.
  2. Check for direct address. Are you talking to "you" like a person in the room, or writing about "the reader" in the third person? Direct address reads casual.
  3. Look at sentence length and structure. Short, punchy sentences read casual. Long, subordinate-clause-heavy sentences read formal.
  4. Scan for slang, idioms and asides. Parentheses with a joke in them, casual phrases like "fair enough": these drag the score down.
  5. Check your vocabulary. Standard verbs read more casual than nominalisations. "We decided" is more casual than "a decision was reached".
  6. Weigh it all up and place the piece on the 0 to 10 scale. ScriptGrain's generation registers make useful reference points: Casual targets 1 to 3, Conversational 3 to 5, Professional 6 to 8 and Formal 8 to 10.
  7. Average the pieces. One piece can mislead: in ScriptGrain's SGR-003 study, formality read from a single piece was 0.9 points away from the value a 15-piece profile settled on, 0.3 at three pieces and about 0.1 from five.

ScriptGrain's free voice profile reads formality from a writing sample among all 45 attributes, alongside contraction rate and confidence vs hedging.

Examples of formality in real writing

Formality shows up as a pattern across word choice, contractions and sentence shape, not as any single marker. Here is one message at three registers.

Example: "We regret to inform you that your application has not been successful at this time." (Formal register: no contractions, distanced phrasing, no direct chatty address.)

Example: "We've reviewed your application and, unfortunately, it hasn't been successful this time." (Professional register: selective contractions, plain words, still courteous.)

Example: "Sorry, but this one didn't work out." (Casual register: contraction, short sentence, plain words.)

None of these carries a measured score; they show the direction of the scale.

How to make AI writing more formal

You make AI writing more formal by stripping out contractions, casual asides and short punchy sentences, then rebuilding with longer, structured ones. Steps:

  1. In ScriptGrain, choose the Formal register: no contractions, slang or colloquialisms, and longer, structured sentences. It shifts formality_score to the 8 to 10 range for that piece.
  2. Replace contractions with full forms: "don't" becomes "do not", "it's" becomes "it is".
  3. Swap colloquial verbs for standard ones: "get" becomes "obtain" or "receive", depending on context.
  4. Remove direct asides to the reader and first-person chat; cut anything that sounds like you're leaning across the table.
  5. Lengthen and structure your sentences rather than stacking fragments.

When ScriptGrain writes from your profile, formality_score goes into the voice profile JSON block of the system prompt under the instruction "Treat every attribute as a hard constraint, not a suggestion." A register override, set on the Generate page or in the API's register field, adds a direct line on top: "REGISTER OVERRIDE, FORMAL: Shift formality_score to 8-10 range." The profile itself reaches ChatGPT, Claude and other tools through the API and the MCP server, so they can read the same formality_score.

How to make AI writing less formal

You make AI writing less formal by adding contractions, addressing the reader directly and cutting stock formal phrases. Steps:

  1. In ScriptGrain, choose Conversational (formality 3 to 5) or Casual (1 to 3), depending on how far you want to go.
  2. Use contractions freely: "do not" becomes "don't".
  3. Address the reader as "you" instead of writing around them in the third person.
  4. Turn nominalisations back into verbs: "a decision was made" becomes "we decided".
  5. Cut stock formal phrases such as "it is important to note".

A Casual override works the same way in reverse, with an instruction to shift formality_score to the 1 to 3 range. Outside ScriptGrain, a number in a prompt is no guarantee: in ScriptGrain's ChatGPT vs a measured voice study, a prompt that asked GPT-5 for formality 3.7 got drafts judged 7.2 on both briefs. Score what comes back against your profile.

Questions

How is formality scored?

A model judges it; no code counts it. When your voice profile is built, Claude Sonnet 5 reads your samples in two passes and stores a formality_score from 0 to 10. When a draft is checked for voice match, Claude Haiku judges the draft on the same scale and code compares the two: the closer they are, the more the feature earns, and a 3-point gap earns nothing. Formality carries a weight of 2.

How formal is my writing?

Check for contractions, direct address to the reader, sentence length and slang. Heavy contractions and short punchy sentences push you towards the casual end, near 0; long structured sentences, full forms and distanced phrasing push you towards 10. For reference points, ScriptGrain's registers target 1 to 3 for Casual, 3 to 5 for Conversational, 6 to 8 for Professional and 8 to 10 for Formal. Its free voice profile reads your formality from a writing sample among all 45 attributes.

How do I make ChatGPT less formal?

Ask for contractions, direct "you" address and shorter sentences, and tell it to drop stock phrases such as "it is important to note". Then check the result: in ScriptGrain's SGR-002 study, a prompt that asked GPT-5 for formality 3.7 out of 10 produced drafts judged 7.2. Connected to ScriptGrain through the API or MCP server, ChatGPT can read your profile's formality_score, and a voice match score shows how close a draft came to your voice.

How do I make AI writing more formal?

Replace contractions with full forms, swap colloquial verbs for standard ones, cut asides to the reader and build longer, structured sentences. In ScriptGrain, the Formal register adds an instruction to shift formality_score to the 8 to 10 range and tells the generator to avoid contractions, slang and colloquialisms for that piece, while the rest of your voice profile still applies as hard constraints.

What is a formality checker?

A formality checker is any tool that reads a piece of writing and says where it sits between casual and formal. ScriptGrain's version is one reading among 45 in a voice profile: a score from 0 to 10, judged by a model from your samples rather than counted by rules, stored as formality_score and returned as JSON by the API and the MCP tool get_profile.

Related

Sources