Empty state examples in animated ASCII

An empty state is the screen your app shows when there is nothing to show yet: no search results, an empty inbox, a first project still to create, or a connection that dropped. This library turns those moments into small animated illustrations drawn in text, each with its own short message, sized to sit inside a card, a panel or a modal.

Where to start

There are pieces for the quiet moments and the tense ones: No Search Results, All Caught Up Check, Payment Success Card, Payment Declined Shake, Unplugged Offline Cable, Rate Limit Hourglass and Welcome Door Opening. Designers can use them as references for empty state design, and developers can embed them in an app with one tag.

What makes a good empty state design

A good empty state answers three questions in a few seconds: what happened, why the screen is empty, and what to do next. The illustration sets the tone, the headline names the situation, and one clear action moves the user forward.

Match the emotion to the moment. A first-run screen should feel welcoming, a success should feel like a small reward, and an error should stay calm and helpful. Motion helps when it tells the story: a tick that draws itself or a door that swings open explains the moment faster than a still icon.

  • First use: explain the value and offer the first action, as Cobweb Empty Folder and Welcome Door Opening do.
  • User cleared it: celebrate the finish, as All Caught Up Check and Task Done Confetti do.
  • Something went wrong: say what failed and how to retry, as Unplugged Offline Cable and Rate Limit Hourglass do.

Which empty state illustration for which moment

Pick by the job the screen has to do. Each name below is a piece in this category, ready to drop into the embed tag.

  • No results page: No Search Results.
  • Inbox zero or no notifications: Empty Inbox Plane, All Caught Up Check.
  • Offline or unstable network: Unplugged Offline Cable, Reconnecting Signal Bars, Broken Link Cloud.
  • Server errors: Smoking Server Box.
  • Too many requests: Rate Limit Hourglass.
  • Signed out or blocked: Session Expired Clock, Access Denied Padlock.
  • Checkout: Payment Success Card, Payment Declined Shake.
  • Saving, uploading and copying: Saved To Cloud Tick, Upload Into Tray, Copied To Clipboard.
  • Deleting with undo: Trash Lid Closing.
  • Onboarding and milestones: Onboarding Flag Planted, Welcome Door Opening.
  • Not built yet: Coming Soon Rocket, Construction Crane Panel.

Editing the message inside an empty state

Many of these illustrations include short text, such as a search query that found nothing, a rate limit notice or a coming soon line. That text lives in plain strings in the piece's code, which you can read in the Source section of its page. Copy the file and its small kit.js helper into your project, change the strings, and keep them close to the original length, since each piece is laid out on a fixed grid of 56 to 62 columns.

Keep the real message in your own HTML too. Put the headline and the action button next to the art as normal text, so screen readers and translation tools can reach them. The embed labels itself with the piece name and shows a still frame to anyone who prefers reduced motion.

Using animated empty states in React and Vue apps

The simplest route is the embed tag, which works in any framework because ascii-art is a standard custom element. Load the ascii.js script once, then render <ascii-art piece="empty-no-results"><ASCII library-art> wherever the empty state appears. In Vue, mark ascii-art as a custom element in the compiler options so Vue does not try to resolve it as a component.

For React, the React tab on each piece page gives a small component: copy the piece file and kit.js into your project, import it, and it draws frames into a pre element. That route needs no extra network request and lets you edit the message. When your data arrives, unmount the component and the animation stops with it.

Ways to use ASCII empty states & feedback

Step-by-step guides with a live builder and code to copy.

All 18 use cases →

/FAQS

ASCII empty states & feedback: frequently asked questions

Answers about using ASCII empty states & feedback on websites, in READMEs, in terminals and in exports.

Q. What is an empty state in UI design?
An empty state is the screen an app shows when a view has no content to display, such as an empty inbox, a search with no results or a new account with no projects. A good one explains why the space is empty and offers a clear next step, often with an illustration to set the tone.
Q. What are some good empty state examples?
Strong empty state examples include an inbox zero screen that celebrates, a no results page that suggests a new search, and a first-run screen with one clear action. In this library, All Caught Up Check, No Search Results and Welcome Door Opening show each of those patterns as small animations.
Q. How do I design a no results page?
A no results page should repeat the search term, say plainly that nothing matched, and offer a way forward such as checking the spelling, clearing filters or browsing popular items. The No Search Results piece shows a magnifying glass sweeping over empty rows under the query, which you can place above that copy.
Q. Where can I find animated empty state illustrations?
This category has animated empty state illustrations for search, inbox, offline, errors, payments, uploads and onboarding. Each one is hand-coded in text, only a few KB to embed, and exports as a GIF, an MP4 video or a PNG when you need a static asset for a design file or a prototype.
Q. Should an empty state have an animation?
A short, gentle animation helps when it explains the moment, like a tick drawing itself after a save or a cable swaying when you are offline. Avoid loud, fast motion next to an error message. These pieces show a still frame to users who prefer reduced motion.
Q. How do I add an empty state animation to a React app?
Use the React tab on the piece page: copy the piece file and kit.js into your project, then render the component when your list is empty. Alternatively, load the ascii.js script once and render the ascii-art tag, which React treats like any other element.
Q. Do these empty state animations work in Vue?
Yes, ascii-art is a standard custom element, so it renders in a Vue template once ascii.js is loaded. Tell the Vue compiler to treat ascii-art as a custom element through its isCustomElement option, which stops warnings about an unknown component.
Q. Can I change the text inside an empty state illustration?
Yes. The message strings are written in the piece's code, which you can read and copy from the Source section of its page. Edit them in your copy of the file and keep the length similar, because each piece is laid out on a fixed grid.
Q. What should an offline or error state say?
An offline or error state should say what failed in plain words, reassure the user that their work is safe when it is, and offer a retry. Unplugged Offline Cable pairs a swaying cable with a retry countdown, and Smoking Server Box gives a friendly something went wrong state for server errors.
Q. Is there a payment success or payment failed animation?
Yes, Payment Success Card slides a card in, processes the charge and pops a green tick as the amount counts up, while Payment Declined Shake gives the card a gentle shake and shows a red cross. Both are sized for a checkout panel or a confirmation modal.
Q. Are these empty state graphics accessible?
They are built with accessibility in mind: the embed labels itself with the piece name, plays only while visible, and shows a still frame to users who prefer reduced motion. Keep your headline and buttons as real HTML text beside the art so assistive technology can read the message.
Q. Can I use these empty states in a commercial SaaS product?
Yes, every piece is MIT licensed for personal and commercial use, including inside paid software. You can embed them, export them or edit their code to fit your product. Credit is appreciated but not required.

Related categories

All categories