Last updated:

UX Design for Notification Text - Optimal Character Counts for In-App Notifications, Toasts, and Banners

12 min read

In-app notifications, toast messages, and banner notifications are UI components designed to convey information without interrupting the user's workflow. Yet we routinely see failures - long text crammed into time-limited toasts, or banner notifications with too few characters to convey meaning. While push notification character count design is constrained by OS-level limits, in-app notifications give developers full design freedom, making proper character count judgment even more critical.

Notification Component Classification and Basic Character Count Design

In-app notification components are classified by display duration, position, and whether user action is required. Each component's characteristics demand tailored character count design.

ComponentDisplay DurationPositionAction RequiredRecommended CharsUse Case
Toast3-5 secBottom or topNo (auto-dismiss)15-40 charsAction success/failure confirmation
Snackbar5-10 secBottomOptional (action button)20-50 charsConfirmation + undo
BannerPersistent (manual close)TopYes (close button)30-80 charsImportant announcements, system status
Inline AlertPersistentWithin contentNo40-120 charsForm errors, warnings
Modal DialogPersistent (until action)CenterYes (confirm/cancel)50-200 charsCritical confirmations, destructive action warnings
Notification Center (in-app)Persistent (list)Dedicated screenNo40-100 charsPast notification history

Toasts have the strictest character limits. With only 3-5 seconds of display time, 15-40 Japanese characters is the practical maximum. What decides that limit is less the reading speed itself than the delay before reading starts. A toast appears in a corner of the screen without warning, so time is lost while the user notices it and moves their gaze, leaving roughly half the display time to actually follow the text. Right after an action, the eyes are still on the button that was pressed, which is often nowhere near a toast at the bottom of the screen. Rather than deriving a theoretical limit from reading speed, display the text on a real device and check by eye whether it disappears before it can be read.

Toast Message Character Count Design - Communicating in 3 Seconds

Toast messages function as immediate feedback for user actions. Short confirmation messages like "Saved," "Copied," or "Sent" are typical use cases.

PatternChar CountExampleAssessment
Verb only5-8 chars"Saved"○ Most concise but unclear what was saved
Object + verb10-20 chars"Draft saved"◎ Clear object, concise
Object + verb + detail20-40 chars"Draft saved. Auto-save runs every 5 minutes"△ Too long for a toast
Icon + verb5-10 chars"✓ Save complete"○ Icon reinforces visibility

The "object + verb" pattern (10-20 characters) is the optimal range for toast messages. Specifying the object lets users accurately identify which action completed, even when multiple operations run in parallel (e.g., uploading a file while saving settings).

When adding an "Undo" button to a toast, design it as a snackbar with 5-10 seconds display time. Gmail's "Message sent - Undo" is a classic example. When including an undo button, keep message text under 20 characters and ensure adequate tap target area for the button.

Banner Notification Character Count Design - Information Density in Persistent Displays

Unlike toasts, banner notifications persist until the user manually dismisses them. This allows more information, but since they continuously occupy screen real estate, excessive character counts obstruct content viewing.

Optimal banner character counts vary by display position and purpose.

Banner TypeRecommended CharsExampleAction Buttons
Info Banner30-60 chars"New feature: Dark mode is now available""Try it" / "Dismiss"
Warning Banner30-70 chars"Your payment method is expiring soon. Please update""Update" / "Later"
Error Banner30-80 chars"Server connection is unstable. Some features are limited""Retry" / "Details"
Success Banner20-50 chars"Plan upgrade complete""View details" / "Dismiss"
Cookie Consent Banner50-120 chars"This site uses cookies to improve your experience""Accept" / "Settings"

Cookie consent banners, widespread globally due to GDPR, are also the component with the most character count design failures. Banners stuffed with 200+ characters of explanatory text to meet legal requirements occupy a third or more of the screen, severely obstructing content access. Keep cookie banner body text to 50-120 characters and provide details via a link to the "Cookie Policy" page.

Notification Hierarchy Design - Urgency and Character Count

Hierarchical design that selects appropriate components and character counts based on notification urgency is essential. The severity classification explained in error message design applies to notifications broadly.

UrgencyRecommended ComponentChar CountExampleUser Action
Low (confirmation)Toast10-25 chars"Settings saved"None required
Medium (attention)Snackbar / Banner20-60 chars"Storage usage has reached 80%"Optional
High (warning)Banner / Inline Alert30-80 chars"Security update required. Please update in settings"Recommended
Critical (immediate)Modal Dialog50-150 chars"You have unsaved changes. Leave without saving?"Required

Using long text for low-urgency notifications or displaying them in modal dialogs creates a "boy who cried wolf" effect. When unimportant notifications frequently interrupt user workflows, truly important notifications get ignored too. Strictly matching notification urgency with character count and component selection is key to maintaining trust in the entire notification system.

Notification Text as Microcopy

Notification text is a prime example of "microcopy" in UX writing. It requires the skill of condensing situation explanation, emotional consideration, and next-action guidance into a short character count.

Applying effective microcopy principles to notification text:

Notification Text Guidelines in Design Systems

