Tone analyser

By Jack Stovell · published 2026-09-24

A tone analyser reads how formal, funny, emotional, contracted and hedged a piece of writing is, and whether its register shifts with the audience. In ScriptGrain, tone and register is one of 8 groups in a 45-attribute voice profile: six attributes, all judged by a model from your samples, and four of them move the voice match score.

Analyse your tone and register attributes free

Your free voice profile measures every tone and register attribute among all 45, from a sample of your own writing. No card needed.

Try the six-signal check first

At a glance

What the tone and register group measures

Tone and register measures the register and attitude a writer defaults to: how formal they sound, whether they're funny and in what way, how much emotion leaks into the prose, how often they contract words, how confidently they state things, and whether any of that shifts depending on who's reading. Six attributes in total, all judged by the extraction model rather than counted in code. Voice vs tone vs style explains where tone ends and voice begins.

Formality score runs 0 to 10, 0 being casual and 10 being highly formal. It carries the group's heaviest voice match weight, 2.

Humour register names the dominant humour style with one of five labels: dry, sarcastic, self-deprecating, warm or none. It is a category, so a writer doesn't get "more" sarcastic the way they get more formal; the profile records which kind of humour leads.

Emotional expressiveness covers how openly emotion shows in the prose, rated low, medium or high. Example: low reads flat even when the subject matter is dramatic; high lets feeling surface even in dry subject matter.

Contraction rate is the model's reading of how readily you write "don't" for "do not" in this register: a unitless tendency, where higher means more contracted. It is a different attribute from contraction frequency, the per-1,000-words measure in the lexical group that code counts when a draft is scored.

Confidence vs hedging runs 0 to 1. Zero is heavy hedging (maybe, perhaps, I think); 1 is highly declarative. This is the attribute that tells you whether a writer commits to claims or wraps them in qualifiers.

Audience adaptation is a straight yes or no: does the register shift depending on who's being addressed. Some writers sound the same to everyone. Others noticeably soften or sharpen depending on the reader.

How tone and register features are scored

None of the six tone and register attributes are counted in code; all six are judged by the extraction model, and four of them move your voice match score. Contraction rate and audience adaptation are stored and returned with the profile, but they never feed the score. Formality (weight 2), humour register (weight 1.5), confidence vs hedging (weight 1.5), and emotional expressiveness (weight 1) do.

When a draft is scored, code counts some features straight from the text: sentence lengths, punctuation marks, pronoun ratios, the kind of thing a script can tally without understanding a word of it. Judged features need a reader. Claude Sonnet 5 reads your samples to build the profile, and Claude Haiku reads each draft and returns its formality, humour register, emotional expressiveness and confidence vs hedging for the comparison. No script in ScriptGrain counts "dry humour" the way it counts commas.

Across the full 45-attribute profile, code counts 14 attributes when it scores a draft or runs the free tools; the rest, including all six here, are judged by a model or collected as word lists. Of the 45, 28 can move the voice match score. The voice measurement framework sets out every weight and tolerance, and the 45 writing voice attributes lists every group.

Every value in a ScriptGrain profile, tone and register included, is the extraction model's reading (Claude Sonnet 5), and judged values vary slightly from run to run. Two readers, human or machine, can land on slightly different formality scores for the same paragraph. Labels move most: in ScriptGrain's SGR-003 study, 13 labelled attributes, humour register and emotional expressiveness among them, agreed with a 15-piece profile 72% to 87% of the time, depending on how many pieces built the profile.

How to analyse the tone and register of your own writing

