# Writing voice attributes: the 45 measurements of a writing style

> A writing voice profile is a structured reading of 45 attributes across eight groups, from vocabulary and sentence shape to punctuation habits and paragraph rhythm.

Canonical: https://scriptgrain.com/attributes

# Writing voice attributes: the 45 measurements of a writing style

*By Jack Stovell · published 2026-09-24*

A writing voice profile is a structured reading of 45 attributes across eight groups, from vocabulary and sentence shape to punctuation habits and paragraph rhythm. Each stored value is Claude Sonnet 5's reading of your samples, made in two passes. That's the whole idea: turn something people call "a feel" into 45 numbers, labels and word lists you can compare.

## Analyse your voice attributes free

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

[Try the six-signal check first](https://scriptgrain.com/#sg-measure)

## At a glance

- Attributes: **45** (ScriptGrain voice profile)
- Groups: **8** (ScriptGrain voice profile)
- Counted in code: **14 (when a draft is scored, or in the free tools)** (ScriptGrain voice-match engine and free tools)
- Can move the voice match score: **28 of 45** (ScriptGrain voice-match engine (published method))

## What a writing voice profile measures

A writing voice profile measures the parts of your writing that stay consistent even when the topic changes: how you say things, whatever you're saying. Sentence length. How often you contract "do not" into "don't". Whether you open with a question or a story. Whether you hedge or state things plainly.

Here's the thing: most people think style is vibes. Much of it is countable. You can count commas per sentence. You can count how often "I" shows up against "you" and "we". You can measure the balance of the, a and an in a sample. The rest (formality, humour, how an argument is ordered) takes a reader's judgement. ScriptGrain's extraction model reads all 45 attributes, sorted into eight groups so the reading stays organised rather than becoming one giant undifferentiated list.

That structure matters more than it sounds like it should. Lexical habits (word choice) behave differently from rhetorical habits (how an argument is built), and lumping them together hides patterns. Split them into groups and you can see, for instance, that someone's vocabulary is plain (short, common words) while their argument structure is sophisticated (conclusion first, then build the case). That combination is a voice. One number alone never is.

## The eight groups of voice attributes

The eight groups of voice attributes cover word choice, sentence construction, tone, persuasion technique, punctuation, small connecting words, content patterns and personal rhythm, four to seven attributes each. Here's what sits in each one; the attribute reference lists all 45 as a dataset.

[Lexical](https://scriptgrain.com/attributes/lexical) covers 6 attributes: word choice. How varied the vocabulary is across a piece, which distinctive words keep recurring, how long and how rare the words tend to be, which filler phrases you reach for without noticing, and how often you contract. This is the layer most people mean when they say someone "sounds like themselves". It's also the easiest to fake badly, which is exactly why measuring it properly matters.

[Syntax](https://scriptgrain.com/attributes/syntax) covers 7 attributes: sentence construction. Average sentence length, how much that length varies from one sentence to the next, how complex the clauses get, where the main clause sits in relation to the rest, and the marks that live inside a sentence: brackets, dashes, semicolons. A writer who never varies sentence length reads like a metronome. One who swings from four words to forty reads alive. Both are measurable, not just felt.

[Tone and register](https://scriptgrain.com/attributes/tone-and-register) covers 6 attributes: register and attitude. Formality, humour, how emotionally expressive the writing runs, a second contraction attribute (contraction rate, judged by the model and separate from the lexical contraction frequency), confidence against hedging, and whether the register shifts depending on who's being addressed. A profile with high confidence and low hedging reads like someone who believes what they're telling you. The model reads that from the text, with no personality quiz involved.

[Rhetoric](https://scriptgrain.com/attributes/rhetoric) covers 6 attributes: how a piece is built to persuade. How it opens, how it closes, how often metaphor appears, repetition used deliberately for emphasis, the transitions that stitch sections together, and the order the argument follows: conclusion first, or a slow build to the point. Two writers can share every lexical habit and still persuade completely differently because of this layer alone.

[Punctuation and format](https://scriptgrain.com/attributes/punctuation-and-format) covers 6 attributes: marks and layout. Commas per sentence, exclamation mark frequency, ellipsis use, whether questions turn up inside the body text rather than just headings, capitalisation habits, and how lists are formatted, if they appear at all. Small stuff. Adds up fast.

[Function words](https://scriptgrain.com/attributes/function-words) covers 5 attributes: the small words used without thinking. The balance between the, a and an, the preferred contrast word (but, however, yet), the mix of I, we and you, the connecting phrases that bridge ideas, and the words a paragraph tends to open with. Nobody consciously decides to prefer "but" over "however". That's exactly why it's a useful signal.

[Content patterns](https://scriptgrain.com/attributes/content-patterns) covers 4 attributes: what the writing carries. How specific the claims run, how often anecdotes show up, the density of claims per paragraph, and whether analogies do the explanatory work or whether everything gets stated directly. This is where "data-driven" and "story-led" writers part ways.

[Quirks and cadence](https://scriptgrain.com/attributes/quirks-and-cadence) covers 5 attributes: personal habits and rhythm. Recurring spellings, whether the rhythm reads punchy or flowing, paragraph length preference, where the strongest sentence in a piece tends to land, and recurring structural shapes, like fragments after a long build-up sentence. This is the group that catches the stuff a person does without ever noticing they do it.

## How the 45 attributes are measured

The 45 attributes are read by an extraction model, Claude Sonnet 5, working through your samples in two passes; a mix of code and model judgement then scores drafts against that profile. Pass one reads each sample (minimum 50 words) and returns a reading for every attribute. Pass two synthesises all of those readings into one profile, complete with a narrative description and a confidence score from 0 to 1. Every value stored in a profile is that model's reading of your samples.

Scoring works differently to building. When a draft gets scored, or you run one of the free tools, code counts 14 of the attributes directly: things like sentence length, comma density, pronoun ratios and article balance. A model judges the rest, and some attributes are stored as word lists rather than single numbers (preferred words and filler phrases, for example).

To build a profile:

1. Upload your writing samples: up to 20 of them, with the app suggesting 3,000 or more words total for a reliable read.
2. The extraction model runs pass one across each sample individually, returning a full attribute reading per sample.
3. Pass two merges those readings into a single profile, with a narrative summary and a confidence score between 0 and 1.
4. Later drafts get compared against that profile using voice match scoring: code counts sentence, punctuation, pronoun, article and word-length features, a separate model judges formality, humour, structure and rhythm, and a weighted comparison runs through a fixed calibration. 28 of the 45 attributes can move that score; the [Voice Match method](https://scriptgrain.com/reference/voice-measurement-framework) sets out the weights.

The app translates the resulting percentage into a plain label: 90% or above is Excellent, 75 to 89% is Good, 60 to 74% is Fair, and anything under 60% is Low.

## How the attributes are used to write like you

The attributes are used to write like you by turning a stored profile into structured instructions a model can follow. When ScriptGrain writes a draft, the profile goes into the system prompt as a JSON block under the instruction "Treat every attribute as a hard constraint, not a suggestion." Outside ScriptGrain, GET /v1/profiles/{id} and the MCP tool get_profile both return the full 45 as JSON on every plan, including the free one. That means ChatGPT, Claude and any other MCP-compatible tool can pull a profile directly and generate against it, rather than someone having to copy a style description into a prompt by hand each time.

That's the difference between describing a voice and operating one. A written description degrades every time it's copied and reused. A structured profile, fetched through the API or MCP server, is the same on every call. The free plan includes one voice profile, one full writing analysis across all 45 reference points, connection to ChatGPT, Claude and any MCP tool, and one taster draft; generation beyond that sits on the paid tiers.

## Lexical

Word choice: how varied, distinctive, long and rare your words are, your fillers and how often you contract.

[Lexical score analyser](https://scriptgrain.com/attributes/lexical)

- [Vocabulary diversity](https://scriptgrain.com/attributes/vocabulary-diversity): How varied the word choice is: 0 means highly repetitive, 1 means maximally varied.
- [Preferred words](https://scriptgrain.com/attributes/preferred-words): The most-recurring distinctive words across your samples.
- [Word length distribution](https://scriptgrain.com/attributes/word-length-distribution): The share of short, medium and long words in your writing.
- [Rare word rate](https://scriptgrain.com/attributes/rare-word-rate): How often uncommon words appear.
- [Filler phrases](https://scriptgrain.com/attributes/filler-phrases): Filler expressions you reach for repeatedly.
- [Contraction frequency](https://scriptgrain.com/attributes/contraction-frequency): How often contractions (it's, don't, we're) appear.

## Syntax

Sentence build: length, variation, complexity, clause order and the punctuation that shapes sentences.

[Syntax analyser](https://scriptgrain.com/attributes/syntax)

- [Average sentence length](https://scriptgrain.com/attributes/average-sentence-length): The average number of words in a sentence.
- [Sentence length variance](https://scriptgrain.com/attributes/sentence-length-variance): How much sentence length swings between short and long (unitless; higher means more variation).
- [Sentence complexity](https://scriptgrain.com/attributes/sentence-complexity): Whether sentences lean simple, compound, complex, or a mix.
- [Clause ordering](https://scriptgrain.com/attributes/clause-ordering): Whether the point comes first, is built up to, or varies.
- [Parenthetical rate](https://scriptgrain.com/attributes/parenthetical-rate): How often asides in brackets or dashes appear.
- [Dash frequency](https://scriptgrain.com/attributes/dash-frequency): How often dashes are used.
- [Semicolon frequency](https://scriptgrain.com/attributes/semicolon-frequency): How often semicolons are used.

## Tone and register

Register and attitude: formality, humour, emotion, confidence and whether you shift with the audience.

[Tone analyser](https://scriptgrain.com/attributes/tone-and-register)

- [Formality score](https://scriptgrain.com/attributes/formality-score): How formal the register reads: 0 is casual, 10 is highly formal.
- [Humour register](https://scriptgrain.com/attributes/humour-register): The dominant humour style: dry, sarcastic, self-deprecating, warm, or none.
- [Emotional expressiveness](https://scriptgrain.com/attributes/emotional-expressiveness): How openly emotion shows in the prose.
- [Contraction rate](https://scriptgrain.com/attributes/contraction-rate): Overall tendency to contract words in this register (unitless; higher means more contracted).
- [Confidence vs hedging](https://scriptgrain.com/attributes/confidence-vs-hedging): 0 means heavy hedging (maybe, perhaps, I think); 1 means highly declarative.
- [Audience adaptation](https://scriptgrain.com/attributes/audience-adaptation): Whether the register shifts depending on the audience.

## Rhetoric

How you persuade: openings, closings, metaphor, repetition, transitions and argument order.

[Rhetorical analyser](https://scriptgrain.com/attributes/rhetoric)

- [Opening style](https://scriptgrain.com/attributes/opening-style): How pieces typically open: a hook, context-setting, a direct point, an anecdote, or a question.
- [Closing pattern](https://scriptgrain.com/attributes/closing-pattern): How pieces typically end.
- [Metaphor usage](https://scriptgrain.com/attributes/metaphor-usage): How often metaphors appear.
- [Repetition as emphasis](https://scriptgrain.com/attributes/repetition-as-emphasis): Whether repetition is used deliberately for emphasis.
- [Transition style](https://scriptgrain.com/attributes/transition-style): How the writing moves from one idea to the next.
- [Argument structure](https://scriptgrain.com/attributes/argument-structure): Whether arguments lead with evidence, lead with the conclusion, or unfold as a narrative.

## Punctuation and format

Commas, exclamations, ellipses, questions, capitals and how you use lists.

[Punctuation analyser](https://scriptgrain.com/attributes/punctuation-and-format)

- [Comma density](https://scriptgrain.com/attributes/comma-density): The average number of commas in a sentence.
- [Exclamation rate](https://scriptgrain.com/attributes/exclamation-rate): How often exclamation marks appear.
- [Ellipsis usage](https://scriptgrain.com/attributes/ellipsis-usage): How often ellipses (…) appear: frequent, occasional, rare, or never.
- [Question marks in body](https://scriptgrain.com/attributes/question-marks-in-body): Whether questions appear inside body copy.
- [Capitalisation quirks](https://scriptgrain.com/attributes/capitalisation-quirks): Any noted capitalisation habits.
- [List preference](https://scriptgrain.com/attributes/list-preference): The preferred list format: bullets, numbered, inline, mixed, or avoiding lists altogether.

## Function words

The small words you use without noticing: articles, contrast words, pronouns, connectors, openers.

[Function word analyser](https://scriptgrain.com/attributes/function-words)

- [Article ratio (the, a, an)](https://scriptgrain.com/attributes/the-a-an-ratio): The relative use of 'the', 'a' and 'an', an unconscious stylistic marker.
- [But, however, yet](https://scriptgrain.com/attributes/but-however-yet): The preferred contrast word: but, however, or yet.
- [Pronoun distribution](https://scriptgrain.com/attributes/pronoun-distribution): The share of I / we / you pronouns.
- [Discourse markers](https://scriptgrain.com/attributes/discourse-markers): Connecting phrases you use to move between thoughts.
- [Paragraph opener words](https://scriptgrain.com/attributes/paragraph-opener-words): The words your paragraphs most often start with.

## Content patterns

What the writing is made of: how specific it gets, stories, claims per paragraph and analogies.

[Content patterns in writing](https://scriptgrain.com/attributes/content-patterns)

- [Specificity level](https://scriptgrain.com/attributes/specificity-level): Whether the writing leans abstract, balanced, or data-driven.
- [Anecdote usage](https://scriptgrain.com/attributes/anecdote-usage): How often personal anecdotes appear.
- [Claim density](https://scriptgrain.com/attributes/claim-density): The average number of claims made in a paragraph.
- [Analogy preference](https://scriptgrain.com/attributes/analogy-preference): Whether analogies are a go-to explanatory device.

## Quirks and cadence

Rhythm and habits: your spellings, cadence, paragraph length, where the strong line sits, structure.

[Writing cadence analyser](https://scriptgrain.com/attributes/quirks-and-cadence)

- [Consistent misspellings](https://scriptgrain.com/attributes/consistent-misspellings): Idiosyncratic spellings that recur across samples.
- [Rhythm pattern](https://scriptgrain.com/attributes/rhythm-pattern): The overall cadence: punchy, flowing, or mixed.
- [Paragraph length](https://scriptgrain.com/attributes/paragraph-length): The typical paragraph length: short, medium, long, or varied.
- [Power sentence position](https://scriptgrain.com/attributes/power-sentence-position): Where the strongest sentence tends to land in a paragraph.
- [Structural signatures](https://scriptgrain.com/attributes/structural-signatures): Notable recurring structural patterns.

## Questions

### What are the elements of writing style?

The elements of writing style split into eight groups: lexical (word choice), syntax (sentence construction), tone and register, rhetoric (persuasive structure), punctuation and format, function words, content patterns and quirks and cadence. Together they cover 45 separate attributes. Lexical and syntactic choices tend to be the most visible; function words and quirks are the ones writers rarely notice in themselves, which makes them useful for telling voices apart.

### How is writing style analysed?

ScriptGrain analyses writing style by reading samples in two passes: the first pass reads each sample and extracts every attribute, the second synthesises those readings into one profile with a narrative and a confidence score from 0 to 1. Later, when a draft is scored, code counts 14 of the 45 attributes directly (things like sentence length and comma density), a model judges the rest, and the word lists, such as preferred words, are checked for hits in the draft.

### How many attributes are in a voice profile?

A voice profile holds 45 attributes, split across eight groups: lexical (6), syntax (7), tone and register (6), rhetoric (6), punctuation and format (6), function words (5), content patterns (4), and quirks and cadence (5). All 45 are returned as JSON through the API and MCP server on every plan, whether that's a free account or a paid one.

### What is a stylometric features list?

A stylometric features list is the set of countable and judged traits used to fingerprint a writing style: sentence length and its variance, comma and punctuation density, pronoun and article ratios, contraction rate, formality, hedging versus confidence, and more. ScriptGrain's version runs to 45 such features across eight groups, with 28 of them able to shift a voice match score when a draft is compared to a profile.

### How do I measure my own writing style?

You measure your own writing style by feeding samples into an extraction model rather than guessing from memory. Upload up to 20 samples (3,000 or more words suggested) and a two-pass read returns all 45 attributes plus a confidence score. From there, you can compare new drafts against that profile using voice match scoring, which blends direct counting with model judgement and reports back a labelled percentage.

## Related

- [The attributes with corpus percentiles](https://scriptgrain.com/reference/writing-voice-attributes)
- [How voice match is scored](https://scriptgrain.com/reference/voice-measurement-framework)
- [Voice match, defined](https://scriptgrain.com/glossary/voice-match)

## Sources

- [How ScriptGrain scores voice match](https://scriptgrain.com/reference/voice-measurement-framework)
- [The attributes and their corpus percentiles](https://scriptgrain.com/reference/writing-voice-attributes)
