CLI tool
spectreconsole/spectre.console avatar
spectreconsole/spectre.console

Spectre.Console: what the install command does not tell you

A .NET library that makes it easier to create beautiful console applications.

11,696 stars687 forksC#MIT

At a glance

What is it?
Spectre.Console gives .NET developers tables, grids, panels, styled text markup, and color that steps itself down to whatever the terminal reports. The repository works as an index rather than a manual, so the details that decide compatibility and escaping sit elsewhere.
Who is it for?
Spectre.Console fits teams writing interactive command line tools that need real layout and readable output without hand rolling escape sequences. The README does not document a way to force a color mode or the markup escaping rules, so pipelines that need identical output on every machine, or that render user data, should check the site documentation first.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • spectreconsole/spectre.console11,696 ★ · +62
Star history
Repository2026-09-222026-11-14
spectreconsole/spectre.console11.6k11.7k

62 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Color is downgraded to whatever the terminal reports

Color depth is the part with the most moving parts. Spectre.Console supports 3, 4, 8 and 24-bit color, and rather than forcing one mode it inspects the current terminal and downgrades colors as needed, so the same program renders on a current terminal and on something much older. That behavior is also its limit. The README does not name the terminals it probes, does not say what happens when a terminal reports no color support at all, and does not mention any way to force a mode or to pin 24-bit output for screenshots and CI logs. The consequence is that color decisions happen at run time, which is fine for a person at a prompt and awkward for anything that has to render the same bytes on two machines. If reproducible output matters to your pipeline, check the docs at https://spectreconsole.net for whether a color override exists.

The markup language comes from Rich, not from ANSI codes

Text styling runs through a markup language inspired by Rich, the Python library this project credits as its model, instead of asking callers to assemble raw escape sequences. The styling vocabulary covers the most common SGR parameters: bold, dim, italic, underline, strikethrough and blinking text, and the same drawing layer supplies tables, grids and panels. Two things stay unwritten. The grammar of the markup, including how to escape a literal bracket so that user data is not parsed as styling, is not covered in the README, and there is no note about sanitizing console output that contains user input. The consequence is concrete the moment you render a username, a filename or a log line: stray brackets in the data may be read as style tags, so the escaping rules have to come from the site documentation rather than from the README.

One install command, and no stated framework requirement

Getting the package in is a single line:

csharp
dotnet add package Spectre.Console

Past that line the README says nothing about which target frameworks the library builds for, which .NET SDK version it expects, or whether it loads on a particular runtime. The top-level entries do include global.json and dotnet-tools.json, which pin the SDK and the local tools the maintainers use, and NuGet.Config sits beside them, so an air-gapped or locked-down build has files to read, but none of their contents are described anywhere. The consequence for anyone evaluating the library is that runtime compatibility cannot be confirmed from this repository. You have to check the package on nuget.org or the docs at https://spectreconsole.net before committing to a target framework, which makes the README a starting point rather than a decision.

build.cs is the build, and no build command is documented

The top-level entries include build.cs, global.json, dotnet-tools.json, .editorconfig, .gitattributes and .git-blame-ignore-revs. None of this is explained for contributors: there is no command for building the project from source, no test command, and no statement of prerequisites. The library is described as written with unit testing in mind, which is a design claim about the code, not an instruction for running the suite, and the top-level entries show no separate test directory. CONTRIBUTING.md and build.cs are both present, so a contributor can assemble a workflow, but neither is described in the README.

ImageSharp arrives under Apache 2.0, not the MIT license

Spectre.Console itself is MIT licensed, copyright Patrik Svensson, Phil Scott, Nils Andresen and Cédric Luthi, and it is provided as-is. The dependency story is not a single license. SixLabors.ImageSharp, which Spectre.Console relies upon, is licensed under Apache 2.0 when distributed as part of Spectre.Console, and the Six Labors Split License covers all other usage of it. The consequence is that a compliance review cannot stop at the LICENSE.md file in this repository: two licenses apply to one install, and which terms govern ImageSharp depends on whether it arrived through Spectre.Console or through a direct reference in your own project. Teams that add ImageSharp themselves for image handling sit outside the Apache 2.0 grant and have to read the split license separately.

Six README translations with no stated sync policy

The README exists in six languages, with English alongside Japanese, Brazilian Portuguese, Chinese, Farsi and Turkish, each in its own file: README.jp.md, README.pt-BR.md, README.zh.md, README.fa.md and README.tr.md. What is missing is any statement about when they were last synced. No version or date is attached to a translation, so you cannot tell whether a translated install instruction matches the package version you are installing, and install steps are exactly where a stale translation costs time. A code of conduct defined by the Contributor Covenant is also linked, through the .NET Foundation version of it. For anyone setting up a machine in a language other than English, the practical check is the English README plus the package page, not the translation alone.

Priority is an upvote on one dashboard issue

Community demand is tracked in a single place: a Top Issues Dashboard issue, and the project asks people to upvote the issues and pull requests they care about. That gives contributors a visible way to signal interest and makes the project's attention legible to everyone watching. The README mentions no roadmap, and the repository does not say who curates the dashboard, how often it is read, or what turns an upvoted issue into shipped work. The consequence for a maintainer with limited time is that an upvote is a weak signal next to an issue that names a blocker and a reproducible failing case. If your feature depends on a specific issue, treat the dashboard as visibility rather than a commitment.

Instructions live on the site, examples live in another repo

The README is thin on purpose: detailed instructions are at https://spectreconsole.net, and runnable code sits in a separate examples repository at https://github.com/spectreconsole/examples rather than in this tree. Examples versioned alongside the package would tell you which API shape you are reading, and nothing here ties the examples to a particular release, so a snippet you copy can target a different version than the one you have installed. The project states it is heavily inspired by Rich and that it is supported by the .NET Foundation, which speaks to governance rather than to interface stability between releases. Version numbers stay below 1.0 at 0.57.0, 0.57.1 and 0.57.2 across June and July 2026, and the last push was on 2026-10-26, so the tree moves without carrying a stability promise.

Editorial conclusion

Spectre.Console fits teams writing interactive command line tools that need real layout and readable output without hand rolling escape sequences. The README does not document a way to force a color mode or the markup escaping rules, so pipelines that need identical output on every machine, or that render user data, should check the site documentation first. Before adopting it, confirm your target framework against the package metadata, check the ImageSharp split license terms if you reference that library yourself, and read the site documentation rather than the README for markup grammar and color overrides.

Frequently asked questions

what is spectre console

Spectre.Console is a .NET library for building cross platform console applications, supporting tables, grids, panels, a Rich inspired markup language, SGR styling such as bold and underline, and 3/4/8/24-bit color that downgrades to the detected terminal. It ships on NuGet under the MIT license.

how to use spectre console

Add the package with dotnet add package Spectre.Console, then read the documentation at https://spectreconsole.net. Working samples live in a separate repository at https://github.com/spectreconsole/examples.

c# spectre console alternative

It credits the Python library Rich as its inspiration and describes support for tables, grids, panels, markup, SGR text styling, and terminal color detection, with instructions at https://spectreconsole.net.

spectre console vs system commandline

No comparison with System.CommandLine appears in the repository. Spectre.Console is described as a rendering and styling library for console applications, and the reference is that Rich inspired it.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. spectreconsole/spectre.console on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/spectreconsole-spectre-console.svg)](https://hysenlabs.com/projects/spectreconsole-spectre-console)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/spectreconsole-spectre-console.svg)](https://hysenlabs.com/projects/spectreconsole-spectre-console)

Was this useful?