In large applications, multiple teams independently create notification text, causing inconsistencies in character count and tone. Incorporating notification text guidelines into the design system maintains consistency.

Guideline ItemRuleExample
Max character countToast: 40 chars, Banner: 80 chars, Modal: 200 charsAuto-check via lint rules
Sentence endingsStandardize patterns like "...saved" / "Please...""Saved" / "Please update"
PunctuationNo period for toasts, period for banners and above"Saved" vs "Update required."
Icon usageSuccess: ✓, Warning: ⚠, Error: ✕, Info: ℹPlace icon before text
Action buttonsStart with verb. Under 8 chars"Update" / "View details" / "Dismiss"
Technical termsProhibited in user-facing text"HTTP 500" becomes "Server error"

One point deserves emphasis here: character limits like the ones in the table above are not written into any official design guideline. Search the platform design guidelines and you will not find a character limit for snackbars or alerts. Text volume is normally described in lines or sentences instead, because the number of characters that fit on one line shifts with screen width, text size, and language, so a character count never works as a shared standard. Seen from the other side, that makes it the design system's job to measure how many characters fit on one line at the narrowest width the app supports, and to translate the line-based rule into a character limit of its own. The numbers in the table above are best treated the same way: an internal agreement that fixes the result of that translation for the team, not something backed by an external authority.

Balancing Notification Frequency and Character Count

Notification character count design must consider not just individual notifications but the total volume displayed within a given period. Even if each notification has appropriate character counts, displaying many in rapid succession causes "notification fatigue."

Accessibility and Notification Text

Notification component accessibility is especially important for screen reader users. Visual notifications appear briefly in part of the screen, but screen readers announce them audibly via aria-live attributes.

Set role="status" and aria-live="polite" on toast messages to notify without interrupting the user's current task. Set role="alert" on error notifications for immediate announcement.

Remember that notification text character count directly affects screen reader announcement time. The difficult part is that the announcement time cannot be estimated from the development side. Speech rate is a user setting and varies widely, and experienced screen reader users often run the voice considerably faster than the default. On top of that, aria-live="polite" waits for any announcement already in progress to finish, so even the moment the announcement starts moves around. A calculation of the form "this many characters will finish reading within the display time" does not hold up, because its premises cannot be pinned down. There is also a trap in removing the announced element from the DOM at the same moment the notification disappears, which can cut the announcement off partway through. That is exactly why it is better to give screen reader users an option to extend toast display time, or a notification history they can review afterward.

Implementation Checklist

A checklist for translating notification text character count design into implementation:

Platform-Specific Notification Text Constraints

iOS and Android have different in-app notification component specifications. Cross-platform development requires character count design that accounts for both OS constraints.

ElementiOS (UIKit / SwiftUI)AndroidWeb (CSS)
ToastNo standard API (custom implementation)Snackbar (text + action button)Free design
BannerNo standard API (custom implementation)No standard API (custom implementation)Free design
AlertUIAlertController (title + message + buttons)AlertDialog (title + message + up to 3 buttons)Free design
Action SheetUIAlertController (.actionSheet)BottomSheetFree design

iOS lacks a standard component equivalent to Android's Snackbar, so toast notifications require custom implementation. In exchange for being free to set the character limit yourself, you also have to decide the display time, the position, and the animation on your own. The part that is easy to miss is what moves when the text gets longer. The height grows and overlaps the tab bar or the home indicator; the notification slips outside the safe area and the rounded corners hide characters. Neither failure is prevented by setting a character limit alone. One reason many teams settle on something like 20-35 Japanese characters is to stay on the near side of the boundary where that height goes from one line to two.

Android's Snackbar, having a standard component, allows a more concrete way of thinking about the limit. The text adds lines as it grows and anything that does not fit is truncated, so the limit is set not by a character count but by how many lines you are willing to allow. For Japanese that is roughly 20-25 characters per line (a rough figure at 360dp screen width and the default text size), which makes about 50 characters a realistic line for two rows. That character count shrinks immediately if the user increases the text size. Beyond that, the action button label shares the width of the same row as the body text, so simply placing a 4-6 character label such as "元に戻す" visibly narrows the width available to the body. Checking three conditions together, the largest text size, the narrowest device width you intend to support, and the longest action label, keeps the layout from breaking later.

Notification Text Localization Strategy

Multilingual apps must address character count variation when translating notification text. The awkward part is that short strings, exactly like notification text, are the ones that expand the most. A long explanatory passage stays within about 30% growth, while a string of only a few words can more than double. That means the tightest translation budget falls on toasts and action buttons, the very places where the limit is already strictest. The other thing that is easy to overlook is that character count and display width are separate measures. One Japanese or Chinese character occupies roughly the width of two Latin characters, so a lower character count does not guarantee the line will fit. Managing only the character limit leaves you exposed to both of those gaps.

In cross-platform frameworks like React Native or Flutter, attaching maximum character count metadata to i18n library strings and implementing automatic checks during translation is effective. As discussed in Slack message character count design, business tool notification text demands both conciseness and accuracy.

Share this article