Slack Error: 'too_many_emoji' — Cause, Fix, and Troubleshooting Guide
Fix the Slack too_many_emoji error: a message reached the limit of distinct reaction emoji. Consolidate the reaction set instead of adding new emoji.
- #slack
- #api
- #troubleshooting
- #errors
Stuck on this Slack error? Get the free incident triage checklist
A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.
Overview
too_many_emoji is returned by reactions.add when a message has reached the limit for the number of distinct reaction emoji it can carry (across all users). Once that many different emoji are present, no new distinct emoji can be added.
{
"ok": false,
"error": "too_many_emoji"
}
Symptoms
- A popular message with lots of varied reactions rejects a new, different emoji.
- Adding an emoji that’s already on the message (joining an existing reaction) still works.
- Only appears on heavily-reacted messages.
Common Root Causes
1. The message already has the maximum distinct emoji
Busy channels accumulate many different reactions; your bot’s new, unique emoji tips it over the distinct-emoji ceiling.
2. Bot introduces novel emoji per event
An automation that maps each event type to a brand-new emoji keeps adding distinct reactions.
3. Custom-emoji sprawl
Lots of custom emoji reactions on one message use up the distinct slots.
How to diagnose
Count distinct emoji on the message:
curl -s "https://slack.com/api/reactions.get?channel=C0123456789×tamp=1700000000.000100" \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
| python3 -c 'import json,sys; m=json.load(sys.stdin)["message"]; print("distinct:", len(m.get("reactions",[])))'
distinct: 23
A high distinct count with a rejected new emoji confirms the cap.
Fixes
- Reuse existing emoji where possible — joining an existing reaction never trips the distinct limit.
- Standardise a small emoji vocabulary for your bot so it doesn’t introduce novel emoji per event.
- Move rich signalling off reactions and into a threaded reply or Block Kit status block when a message is already reaction-heavy.
What to watch out for
too_many_emojiis about distinct emoji on the message;too_many_reactionsis about how many a single user has added.- You can still add to an emoji that’s already present — only genuinely new emoji are blocked.
- If reactions are load-bearing for your automation, don’t depend on adding a unique emoji to a message you don’t control; it may already be full.
Related
- Slack Error: ‘too_many_attachments’
- Slack Error: ‘ratelimited’
- Reaction-driven Slack automations for ops
Fixed it? Get 500 Slack & DevOps AI prompts — free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.
Stuck on this? Start guided troubleshooting
Open an interactive diagnostic session with this error already loaded. Work a step-by-step plan, record what each check returns, land on a root cause, and export a clean incident summary — no account needed to start.
Did this fix your issue?
Solved it a different way?
Share the fix that worked for you — reviewed, then published to help the next engineer.
That looks like it may contain a secret (key, token, password, or connection string). Please remove it — a note with a detected secret can’t be published.
Thanks — that helps. Published notes appear after a quick review.
Trending errors this week
The error guides other engineers are actually reading right now.
- 1mount: wrong fs type, bad option, bad superblock
- 2mount: wrong fs type, bad option, bad superblock
- 3Docker 'failed to set up container networking': Fix the Bridge and IP Pool
- 4Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block
- 5Docker 'failed to create shim task': How to Fix the containerd Runtime Error
- 6Too many levels of symbolic links
Get 500 Battle-Tested DevOps AI Prompts — Free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.