Define the object of delivery
Article editors may need headings, prose, lists and labels; source-code checks may also include syntax, URLs and code. One cleanup cannot satisfy both without a choice.
Write “rendered article, title included, code excluded” or “entire delivered source”. The counter measures pasted content. Differences from previews do not automatically mean incorrect word detection.
Heading syntax can affect characters without words
The literal Italian ## Gatto **nero** measures seventeen characters and two words; Gatto nero measures ten and two.
This does not prove all Markdown preserves word count. Other constructions add destinations or technical words, and asterisks can be literal content. CommonMark defines syntax roles; inspect the real preview and ambiguous cases instead of deleting every symbol.
Labels differ from URLs
Literal [Leggi qui](https://esempio.test/guida) has thirty-nine characters and six words locally. Visible Leggi qui has nine and two. Extra source words reflect URL component segmentation.
Agree whether destinations count in billing or limits. Technical guides may display them; embedded links may not. Reference definitions elsewhere should not automatically enter a body-only copy. Inspect published links individually, including descriptive titles.

Code needs an explicit rule
Variables, strings, comments and commands resemble words but may represent editorial work, demonstration or attachments. Exclude blocks and record the decision for prose-only limits.
Inline timeout may be essential to an instruction and can remain while a long listing is excluded. Distinguish fences, quotations and indentation. Extensions beyond CommonMark require the actual publication preview.
Alternative text, captions and images
Image references contain alternative descriptions and paths, neither automatically a visible caption. Accessible-text inventories may count descriptions separately; article limits may differ. Paths do not become prose through parentheses.
Inventory body, captions, alternative text and metadata to avoid duplicate totals after conversion. Words inside drawings may not exist in Markdown. The counter does not extract graphics; transcribe required words and identify provenance instead of estimating from filenames.
Prepare readable text carefully
Render in the intended environment, select agreed scope and copy as text. Check headings, lists and links; transfer separators vary. Repeated work may need a parser matching the format.
Removing everything in parentheses can erase explanations or formulas; deleting all # or * damages literal examples. Distinguish syntax roles and reread code, links and quotations after conversion.
Extensions vary
A .md suffix does not specify table, footnote or metadata extensions. One renderer processes them; another shows raw text. Source totals need not describe final output.
Choose a reference environment and record exclusions. Do not count title metadata twice when rendered. Define table-cell scope, including product-code columns whose reader value and pricing treatment may differ. Follow required work rather than minimum totals.
Explain scope differences
Keep separately named source and editorial copies where both matter. Measure consistently. Differences concentrated in URLs or listings suggest inclusions, helping locate blocks without changing prose.
Recheck a real emphasized heading, link and code block before delivery. Totals need not match if every difference is explained. See HTML text counts for code versus displayed output.
Source and readable text counted separately
| Sample | Site characters | Site words | Includes |
|---|---|---|---|
| ## Gatto **nero** | 17 | 2 | Heading/emphasis syntax |
| Gatto nero | 10 | 2 | Readable text |
| [Leggi qui](https://esempio.test/guida) | 39 | 6 | Label and URL |
| Leggi qui | 9 | 2 | Label only |
Sources and checks
- CommonMark Specification 0.31.2 · Markdown block and inline syntax including headings, emphasis, links and code