Accessible copy, button labels and localization
How to write Block Kit content that works with screen readers and for every reader: emoji placement, meaning beyond colour, alt text, labelled inputs, specific button copy, and choosing channel or user locale when localizing, including what an app cannot localize.
Build a great user experience that aligns with Slack’s commitment; to make work life simpler, more pleasant and more productive.
~8 min read · 7 practice questions ·
What the exam expects
- Apply Slack's screen reader guidance to emoji: never as a control or a word, paired with text, at the end of a line, not as bullets, and in a header or its subtext but not both.
- Convey meaning with more than colour, and write context-specific
alt_textfor every meaningful image. - Build forms from input blocks with clear labels and descriptive placeholder text.
- Write button labels as specific, active-voice outcomes and reject vague or emoji-only labels.
- Pick the channel locale or the user locale for each piece of content, and name what an app cannot localize.
Key terms: screen reader (a tool that reads digital content aloud for people with difficulty seeing); text alias (an emoji's name, read as "[alias] emoji"); alt_text (the required plain-text summary of an image); input block (the block that wraps a form element with a required label); locale (a channel's or user's language preference, returned with include_locale).
Key facts
- Detail
- "[alias] emoji"; no way to mark one decorative
- Detail
- End of a sentence or line; header or subtext, not both
- Detail
- Never the only carrier of meaning; contrast 4.5:1 for regular text
- Detail
plain_text, truncates around 30 characters, max 75
accessibility_label- Detail
- Read by screen readers instead of the button text; max 75
alt_text- Detail
- Required, plain text, max 2,000 characters
label- Detail
- Required
plain_text; optional greyhintbelow
- Detail
include_locale: trueonconversations.infoorusers.info(default false)
- Detail
- Slash command and message action pre-configured text, app display name
Sources for this section (7)
- Designing with Block Kitdocs.slack.dev (opens in a new tab)
- Button elementdocs.slack.dev (opens in a new tab)
- Image blockdocs.slack.dev (opens in a new tab)
- Input blockdocs.slack.dev (opens in a new tab)
- conversations.info methoddocs.slack.dev (opens in a new tab)
- users.info methoddocs.slack.dev (opens in a new tab)
- App designdocs.slack.dev (opens in a new tab)
- Why must an emoji never be the only text on a button?
- Why is a red "Cancel" button not accessible enough?
- When should an app use a user's locale instead of the channel's?
- Which text can an app not localize per user?
- What should a select menu in a modal form have besides its options?
The questions are free to read. Answers with their sources and self-grading are included with the pack.
Keep reading with the Slack Developer pack
- Core concepts
- Exam traps
- Worked scenario
The pack includes:
- All 38 lessons of the Slack Developer guide, with reading progress
- Interactive decision walks and step-by-step sequence steppers
- Inline practice questions and one-click topic practice (7 questions for this lesson)
- An official source cited for every claim
- An AI tutor that answers from the guide
- Unlimited timed practice exams