Format text with ANSI escape sequences.

Package Version Hex Docs

✨ This project is written in pure Gleam so you can use it anywhere Gleam runs: Erlang, Elixir, Node, Deno, even some browsers!


import gleam/io
import gleam_community/ansi

pub fn main() {
 let greeting = "Hello, " <>"world") <> "!"

 |> ansi.bg_white
 |> io.println


gleam_community packages are published to with the prefix gleam_community_. You can add them to your Gleam projects directly:

gleam add gleam_community_ansi

The docs can be found over at


ANSI escape sequences date back to the 70s as a standard way to format text on various video text terminals. Since then they have been adopted by many software terminal emulators and platforms, including some Web browsers, and are a simple way to format text without platform-specific APIs.

The point of this package is to abstract the specific codes away and give you an easy-to-understand API for formatting and colouring terminal text. Still, here is a quick couple of examples of what’s happening under the hood.

You can copy these examples straight into your terminal to see them in action!

$ echo "\e[33mhello"
$ echo "\e[45mhello"
$ echo "\e[3mhello\e[23m"

As you can see, the escape sequences are a bit obscure. Sure, you could hard code them, or you could use this package!

Search Document