explaingit

spectreconsole/spectre.console

11,419C#Audience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A C# library for .NET that lets developers add formatted tables, colored text, progress bars, and styled panels to command-line apps using a simple markup language, inspired by Python's Rich library.

Mindmap

mindmap
  root((spectre.console))
    What it does
      Terminal UI for dotNET
      Formatted CLI output
    Features
      Styled text
      Tables and grids
      Panels and borders
      Progress bars
    Colors
      4-bit 8-bit 24-bit
      Auto graceful fallback
    Markup
      HTML-like tags
      No escape codes needed
    Setup
      NuGet one command
      Any dotNET project
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add color-coded tables and progress bars to a C# CLI tool so its output is easier to scan and understand.

USE CASE 2

Replace raw Console.Write calls in a .NET script with styled markup tags that render bold, italic, and colored text.

USE CASE 3

Build a terminal dashboard for an ops tool that shows service status in a formatted panel layout.

Tech stack

C#.NETNuGet

Getting it running

Difficulty · easy Time to first run · 5min
MIT license, free to use, modify, and distribute for any purpose including commercial use, with no restrictions beyond keeping the copyright notice.

In plain English

Spectre.Console is a C# library for .NET that helps developers build visually polished command-line applications. Instead of writing plain text output line by line, developers use Spectre.Console to produce formatted tables, panels, grids, styled text, and progress bars, all within a terminal window. The library was inspired by Rich, a popular Python library with a similar purpose. Out of the box, Spectre.Console supports a wide range of text styling options including bold, italic, underline, strikethrough, and blinking text. It handles color output at multiple depths: 4-bit (16 colors), 8-bit (256 colors), and 24-bit (true color). If a terminal does not support a high color depth, the library automatically falls back to a simpler color set, so output degrades gracefully rather than breaking. Layout components include tables with configurable columns and borders, panels for boxing a piece of output, and grids for arranging content side by side. The library also includes a markup language, similar in spirit to HTML, where developers wrap text in tags to apply styles without writing low-level terminal escape codes by hand. Installation is straightforward: one command adds the NuGet package to any .NET project. Full documentation is hosted at spectreconsole.net, and a separate examples repository shows what the library looks like in practice. The project is backed by the .NET Foundation and released under the MIT license. This library is aimed at developers building tools, scripts, or CLI utilities in C# who want output that is easier to read than raw console text. It does not add a graphical interface, the output is still plain terminal text, just with formatting applied. Non-technical users would encounter Spectre.Console indirectly, through tools built on top of it, rather than using it themselves.

Copy-paste prompts

Prompt 1
I have a C# CLI app that prints a plain list of files. Show me how to use Spectre.Console to render it as a formatted table with colored columns.
Prompt 2
I want to show a progress bar in my .NET console app while downloading files. Give me the Spectre.Console code to display a live progress bar with a percentage and ETA.
Prompt 3
Using Spectre.Console markup, how do I print a warning message in bold yellow text and an error in red without writing terminal escape codes by hand?
Prompt 4
How do I use Spectre.Console's Panel component to draw a bordered box around a section of output in my C# CLI tool?
Open on GitHub → Explain another repo

← spectreconsole on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.