Markdown

Markdown Word Count & Reading Time

Count words and characters in markdown without frontmatter, code, or link syntax inflating the total, plus a per-heading breakdown and reading time.

Runs 100% in your browserUpdated Jul 6, 2026
Live · runs on your deviceNothing leaves your browser
23
Words
121
Characters
1 min read
Reading time
Words per heading
HeadingLevelWords
Getting StartedH113
DetailsH210

Overview

Paste markdown above and this tool counts only the words a reader actually sees. It strips frontmatter, code fences, inline code, images, link URLs, HTML tags, table syntax, heading markers, and emphasis markers first, then counts what remains. You get a real word and character count, a reading time estimate at your chosen words-per-minute, and a breakdown of words under each heading.

How it works

  1. 1Paste your markdown into the text box, or switch to Folder mode to drop a whole folder of notes.
  2. 2The tool strips frontmatter, code fences, inline code, links, images, HTML tags, table syntax, heading markers, and emphasis markers before counting anything.
  3. 3Read the word count, character count, and reading time from the stat tiles above the box.
  4. 4Check the per-heading table to see how many words fall under each section of your document.
  5. 5In Folder mode, review the per-file table and the combined total across every note.
  6. 6Adjust the reading-speed field, 225 words per minute by default, to match your own reading pace.

Worked example

Stripping syntax from a short draft

A short draft with a YAML frontmatter block, one heading, a bolded phrase, a fenced code block, an inline code span, and a markdown link comes out to 25 tokens if you just split the raw text on whitespace, the way a plain word counter would. Run the same draft through this tool and the real prose count is 12 words: the heading title, one short sentence, a two-word sentence, and the visible text of the link. At 225 words per minute that is a 1-minute read, and the cleaned text comes to 65 characters.

Estimating reading time

A 450-word article at the default 225 words-per-minute reading speed rounds up to a 2-minute read, since reading time is always rounded up to the next whole minute rather than truncated.

Methodology & privacy

countMarkdown works in two passes. First, it strips syntax that is not prose: a leading YAML-style frontmatter block, fenced and inline code (code is meant to be run, not read), image syntax (removed entirely, alt text included, since it describes an image rather than being read as body text), markdown link syntax (keeping the visible link text, dropping the URL), HTML tags, table pipe characters and separator rows, ATX heading markers (#, ##, and so on, as defined by the CommonMark spec), and bold, italic, and strikethrough emphasis markers. Second, it counts every remaining whitespace-separated token that contains at least one letter or number, so leftover punctuation like a bare double dash never inflates the total. Each ATX heading opens a new bucket in the per-heading breakdown, covering its own title plus everything under it up to the next heading; any text before the first heading is bucketed as "(intro)". Reading time is the word count divided by your chosen reading speed, rounded up to the next whole minute. The default, 225 words per minute, sits inside the 175 to 300 wpm range a meta-analysis of 190 studies (18,573 participants) found for adult silent reading of English non-fiction, which averaged 238 wpm.

This tool runs entirely in your browser. The markdown you paste, or the notes in a folder you drop, are never uploaded anywhere. Every count happens locally in JavaScript on your own device.

FAQ

Why does my markdown word count seem wrong compared to a regular word counter?

+

A regular word counter splits on whitespace and counts everything, including frontmatter keys, code, heading hash marks, emphasis stars, and the full URL inside a markdown link. This tool strips all of that first, so the count matches what a reader actually reads, not the raw text you typed.

How do I get a word count minus markdown syntax?

+

Paste your markdown into the box above. The tool strips frontmatter, code fences, inline code, images, link URLs, HTML tags, table syntax, heading markers, and emphasis markers before counting, so the number you see is prose only.

Can I get a reading time calculator for a markdown blog post?

+

Yes. The reading time stat tile divides your markdown-aware word count by a words-per-minute figure you control, 225 by default, and rounds up to the next whole minute, the same approach most blogging platforms use for their "X min read" label.

Can I count words in a whole folder of notes at once?

+

Switch to Folder mode and drop a folder. The tool reads every .md and .markdown file in it, shows a per-file table of words, characters, and reading time, and adds a combined total row across every note it counted.

Does this tool track my daily writing progress or session targets?

+

Not automatically; there is no saved history between visits. Each paste or folder drop gives a fresh count, so you can track a session target yourself by checking the word count before and after a writing session.

Why exclude code blocks and frontmatter from the word count?

+

Frontmatter is metadata and code is meant to be run, not read as prose. Counting either as words would overstate how much a reader actually reads, especially in technical notes with a lot of embedded code.

Does a markdown link's URL count as words?

+

No. Only the visible link text counts. For example, [the guide](https://example.com/very/long/path) counts as two words, "the" and "guide"; the URL itself is dropped entirely.

Does this tool upload my notes anywhere?

+

No. Everything runs in your browser using JavaScript. Nothing you paste or drop is ever uploaded or sent to a server.

This tool fixes one moment. recal handles the whole day.

recal is a private brain for your Mac. It watches how you work, on device, and starts doing your busywork itself. You approve every action.

Get early access