Back to compare picker

Dead-end empty state vs Empty state vs No-results recovery vs Error state

Flag dead-end empty state when the page, table, list, dashboard, or panel has no object name, no cause, no valid next action, or no safe escape.

Decision dimensions

Dimension Dead-end empty stateEmpty stateNo-results recoveryError state
UI or UX UX - Actionless blank-state anti-patternUI + UX - Resolved no-data content surfaceUI + UX - Search recovery stateUI + UX - Recoverable failure surface
UI guidance A dead-end empty state is visible as blank space, vague art, hidden filters, disabled mystery controls, or an empty table body with no object name, cause, or action.Render a resolved no-data region with a specific heading, cause text, one primary action when available, optional secondary path, and restrained illustration or icon support.Render zero-result copy, active criteria, remove-filter actions, and alternative suggestions.Render a persistent error region near the affected content with a specific failure heading, plain-language cause, preserved context, and recovery actions.
UX guidance Diagnose why the surface is empty before choosing copy or controls: first-use, configured-empty, filtered, permission-limited, failed, loading, deleted, or unavailable.Help users distinguish legitimate absence from loading, no-results, error, permission, and setup conditions before offering a next step.Help users recover when their own search or filters excluded all results.Help users recover when expected loading, saving, validation, sync, permission, or computation fails without losing their work.
Good UI A replacement state names No projects yet, explains the workspace has no projects, and offers Create project or Import CSV only when permitted.No projects yet heading, short explanation, Create project primary button, Import CSV secondary button, and visible workspace context.Zero-result state shows query/filters, result count, and clear or broaden actions.Reports could not load appears in the report section with the saved filter, Retry, Use cached data, and Contact support actions.
Bad UI An empty table body with pale placeholder lines and no label.A blank white table body with no text, object name, or action.No results text alone with no criteria shown.Tiny transient toast for a blocking failure.
Good UX Users can classify the absence and take the correct path: create, import, clear filters, request access, retry, restore, or leave safely.Users can create the first project, import existing work, or request access depending on the actual cause.Users can remove one filter, clear all, edit query, or try suggested alternatives.User input and filter context are preserved after failure, and retry returns to recovered content or a clear still-failed state.
Bad UX Users cannot tell whether content is still loading, filtered out, unavailable, failed, or nonexistent.The same empty message appears for loading, search no-results, permission denial, and service failure.Telling users nothing exists when filters caused the state.Clearing work after save failure.
Best fit Auditing generated UIs, dashboards, tables, lists, or panels for blank states that strand users.The product area can legitimately contain no user data.Search, browse, or filter controls can produce an empty result set.A system or task failure blocks expected content or action.
Avoid when The surface already explains the cause and offers a valid next step.The absence was caused by filters or search.There is genuinely no possible next action and the system should instead explain availability.Nothing exists yet and the state is expected.
Required state Unexplained blank state that is being audited as the anti-pattern.First-use empty state before any objects exist.Zero-result state that preserves the user's criteria.Normal expected state before failure.
Accessibility burden Do not use an unlabeled blank region as the only state announcement.Keep the message in normal reading order near the empty region it explains.Announce result-count changes where search results update dynamically.Use appropriate alert or status semantics for newly appearing critical errors.
Common misuse Blank table body with no heading, count, cause, or action.Showing a blank page with no explanation.Showing a blank list with no explanation.Using a transient toast for critical errors.

Dead-end empty state

UI or UX
UX - Actionless blank-state anti-pattern
UI guidance
A dead-end empty state is visible as blank space, vague art, hidden filters, disabled mystery controls, or an empty table body with no object name, cause, or action.
UX guidance
Diagnose why the surface is empty before choosing copy or controls: first-use, configured-empty, filtered, permission-limited, failed, loading, deleted, or unavailable.
Good UI
A replacement state names No projects yet, explains the workspace has no projects, and offers Create project or Import CSV only when permitted.
Bad UI
An empty table body with pale placeholder lines and no label.
Good UX
Users can classify the absence and take the correct path: create, import, clear filters, request access, retry, restore, or leave safely.
Bad UX
Users cannot tell whether content is still loading, filtered out, unavailable, failed, or nonexistent.
Best fit
Auditing generated UIs, dashboards, tables, lists, or panels for blank states that strand users.
Avoid when
The surface already explains the cause and offers a valid next step.
Required state
Unexplained blank state that is being audited as the anti-pattern.
Accessibility burden
Do not use an unlabeled blank region as the only state announcement.
Common misuse
Blank table body with no heading, count, cause, or action.

