Brand voice, measured: the 45-attribute framework for marketing teams

By Jack Stovell · published 2026-09-21 · checked 2026-09-20

A brand voice can be measured. Not described in adjectives, measured: 45 attributes pulled from what the brand has already published. Every new draft then gets scored against that profile. That's the actual difference between a style guide and a measurement, and it's bigger than it sounds.

What a brand voice is, measured

Here's the thing about "friendly but professional, with a bit of personality". It means nothing. Six writers will read that line and produce six different voices, all technically compliant, none of them consistent with each other.

The 45-attribute framework replaces the adjective with a number. Take a B2B software company, the kind that runs a marketing site and a monthly newsletter. Its writing has an actual, measurable average sentence length. It has a real contraction frequency, a real ratio of "the" to "a" to "an", a documented preference for numbered lists over bullets. None of that is invented. It's extracted from copy that already exists.

The attributes sit across eight layers: lexical, syntactic, tone and register, rhetorical, punctuation and format, function words, content patterns, and quirks and cadence. Full list at /reference/writing-voice-attributes. Between them they cover things like vocabulary_diversity_index, avg_sentence_length, formality_score, argument_structure, comma_density, pronoun_distribution, claim_density, and rhythm_pattern. That's a small sample. There are forty-five of these, and each one is countable or model-judged, not guessed.

So when someone says a brand "sounds too corporate this month", that's a claim you can now check. Formality_score either moved or it didn't.

What a style guide can hold and what it cannot

A style guide holds rules. Use "we" not "the company". Avoid exclamation marks. Keep paragraphs short. Fine, useful, necessary even.

What it cannot hold is the shape of the sentences themselves. Nobody writes a rule that says "average sentence length should be 17 words with high variance", because nobody's counting while they write. Nobody writes "contraction frequency around 20 per thousand words", because that number doesn't exist until someone measures it.

That's the gap. A style guide tells a writer what to avoid. It doesn't tell them what the brand's actual rhythm is: how often a paragraph opens with "So", whether the brand tends to front-load its argument or build to the point, whether it uses semicolons at all. Our B2B software brand, say, opens most of its blog paragraphs with "Here's" or "The", almost never with "But". That's a structural signature. No style guide document captures it, because nobody thought to write it down. It was never a rule. It was just what the writing did, consistently, without anyone deciding it.

A profile captures the thing the guide missed: the pattern underneath the rules.

Element of a brand voiceA written style guideA measured profile
Banned words and phrasesLists themLists them and counts every hit in every draft
Register (formal to casual)Describes it in adjectivesA number on a 0 to 10 scale with a tolerance of 3
Sentence length and rhythmRarely mentionedAverage, variance and short-sentence share, counted
ContractionsSometimes a ruleA rate per 1,000 words with a tolerance
Person (we / you / I)Usually a ruleMeasured as shares
The words the brand reaches forExamplesCatalogued from the writing and checked for in each draft
Humour and warmthAdjectivesA labelled register, scored 1 / 0.5 / 0.2
How pieces open and argueRarely coveredOpening style and argument structure, judged per draft
Whether a draft compliesSomeone's readingA score, the features that moved, and a threshold

Building the profile from published writing

You don't write a brand voice profile from scratch. You extract it from what's already out there: the website copy, the newsletter archive, a handful of blog posts.

Extraction runs two passes. Pass one reads each sample on its own and measures it. Pass two synthesises a single profile out of all the samples together, so one oddly formal landing page doesn't skew the whole thing.

There's a floor and a recommendation here. The floor: one sample of at least 50 words. The recommendation: three or more pieces, somewhere around 3,000 words total. Below that, you get a profile, but a thin one. Above it, the numbers settle. Extraction itself takes roughly one to three minutes, and every profile comes back with a confidence_score between 0 and 1, so you know how much to trust it before you start scoring drafts against it.

For the B2B software company, that might mean three newsletter issues and two site pages. Feed those in, get back a profile that says, among other things, that the brand favours a build-to-point clause order, rarely uses ellipses, and leans on numbered steps over inline lists. That's not a house style guide anyone wrote. It's what the brand's own writing already does, made visible.

Scoring a draft against the brand

Once the profile exists, every new draft gets compared to it, feature by feature. The countable features (sentence length, comma density, contraction frequency) are measured in code. The judgement calls (register, structure, whether the tone drifts formal) are assessed by a model. Both get weighted and calibrated into a single score from 0 to 1.

The bands are simple. On-voice drafts land between 0.85 and 0.95. Drifting drafts sit at 0.55 to 0.79. Anything under 0.55 is off voice, full stop. Full method at /reference/voice-measurement-framework.

What does drift actually look like in practice? SGR-001, "Same Brief, Four Voices" (28 July 2026), ran three briefs bare and through a profile on the same model. On the banking brief, average sentence length fell from about 17 words to about 11 once the profile was applied. Sentences under eight words doubled, from 24% to 48%. Contractions rose by roughly 70%. Ten em dashes became none. One run per arm, unedited: it's a small study, but the direction is unambiguous. A profile doesn't just adjust vocabulary. It reshapes the sentence itself.

SGR-002, "ChatGPT vs a measured voice" (20 September 2026), goes further. One author's five blog posts, two held back as test cases, a study profile built from the other three (2,447 words total). Each held-out post became a brief. That brief ran three ways: GPT-5 bare, GPT-5 with the free prompt builder's one-page measured prompt, and ScriptGrain's generation against the profile directly.

