All rules

Headings decorated with emoji

emoji-headingon by default (info)Japanese / English

Headings with an emoji in them ("## 🚀 Getting started"), one after another

Example

Flagged
# Counting stock ## 🚀 Getting started We count the stock in the warehouse every morning. ## 🛠️ Steps Count shelf by shelf and write it in the sheet. ## ✅ Summary When the count is done, share the sheet.
What chaff prints
3:1 Heading "🚀 Getting started" has an emoji (3 headings with one, 3 needed) 7:1 Heading "🛠️ Steps" has an emoji (3 headings with one, 3 needed) 11:1 Heading "✅ Summary" has an emoji (3 headings with one, 3 needed)
Fixed
# Counting stock ## Getting started We count the stock in the warehouse every morning. ## Steps Count shelf by shelf and write it in the sheet. ## After the count When the count is done, share the sheet.
What chaff prints
no finding
chaff.yaml used for this example
genre: blog/tech

How to fix

Take the emoji out of the headings and let the words say what the section holds. If one heading really needs a marker, keep that one.

Why it matters

A heading with an emoji in it ("## 🚀 Getting started", "## ✅ Summary"), heading after heading. When every heading has one, the emoji says nothing about the section, and the table of contents and a screen reader get a row of meaningless symbols. A shape common in generated text.

What it does not flag

Fewer headings than the level needs are not reported, nor symbols not drawn as emoji (→, ™). Documentation, legal, academic and literary genres do not run this rule.

Turning it off or relaxing it

Silence this one spot (in the document)
<!-- stet: emoji-heading — reason -->
Relax it for the team (the reason is kept as a comment in chaff.yaml)
npx chaffjs relax emoji-heading --why "reason"
Turn it off for the team (chaff.yaml)
rules: emoji-heading: off
Technical details
Layer
L1
Status
stable
Severity
info
Languages
Japanese and English
Suited to
blog, business, legal, docs, academic, literature, speech
Reads from the document
markdown

Levels

Set a level for this rule under rules in chaff.yaml. With nothing set, it runs at the level its genre gives it (see By genre below).

strictreported once 2 headings carry an emoji
normalreported once 3 headings carry an emoji
relaxedreported once 5 headings carry an emoji

By genre

Runs by default in
blog/tech, blog/essay, blog/owned-media, business/proposal, business/report, business/email, business/press-release, business/meeting-notes, speech/address, speech/transcript
Turned off by the genre in
legal/contract, legal/statute, legal/judgment, legal/patent, docs/manual, docs/faq, docs/glossary, academic/paper, literature/fiction, literature/essay, literature/poetry, literature/play
Not suited to, and not run in
technical/spec, technical/readme

Genres

Message

Heading "{heading}" has an emoji ({count} headings with one, {limit} needed)

Rewrite depth (chaff fix-plan --depth): light — words and sentences; the structure and the voice stay

Sources

This page is built from the rule's definition file:packages/chaff/rules/emoji-heading.yaml