Exclamation mark analyser

By Jack Stovell · published 2026-09-24

Exclamation rate is how many exclamation marks a piece uses per 1,000 words. In ScriptGrain's reference corpus of 299 public pieces the median is 0.4, and at least a quarter use none. A voice profile stores the extraction model's reading of your samples; code counts the marks in a draft when it is scored.

Analyse your exclamation rate free

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

Try the six-signal check first

At a glance

What exclamation rate measures

Exclamation rate measures one thing: exclamation marks per 1,000 words. It's a float per 1,000, sitting inside the punctuation and format group alongside things like comma density and ellipsis usage. The app labels it "Exclamation Rate", the API calls it `exclamation_rate`, and the definition behind both is plain: how often exclamation marks appear.

The number in your ScriptGrain voice profile isn't a raw count pulled straight off your text. It's the extraction model's reading of your samples, Claude Sonnet 5, working in two passes: one pass per sample, then a synthesis pass that settles on a final figure. So a profile value is a considered read, not a tally, and the same holds for all 45 attributes in a profile.

When a draft gets scored, or when you run the free writing style analysis tool or the habits report, code does the counting: exclamation marks per 1,000 words, with no interpretation involved. The analyser adds a note of its own: "Most professional writing sits near zero."

How exclamation rate is scored

Exclamation rate does move your voice match score, and it carries a weight of 1.5. When a draft is scored, code counts the actual exclamation marks per 1,000 words (via `measureTextFeatures`) and compares that against your profile's stored value. The similarity works out to one minus the gap divided by a tolerance, floored at zero, so you can't score negative on this. Tolerance is fixed at 2.5 per 1,000 words: a draft 1.25 per 1,000 words away from the profile scores 0.5 on this feature, and one 2.5 or more away scores 0.

There's also a rare-habit rule: if both your draft and your profile sit under 0.5 per 1,000 words, the agreement counts at half weight and is never headlined as a match. Any plain text has no exclamation marks, so two near-zero figures are weak evidence of a shared voice. Full method detail sits on the voice measurement framework page, and the punctuation and format group covers where this attribute sits alongside its neighbours.

How to analyse exclamation rate in your own writing

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

  1. Take a writing sample of at least a few hundred words, ideally something typical of your usual output.
  2. Count every exclamation mark in the piece, including any inside dialogue or quotes.
  3. Count the total words in the sample.
  4. Divide the exclamation count by the word count, then multiply by 1,000.
  5. That figure is your exclamation rate per 1,000 words. Repeat across a few samples if you want a steadier average.

That's the manual version. ScriptGrain's free voice profile reads exclamation rate from a writing sample among all 45 attributes.

Typical exclamation rate in published writing

Typical exclamation rate in published writing sits close to zero. ScriptGrain's reference corpus is 299 public pieces from 47 sources (835,655 words), built 2026-09-20, each measured in code and then discarded. Across that corpus, the 10th and 25th percentiles both land at 0, the median is 0.4, the 75th percentile is 1.8, and the 90th percentile is 3.9, all per 1,000 words.

Read that plainly: half the corpus uses 0.4 or fewer per 1,000 words, and at least a quarter uses none. The habits report reads zero as "Never an exclamation mark." and flags anything at or above the 75th percentile. So at 1.8 per 1,000 words or more you're in flagged territory; the flag marks an uncommon habit and says nothing about whether it's wrong.

How to make AI use exclamation marks like you

If you genuinely do use exclamation marks, and you want AI to reproduce that honestly rather than smoothing it out, here's how:

  1. Allow an exclamation mark specifically where you would genuinely raise your voice, not just anywhere excitement might plausibly fit.
  2. Keep them where your own samples actually use them: greetings, sign-offs, quick reactions. Example: "Thanks so much!" as a sign-off, if that's genuinely your habit.
  3. Give the model direct examples pulled from your own writing rather than describing the habit in the abstract.

When a ScriptGrain profile writes for you, this attribute travels inside the voice profile JSON in the system prompt, under "Treat every attribute as a hard constraint, not a suggestion." The profile also reaches ChatGPT, Claude and other tools through the API and the MCP server.

How to make AI stop using exclamation marks

If you want AI writing to stop sounding falsely enthusiastic, the fix is mostly about banning the habit outright, not softening it:

  1. Ban exclamation marks outside quoted speech entirely. No exceptions for excitement.
  2. Let word choice do the enthusiasm instead of punctuation. For example, "This works well" carries plenty of confidence without a single mark.
  3. Replace openers like "Excited to announce!" with the news itself. Just say what happened.

ScriptGrain's generation prompt has a named rule for this direction: "do not introduce warmth or exclamation if the profile shows dry/rare". The profile itself, with its stored rate, reaches ChatGPT, Claude and other tools through the API and MCP server.

Questions

How many exclamation marks is too many?

Against the reference corpus, the habits report flags anything at or above the 75th percentile, 1.8 per 1,000 words. The median across 299 public pieces is 0.4, and at least a quarter use none at all. So "too many" isn't a fixed number; it's relative to how rare the habit is everywhere else. If you're well above 1.8, you're an outlier.

How is exclamation rate scored?

It's part of voice match scoring, weighted at 1.5. Code counts exclamation marks per 1,000 words in your draft, compares that to your profile's value, and scores similarity as one minus the gap over a fixed tolerance of 2.5, floored at zero. When both draft and profile sit under 0.5 per 1,000 words, the match counts at half weight and isn't treated as a headline result.

How do I make AI stop using exclamation marks?

Ban them outright outside quoted speech, let your word choice carry the enthusiasm instead, and rewrite "Excited to announce!" style openers into plain statements of the news. ScriptGrain's own generation prompt adds a named rule not to introduce warmth or exclamation when the profile shows dry or rare, and the profile reaches connected tools through the API and MCP server.

How do I make ChatGPT sound less enthusiastic?

Enthusiasm in AI writing usually shows up as stacked exclamation marks and hype openers. Cut both. Ban the punctuation outside quotes, and swap phrases like "thrilled to share" for the plain fact being shared. A ScriptGrain voice profile sends its stored exclamation rate as a hard constraint, a target read from your own samples instead of the model's default cheerfulness.

Why does AI writing sound salesy?

A lot of "salesy" tone comes from stacked exclamation marks, hype adjectives and announcement-style openers, none of which reflect how most published writing actually reads (median 0.4 exclamation marks per 1,000 words, at least a quarter of pieces at zero). Cutting the exclamation marks removes the loudest part of it; plainer word choice handles most of the rest.

Related

Sources