Mean voice match against the study profile: ScriptGrain 0.83, bare GPT-5 0.74, GPT-5 with the prompt 0.62. Against the held-out post itself: 0.91, 0.82, 0.80 in the same order. Worth sitting with that middle number. The prompt asked GPT-5 for about 14 contractions per 1,000 words and a formality score of 3.7. GPT-5 produced 0.5 contractions per 1,000 words and a judged formality of 7.2, while still obeying the countable instructions: no em dashes, more short sentences. It followed the rules it could count. It ignored the tone it couldn't.

Length drifted too. Bare GPT-5 wrote 2,309 words against a 1,393-word target, with 17.5 em dashes per draft. ScriptGrain wrote 1,302 words. None. And for what it's worth, detector human-likeness scores didn't track voice match at all: the prompt arm scored 0.78 on detectors, ScriptGrain 0.67, bare GPT-5 0.52. Sounding human and sounding like the brand are not the same measurement. Limits worth stating plainly: two briefs, one author, one run per arm, not blind. Early evidence, not proof.

Several writers, one brand: consistency as a number

Here's where the framework earns its keep. A brand voice isn't one writer's habits, it's what several writers converge on when they're all aiming at the same target.

That convergence used to be a feeling. Someone on the team would read a draft and say it "didn't sound right", without being able to say why. Now it's a spread. Score five writers against the same profile on the same brief, and you get five numbers. Tight spread means the brand voice is holding across the team. Wide spread means someone's drifting, and you know exactly who, and roughly by how much.

The threshold matters here, and it's worth saying plainly: 0.85 isn't handed down from anywhere. It's a team decision. Some brands want every draft above 0.85 before it ships. Others are comfortable letting drafts land in the 0.7s and getting a light edit pass. Neither is wrong. What matters is that the team picked a number and can check against it, rather than arguing about vibes in a comments thread.

And profiles aren't fixed. A brand's writing evolves: it gets more direct over a year, or a new head of content nudges the humour register from none to dry. The profile can be rebuilt from newer samples whenever that shift is real, not chased after every single post. Rebuild too often and you're just measuring noise. Rebuild never and the profile calcifies while the brand moves on without it. See /glossary/voice-drift for what that drift actually looks like over time, and /glossary/brand-voice for the term itself.

What the numbers cannot tell you

A score won't tell you if the argument is any good. It won't tell you if the claim is true, if the example lands, if the joke is actually funny rather than just dry on paper. Confidence_vs_hedging can tell you a sentence is declarative. It can't tell you the declaration was worth making.

So treat the score as a floor, not a ceiling. A 0.9 draft with a boring idea is still a boring idea, just one that sounds correctly like your brand while being boring. That's fine, to be fair; not every problem is a voice problem. The framework is there to catch drift, not to write the thing for you.

Doing it in ScriptGrain

Two ways in. First: brand mimic, pulled straight from a public site, with the site owner's consent. Point it at the domain, and it builds a profile from what's already live, the same way it would from our hypothetical B2B software company's own marketing pages. Second: paste in a set of writing samples yourself (newsletters, blog posts, whatever represents the voice) and get a profile built from those directly.

Either way, the profile travels by API and MCP, read live wherever drafts get generated, not exported as a static prompt.

If you just want a quick answer to "does this page sound like our brand", the free brand voice analyser at /tools/brand-voice-analyser compares any page to a reference piece, no account needed, no profile to build first. Useful for a one-off gut check before committing to the full extraction. Agencies running this across multiple client brands at once should look at /for-agencies.

Questions

How many samples do you need to build a brand voice profile?

One sample of 50 or more words is the technical floor, but a profile built from a single short page is thin and easily skewed. The product recommends three or more pieces totalling around 3,000 words: enough for pass two of extraction to synthesise a stable profile rather than describing one document's quirks.

Is 0.85 the correct threshold for every brand?

No. The 0.85 to 0.95 band marks on-voice drafts generally, but the actual cutoff a team enforces is a decision, not a rule handed down by the framework. Some teams ship at 0.85. Others accept 0.7 drafts and edit lightly. What matters is picking a number and holding to it consistently.

Can a brand voice profile go out of date?

Yes, and it should be rebuilt when it does. Writing evolves: tone shifts, a new writer joins, humour register changes. The profile can be rebuilt from newer published samples whenever that shift is genuine, rather than after every post. Rebuilding too frequently just measures noise instead of real drift.

Does a high voice-match score mean the writing is good?

No. The score measures fit to the brand's own patterns: sentence length, formality, structure, and so on. It says nothing about whether the argument is sound or the example lands. A 0.9 draft can still be a dull one. Treat the score as a floor against drift, not a verdict on quality.

What is the fastest way to check if a single page matches a brand's voice?

Use the free brand voice analyser at [/tools/brand-voice-analyser](/tools/brand-voice-analyser). It compares any page against a reference piece directly, with no account and no need to build a full profile first, which makes it the quickest gut check before committing to a proper extraction.

Methodology

The attribute list and scoring bands are ScriptGrain's own (see the method page); the style-guide comparison table was compiled by ScriptGrain on 2026-09-20 from what written guidelines typically contain. No third-party statistic appears on this page.

Sources