Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
6m 08s
Spectre.Console is a .NET library that helps you turn ordinary C# console applications into beautiful, feature-rich, and informative tools. In his Spectre Console Series, Tim Corey devotes an entire video to "Adding Emojis to Your Console - Spectre Console Series".
In this article, we'll take a deeper look at how to work with emojis in Spectre.Console by following Tim's video step by step.
At the start of the lesson, Tim explains that Spectre Console allows you to "turn your C# console apps into visually appealing, informative applications." He notes that the source code for his demo is available on GitHub via the link in the video description, which makes it easy to install the package and follow along.
Tim says that in this lesson we're going to learn how to add emojis to our console output. He points out that he's included a URL to the official list of emojis and more documentation about how to use them. This is crucial, he says, because there are three different ways to display emojis in Spectre Console and two of them involve knowing the actual string name of the emoji.
This ties directly into the idea of markdown hints and Spectre Console Markup, which Tim uses extensively in his demonstration.
Tim's first demonstration shows the simplest way to display emojis - by embedding emoji names inside Spectre Console Markup. He uses AnsiConsole.MarkupLine to write a line with emoji placeholders:
AnsiConsole.MarkupLine("I like :baseball: :american_football:");AnsiConsole.MarkupLine("I like :baseball: :american_football:")Tim explains that the markup system detects the colons as the start and end of an emoji string and replaces them with the actual emoji characters. If you run this code inside your static void Main in a simple class Program, the console renders baseball and American football emojis right inside your output.
However, Tim warns about syntax: if you mistype the emoji name (for example, use :football: instead of :american_football:) the terminal will fall back to displaying just the text :football:. He notes that you have to type the emoji string exactly as defined in the emoji list.

This example also shows how output encoding and console font support affect the display. Tim says that the underlying system, font, and terminal (Windows Terminal, PowerShell, cmd, etc.) all determine how or whether these characters are rendered.
Tim then moves on to his second approach: using the Emoji.Known object. This approach avoids memorizing emoji names and lets you select them from a list exposed by the library. He writes:
AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}");AnsiConsole.WriteLine($"Hello {Emoji.Known.WorldMap}")Tim notes that this makes it easy to pick emojis programmatically. In the IDE you can see all the general emojis Spectre.Console supports, like banana, avocado, faces, and more, which can be inserted without needing to type colon-delimited names.
He also explains why you might prefer this approach. This style is easier to put into a database or an external source. Later, when you render your console output, you simply pull the object reference (such as Emoji.Known.Banana) and display it. This is also a nice way to get SpectreDemoEmoji in a strongly-typed fashion rather than relying on strings.
Tim's third approach simulates pulling data from a database. He writes:
string displayText = "I am totally normal :zany_face:\n";
AnsiConsole.Write(displayText);Dim displayText As String = "I am totally normal :zany_face:" & Environment.NewLine
AnsiConsole.Write(displayText)When you run this code, the console does not show an emoji. Instead, it prints :zany_face: literally. Tim shows that you must explicitly replace emoji names with real emojis using the Emoji.Replace method:
AnsiConsole.Write(Emoji.Replace(displayText));AnsiConsole.Write(Emoji.Replace(displayText))This method transforms the string coming from an external source into one that renders with actual emojis. Tim says this is critical when your text contains user-entered emoji placeholders or markdown hints.

Tim remarks that emojis aren't just for static text. Some of Spectre.Console's built-in widgets and spinners already use emojis internally. He mentions a weather spinner that cycles between sunny, cloudy, and rainy faces. This shows that functions, methods, and tasks inside Spectre.Console can use emojis to make their displays more expressive.
After showing how cool emojis can look, Tim explains an important limitation: emoji support depends on your operating system, console font, and output encoding.
He demonstrates running the same code inside Windows Terminal, Visual Studio's console, and the classic cmd shell. In some cases, instead of emojis you'll see question marks. That's because the console cannot handle the Unicode characters.
Tim warns that you must design your console output so it still makes sense if the emojis don't render. For example, if you show "I like ⚾ 🏈" and the emojis don't appear, it becomes "I like ? ?" and the user no longer knows what you're talking about. But if you display "I like baseball ⚾" then even without the emoji the text still conveys meaning.

He stresses that while emojis can spice up your Spectre.Console app, you shouldn't make them your only communication method.
Tim closes by pointing to the URL he provided. That link contains the full list of supported emojis, markdown hints, and which ones are safest across terminals. He suggests checking it for more emoji help, examples, and updates. This is where you'll find defined names for bananas, avocados, faces, and other fun icons, as well as information about browser or system compatibility.
Tim Corey wraps up by summarizing the three main ways of using emojis in Spectre.Console:
He also reiterates that font support, output encoding, and the user's terminal or operating system (cmd, PowerShell, Windows Terminal) affect how emojis are displayed. Always include text next to emojis and test your console output in multiple shells to ensure compatibility.
By following Tim's video, you can easily create, install, and run Spectre.Console apps that use emojis to make your console output friendlier and more informative - without losing clarity when emoji support is limited.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy