p·proselabTHE SCIENTIFIC WRITING WORKBENCH
A LITTLE LESS FOG. A LOT MORE CLARITY.

Good science deserves
clear sentences.

Paste your passage. Understand its rhythm, complexity, and clarity.
Guided by Michael Alley’s The Craft of Scientific Writing.

Aa

Measure the writing.
Keep the meaning.

Runs entirely in your browser
THE SHAPE OF YOUR PROSE

Sentence rhythm

Words per sentence

Your sentences will appear here.

A CLOSER LOOK

Revision cues

Places to consider—not automatic errors. Technical meaning comes first.

Add a passage to find possible revision opportunities.

HOW THE LAB WORKS

Transparent by design.

Based on Michael Alley’s The Craft of Scientific Writing, Springer, 2018, ISBN 978-1-4419-8288-9, supplied for this project.

The book’s numerical guidance

The Gunning Fog Index is the book’s only named, formula-defined readability index. The recommended range is 10–13. Average sentence length should be in the teens; this app displays 13–19. These are guides, not grades.

Fog = 0.4 × (words / sentences + 100 × long words / words)

Long words have at least three syllables. Following Alley, the first word of each sentence, proper names, and verbs gaining a third syllable through -ed or -ing are excluded from the long-word numerator. They remain in the word denominator. Use the word audit to correct syllables or exemptions.

What is counted

Prose and list-item text. Hyphenated words and contractions count as one token. Numbers count as word tokens with zero syllables. Headings, math, citation keys, URLs, captions, notes, and code are excluded from prose readability. Paragraph Fog scores are available in the JSON report; the headline score pools the entire passage.

Reading LaTeX

Nested formatting, common citations and references, equations, lists, accents, headings, and simple local \\newcommand definitions are supported. This is a prose reader, not a TeX compiler. External files, bibliography resolution, arbitrary package logic, and complex custom macros cannot be reproduced. Unknown commands generate a notice. Inspect Reading proof before relying on a score.

Layout is contextual

Paragraph lines are measured in the fixed-width proof using Times New Roman and your selected width and type size. They are not counts of source lines or your original PDF layout. Chapter 7 favors 7–11 lines for most paragraphs, variation across paragraphs, and no more than two short paragraphs in succession.

Full-document mode enables conclusion share, heading hierarchy, and appendix-reference checks. List density requires your actual page count. Sentence-heading length, whitespace ratio, and body type size refer to this app’s proof only. Figure call-outs, reference/footnote type sizes, slide/poster typography, and page-long appendix tangents require the original document layout and are not assigned fabricated values.

Estimates, not verdicts

Syllables and grammatical tags are automated English estimates. Passive voice, nominalizations, ambiguous words, preposition load, and sentence-opening categories are review cues. The book gives no percentage quotas or numerical optimum for them. It also gives no optimum for standard deviation or syllables per word.

All passage processing happens locally. No passage text is sent to an AI or analytics service. Browser analysis and the CLI share the same engine.

Rendering: KaTeX · Language estimates: Compromise and syllable.

FOR YOUR AI AGENTS

The same engine. Your terminal.

From the local prose-lab project, run:

node cli.mjs passage.tex --format latex --json
cat passage.txt | node cli.mjs --json
node cli.mjs thesis.tex --document --pages 80
node cli.mjs passage.tex --layout-json report.json --json

Use --overrides words.json for syllable and proper-name corrections. --compact returns metrics without sentence and word detail. --help lists every option.

The exported JSON report includes measured proof layout. Pass that unchanged report with the same source to the CLI to reproduce layout metrics. Without a matching layout report, the CLI marks those metrics unavailable.

The CLI is a local Node.js executable, not a remote API. It processes stdin/files without uploading them. Exit codes: 0 success, 1 invalid input, 2 when an optional --max-fog threshold is exceeded.

VERIFY THE INGREDIENTS

Word audit

Technical terms can fool a syllable counter. Correct any word here; your metrics update immediately. Exemptions affect only Fog’s long-word numerator.

WordUsesSyllablesProper nameVerb ending exemptionEligible uses

The first word of every sentence is excluded automatically. Proper-name and verb-ending classifications are estimates. Corrections last for this session unless exported.