Skip to content

Visualization & Metrics

Tension Curve

Per-paragraph tension scoring for pacing analysis and visualization.

What It Does

Computes a tension score for each paragraph based on multiple factors:

  • Sentence length — shorter sentences signal higher tension
  • Action verb density — more action verbs = more tension
  • Exclamations — exclamation marks signal urgency
  • Dialogue density — dialogue exchanges add momentum

Produces the raw tension curve data used by other analyzers (like Fichtean Curve) and suitable for visualization.

Why It Matters

Tension is the engine of narrative drive. A tension curve that rises steadily keeps readers turning pages. A flat tension curve means nothing is at stake. Seeing the shape of your tension — where it peaks, where it dips — reveals pacing problems that are invisible paragraph-by-paragraph but obvious in aggregate.

What Gets Flagged

Tension Data

This analyzer primarily produces data rather than diagnostics. The tension scores for each paragraph can be used to:

  • Plot a tension curve chart
  • Identify the highest-tension and lowest-tension moments
  • Feed into structural analyzers like Fichtean Curve

Score Components

Factor Effect on score
Short sentences ↑ Higher tension (punchy, urgent)
Long sentences ↓ Lower tension (contemplative, relaxed)
Action verbs ↑ Higher tension (ran, grabbed, exploded)
Exclamation marks ↑ Higher tension (urgency signal)
Dialogue presence ↑ Moderate tension boost (momentum)

Configuration

No configuration options.

Technical Details

  • Source: prose-craft
  • Scope: Paragraph-level (produces document-wide curve)
  • Method: Multi-factor scoring (sentence length, action density, punctuation, dialogue); normalized output
  • API: analyze_tension_doc() returns Vec<(usize, f64)> — line number and tension score per paragraph
  • Used by: Fichtean Curve analyzer