Structure
Emoji used as bullets or icons
WCAG 2.2 success criterion 1.3.1 Info and Relationships (Level A)
- WCAG 2.2
- 1.3.1 Info and Relationships
- Level
- A
- Default severity
- Tip
- Available in
- Free
Why it matters
Screen readers read an emoji by its full name, so a row of ✅ bullets becomes "white heavy check mark, free shipping, white heavy check mark, 30-day returns" — and the lines are not announced as a list, so the item count is lost. A link or button whose only text is an emoji is named after the picture ("speech balloon"), not after what it does.
Who it affects: Screen reader users, who rely on real lists and paragraphs to hear how content is grouped and how many items there are.
What Lumtera flags
Paragraphs where two or more lines (split by line breaks) start with an emoji followed by text; two or more paragraphs in a row that each start with an emoji; and links or buttons whose only text is emoji and that have no aria-label or aria-labelledby. Lines starting with ordinary bullet characters such as • are left to the "Text is formatted as a list by hand" check.
Check ID emoji-as-icon — use it to filter the content report or with wp lumtera issues --rule.
How to fix it in WordPress
For lines that start with an emoji, use a List block instead, so the lines are announced as a list; drop the emoji or keep it at the end of the line. For a link or button that shows only an emoji, add text that says what it does (it can be visually hidden), or an aria-label such as aria-label="Share on WhatsApp".
Example
<p>✅ Free shipping</p>
<p>✅ 30-day returns</p>
<a href="https://wa.me/?text=…">💬</a>
<ul>
<li>Free shipping</li>
<li>30-day returns</li>
</ul>
<a href="https://wa.me/?text=…" aria-label="Share on WhatsApp">💬</a>
How to check your fix
- Update the post. The issue disappears from the Accessibility sidebar on the next check, and from the site report on the next scan.
- With a screen reader, move to the list. It should announce "list, 3 items" (or similar) before the first item.
Find this issue across your whole site
Lumtera runs this check in the block editor sidebar as you write, in the Elementor panel, in Review mode on the live page, and across the whole site in the content report and with wp lumtera scan. You can change its severity or turn it off in Accessibility → Settings.
Related checks
-
WCAG 1.3.1 · AError
Heading is empty
-
WCAG 1.3.1 · ANeeds review
Heading level is skipped
-
WCAG 1.3.1 · ATip
Content uses an H1 heading
-
WCAG 1.3.1 · ATip
Bold text may be a heading
-
WCAG 1.3.1 · ATip
Heading is very long
-
WCAG 1.3.1 · ANeeds review
Form field has more than one label
Start with the free plugin today
All 64 checks, the editor sidebar, Elementor panel and site report — free, with no account and no page limits.