You can analyse tone and register by hand with one check per attribute.

  1. Pull five or six sentences at random from a recent piece and read them cold. Ask whether they'd sound out of place in an email to your boss. That's your formality gut-check.
  2. Count contractions across a full paragraph. "Don't," "it's," "you'll." A high count suggests conversational; a low count suggests something more buttoned-up.
  3. Look for hedging words: maybe, perhaps, I think, might. If they show up constantly, you're closer to 0 on confidence vs hedging than you'd probably guess.
  4. Check for humour and name its type. Dry? Self-deprecating? None at all? Be honest, and allow "none".
  5. Read the same passage next to something you wrote for a different audience, a client update versus a friend's text, say. If the register barely changes, that's a "no" on audience adaptation.
  6. Note where emotion actually surfaces, if it does at all, and how directly.

ScriptGrain's free voice profile reads all six tone and register attributes from a writing sample, alongside the other 39.

How to make AI writing match your tone and register

You make AI match your tone by giving it your profile's values instead of an adjective, then scoring what comes back. "Write more casually" is a guess; a formality score of 3 with a dry humour register is an instruction.

  1. Gather several writing samples, ideally 3,000+ words across up to 20 uploads, so the read isn't skewed by one unusually formal or unusually jokey piece.
  2. Build the profile so the six tone and register attributes are read alongside the rest of the 45.
  3. Check the humour register and confidence vs hedging values against your own sense of your writing. If one looks wrong, add samples that represent you better; labels such as humour register are the least stable part of a profile. Answer the Profile page's question "Does your tone change with the audience?" too: it feeds the next re-extraction.
  4. Feed the profile into your drafting process rather than a one-line tone note. A number and a category do more work than an adjective.
  5. Check new drafts against the profile with voice match, which calls 90%+ Excellent, 75 to 89% Good, 60 to 74% Fair and under 60% Low.

When ScriptGrain drafts, all six go into the voice profile JSON block of the system prompt as hard constraints, and a per-piece register override (Formal, Professional, Conversational or Casual) shifts formality for that piece. The profile reaches other tools through the API and the MCP server: `GET /v1/profiles/{id}` and the MCP tool `get_profile` return all 45 attributes as JSON on every plan, so ChatGPT, Claude or any MCP-compatible tool can read the same formality score and humour register your profile stores. Tone matching covers why tone alone is a weak test of voice, and the attributes hub lists every group.

Attributes in this group

Questions

What is a tone analyser?

A tone analyser is a tool that reads a piece of writing and scores its register: how formal it sounds, what kind of humour it uses, how much emotion shows, how often words get contracted, how confidently claims are stated, and whether the register shifts by audience. ScriptGrain's version treats this as one of 8 attribute groups inside a 45-attribute voice profile, with all six values judged by the extraction model rather than counted mechanically.

How is tone scored in a voice profile?

None of the six tone and register attributes are counted in code; all six are judged by the extraction model reading the sample. Four of them, formality, humour register, confidence vs hedging, and emotional expressiveness, carry weights (2, 1.5, 1.5, and 1) that feed the voice match score. Contraction rate and audience adaptation are stored but don't move that score. Judged values vary slightly from run to run.

How do I analyse tone in my own writing?

Read a sample cold and check it against a formal context, like an email to your boss. Count contractions and hedging words (maybe, perhaps, I think). Name any humour type honestly, then compare register across two different audiences to see whether it shifts. That manual check mirrors what ScriptGrain's free profile reads automatically across all six tone and register attributes plus the other 39.

How do I make AI writing match my tone?

Give the AI your profile's values rather than a vague instruction. Upload writing samples (3,000+ words is the suggested amount), run the analysis, and check the resulting formality score, humour register and confidence-vs-hedging values against your own sense of your writing. Feed that profile into drafting through the API or MCP server so tools like ChatGPT and Claude read the same numbers, not a paraphrased tone note.

What is register analysis in writing?

Register analysis looks at how a piece of writing is pitched for its reader and setting: how formal it is, how much humour and emotion it allows, how often it contracts words, how firmly it states claims and whether any of that changes with the audience. ScriptGrain's tone and register group covers those six attributes, from formality score to audience adaptation, and a voice profile reads all six from your samples.

Related

Sources