Empty state

UI or UX
UI + UX - Resolved no-data content surface
UI guidance
Render a resolved no-data region with a specific heading, cause text, one primary action when available, optional secondary path, and restrained illustration or icon support.
UX guidance
Help users distinguish legitimate absence from loading, no-results, error, permission, and setup conditions before offering a next step.
Good UI
No projects yet heading, short explanation, Create project primary button, Import CSV secondary button, and visible workspace context.
Bad UI
A blank white table body with no text, object name, or action.
Good UX
Users can create the first project, import existing work, or request access depending on the actual cause.
Bad UX
The same empty message appears for loading, search no-results, permission denial, and service failure.
Best fit
The product area can legitimately contain no user data.
Avoid when
The absence was caused by filters or search.
Required state
First-use empty state before any objects exist.
Accessibility burden
Keep the message in normal reading order near the empty region it explains.
Common misuse
Showing a blank page with no explanation.

No-results recovery

UI or UX
UI + UX - Search recovery state
UI guidance
Render zero-result copy, active criteria, remove-filter actions, and alternative suggestions.
UX guidance
Help users recover when their own search or filters excluded all results.
Good UI
Zero-result state shows query/filters, result count, and clear or broaden actions.
Bad UI
No results text alone with no criteria shown.
Good UX
Users can remove one filter, clear all, edit query, or try suggested alternatives.
Bad UX
Telling users nothing exists when filters caused the state.
Best fit
Search, browse, or filter controls can produce an empty result set.
Avoid when
There is genuinely no possible next action and the system should instead explain availability.
Required state
Zero-result state that preserves the user's criteria.
Accessibility burden
Announce result-count changes where search results update dynamically.
Common misuse
Showing a blank list with no explanation.

Error state

UI or UX
UI + UX - Recoverable failure surface
UI guidance
Render a persistent error region near the affected content with a specific failure heading, plain-language cause, preserved context, and recovery actions.
UX guidance
Help users recover when expected loading, saving, validation, sync, permission, or computation fails without losing their work.
Good UI
Reports could not load appears in the report section with the saved filter, Retry, Use cached data, and Contact support actions.
Bad UI
Tiny transient toast for a blocking failure.
Good UX
User input and filter context are preserved after failure, and retry returns to recovered content or a clear still-failed state.
Bad UX
Clearing work after save failure.
Best fit
A system or task failure blocks expected content or action.
Avoid when
Nothing exists yet and the state is expected.
Required state
Normal expected state before failure.
Accessibility burden
Use appropriate alert or status semantics for newly appearing critical errors.
Common misuse
Using a transient toast for critical errors.
Decision rules
  • Flag dead-end empty state when the page, table, list, dashboard, or panel has no object name, no cause, no valid next action, or no safe escape.
  • Use empty state when the absence is legitimate: first use, no created objects, no imported data, setup not complete, or permission-limited access with an explainable request path.
  • Use no-results recovery when user-controlled query, filters, sort, or browse criteria produced zero visible items; keep the criteria visible and offer remove-one, clear-all, broaden, or suggested-query actions.
  • Use error state when expected content failed to load, save, sync, authorize, or compute; preserve context and offer retry, fallback, correction, or support escalation.
  • Do not treat decorative art plus vague copy as a complete empty state unless the object, cause, and action are still clear without the illustration.
  • Do not show create, import, retry, restore, or clear controls unless the current user can use them and the action changes state predictably.
  • When the cause is not known yet, show loading, timeout, retry, or diagnostic feedback instead of rendering a blank resolved state.
  • After deletion or cleanup, choose restore, create/import, or navigation based on whether the empty result is intentional and recoverable.
  • If privacy or security prevents disclosing object existence, avoid a dead end by giving a safe generic explanation and navigation or request-access path.
Inspect live examples
Failure modes
  • Blank surface with no text, no count, no action, and no status.
  • Empty-state copy shown for a failed API request.
  • No-results shown without visible filters or query.
  • Create action shown to a read-only user.
  • Disabled button presented as the only next step.
  • Focus remains on a removed row or inert blank panel after the list becomes empty.
  • Same generic empty copy used for first-use, filtered, permission, loading, and error causes.