# Parenthetical rate analyser: how it is scored and how to change it

> Parenthetical rate (parenthetical_rate) measures how often you tuck an aside into brackets, as asides per 300 words.

Canonical: https://scriptgrain.com/attributes/parenthetical-rate

# Parenthetical rate analyser

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

Parenthetical rate (parenthetical_rate) measures how often you tuck an aside into brackets, as asides per 300 words. The app's definition also mentions dashes, but ScriptGrain's code counts brackets only. Across 299 published pieces the median is 1.1 per 300 words, and at least one piece in ten uses none.

## Analyse your parenthetical rate free

Your free voice profile measures parenthetical rate among 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

- API field: **parenthetical_rate**
- How it is measured: **Measured in code**
- Group: **Syntax** (ScriptGrain voice profile, 45 attributes in 8 groups)
- Unit: **per 300 words** (ScriptGrain attribute definitions)
- Voice match: **Scored, weight 1** (ScriptGrain voice-match engine (published method))
- Median in published writing: **1.1 asides per 300 words** (ScriptGrain reference corpus: 299 public pieces, built 20 September 2026)

## What parenthetical rate measures

Parenthetical rate measures how often asides appear in a piece of writing. The app's own definition says "asides in brackets or dashes", but every counter in ScriptGrain's code counts brackets only; dashes have their own attribute, [dash frequency](https://scriptgrain.com/attributes/dash-frequency). It sits in the [Syntax group](https://scriptgrain.com/attributes/syntax). It sounds like one measurement, but there are two versions of it living in ScriptGrain. The value stored in your voice profile is the extraction model's reading of your samples: Claude Sonnet 5 reads each sample in a first pass, then synthesises everything into one profile in a second pass. That's a judgement call, not a mechanical count.

When a draft gets scored, or when you run a free tool, the number comes from code instead. Draft scoring counts opening brackets per 300 words; the free [writing style analysis](https://scriptgrain.com/tools/writing-style-analysis) counts complete (...) pairs; the habits report calls the habit "Asides in brackets". So the profile's number and a counted number can differ: one is a model's read of your habits across your samples, the other a strict count on a single piece of text. Worth knowing before you start comparing figures across tools.

## How parenthetical rate is scored

Parenthetical rate does move your voice match score, at a weight of 1. Code counts the draft's rate and works out similarity as 1 minus the gap to your profile's rate divided by a tolerance, floored at 0 so it never goes negative. The tolerance is whichever is larger: 1.5 per 300 words, or your profile's own rate. So a heavy bracket-user gets more room to wobble than someone whose baseline is near zero.

There's a rare-habit rule too. If both your draft and your profile sit under 0.5 asides per 300 words, the agreement only counts at half weight, and it's never headlined as a match. Plain text with no brackets at all doesn't get to claim a stylistic match on that basis; it just has none. Full details of how this fits the wider [voice match](https://scriptgrain.com/glossary/voice-match) system sit on the [voice measurement framework](https://scriptgrain.com/reference/voice-measurement-framework) page.

## How to analyse parenthetical rate in your own writing

You don't need software to get a rough read on this. Grab a sample and work through it by hand.

1. Take a writing sample of at least 300 words, ideally something typical of how you actually write, not your most polished paragraph.
2. Count every opening bracket, "(", in the sample.
3. Count the words in the sample.
4. Divide the bracket count by the word count, multiply by 300, and you've got your rate per 300 words.
5. Repeat across two or three samples if you can; one paragraph can lie to you.

That's the manual version, and it leaves dashes out, as ScriptGrain's code does. ScriptGrain's free voice profile reads this attribute from a writing sample too, among all 45 attributes, with no counting on your part.

## Typical parenthetical rate in published writing

Typical parenthetical rate in published writing is about one bracketed aside per 300 words. ScriptGrain's reference corpus, 299 recent public pieces from 47 sources (blogs, newsletters and essay sites) built on 20 September 2026 and measured with the product's own code, puts the 10th percentile at 0 and the 25th at 0.48 per 300 words. The median is 1.1. The 75th percentile climbs to 2.22, and the 90th reaches 3.56.

So half the pieces use 1.1 asides or fewer per 300 words. At 2.22 or more you're in the top quarter, and the habits report tells you "You think in asides". Zero brackets gets the flatter verdict: "No brackets at all." Neither is wrong; they're different writing habits, and the corpus shows where you sit against them.

## How to make AI use more asides in brackets

To make an AI assistant use more parenthetical asides, you need to give it somewhere to put its second thoughts and a reason to reach for brackets rather than a new sentence.

1. Ask it to let second thoughts sit inside the sentence, in brackets, instead of spinning off a fresh sentence.
2. Tell it to use brackets for quick definitions and examples rather than clauses joined with commas.
3. Give it a short sample of your own writing that includes your bracketed asides, and ask it to match that specific habit.

When a ScriptGrain voice profile generates text, this attribute is sent as part of the voice profile JSON block in the system prompt, under an instruction to treat every attribute as a hard constraint rather than a suggestion. There's a named rule for it too: reproduce punctuation habits, parenthetical rate included, alongside comma density. The profile reaches ChatGPT, Claude and other tools through the API and the MCP server.

## How to make AI use fewer parentheses

To cut down on parentheses, promote the asides that deserve more weight and cut the ones that don't.

1. Promote any aside that actually matters to its own full sentence.
2. Delete asides that just repeat what the main clause already said.
3. Keep brackets out of headings, lists and opening lines entirely.

In ScriptGrain, a profile with a low stored rate goes into the same system prompt under the same rule, so its drafts aim for few brackets. The profile reaches ChatGPT, Claude and other tools through the API and MCP server.

## Questions

### What is a parenthetical aside?

A parenthetical aside is a short side comment tucked inside brackets or set off by dashes, something that adds a quick thought, definition or example without becoming its own sentence. Example: "The tool (which took two weeks to build) shipped quietly." ScriptGrain's own definition says "asides in brackets or dashes", though every counter in its code counts brackets only.

### How often should you use parentheses?

There's no fixed correct rate, but the reference corpus gives you a map: median use across 299 published pieces is 1.1 asides per 300 words, and the top quarter sits at 2.22 or more. If you're at zero, that's a valid choice too; it just reads as a plainer, more declarative style rather than one that thinks in asides.

### How is parenthetical rate scored?

It's scored as part of voice match, with a weight of 1. Similarity is 1 minus the gap between draft and profile, divided by a tolerance (the larger of 1.5 per 300 words or your profile's rate), floored at 0. When both draft and profile sit under 0.5, the agreement counts at half weight and is never headlined as a match. See the voice measurement framework for the full method.

### How do I make ChatGPT use fewer parentheses?

Ask it directly to move important asides into their own sentences, cut any bracket that just repeats the main clause, and keep brackets out of headings and openers. This works whether you're prompting manually or using a ScriptGrain voice profile with a low rate, which ScriptGrain sends as a hard constraint on every draft it writes, including through the API and MCP server.

### What counts as a parenthetical rate analyser?

A parenthetical rate analyser counts the asides in a text and expresses the result as a rate, per 300 words in ScriptGrain's case. ScriptGrain's free writing style analysis counts complete bracket pairs in code, its habits report calls the habit "Asides in brackets", and its free voice profile reads parenthetical rate among all 45 attributes. None of ScriptGrain's counters includes dashes.

## Related

- [Syntax attributes](https://scriptgrain.com/attributes/syntax)
- [Average sentence length](https://scriptgrain.com/attributes/average-sentence-length)
- [Sentence length variance](https://scriptgrain.com/attributes/sentence-length-variance)
- [Sentence complexity](https://scriptgrain.com/attributes/sentence-complexity)
- [The syntactic layer: sentence-structure metrics that separate two writers](https://scriptgrain.com/reference/syntax-layer)
- [Punctuation and formatting as a fingerprint: dashes, commas, list habits](https://scriptgrain.com/reference/punctuation-and-format)
- [Free in-browser analyser (counts it)](https://scriptgrain.com/tools/writing-style-analysis)
- [micro-habits](https://scriptgrain.com/micro-habits)

## 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)
