Beautifully formatted output for your terminal 🌈
Switch branches/tags
Nothing to show
Clone or download
Latest commit f1de836 Dec 3, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Clarifications in docs Nov 29, 2018
fixtures Cleanup Nov 29, 2018
src Export error type Nov 29, 2018
.gitignore Refactor Nov 21, 2018
Cargo.toml Extend docs Nov 29, 2018
LICENSE_APACHE Add licenses Nov 29, 2018
LICENSE_MIT Update LICENSE_MIT Dec 2, 2018 Mention bat as a standalone cli alternative Nov 29, 2018


Syntax highlighting library with batteries included.

Quick start


The above output was created with the following code:

let printer = PrettyPrinter::default()


Note that prettyprint is a builder and can be customized. For example, if you don't like the grid or the header, you can disable those:

let printer = PrettyPrinter::default()

let example = r#"
def fib(n)        
    return 1 if n <= 1
    fib(n-1) + fib(n-2)
printer.string_with_header(example, "fib.rb")?;

"What!? It can also print strings, Matthias? That's insane."
It's true. You're welcome.


Add this to your Cargo.toml:

prettyprint = "*"

But why?

syntect is a great package for highlighting text.
When writing a command-line tool that prints text however, you might be looking for some additional functionality.

  • Line numbers
  • More built-in color-themes
  • Automatic pagination
  • Proper terminal handling
  • Showing non-printable characters
  • File headers
  • Windows support

prettyprint offers all of this in one crate (thanks to bat).

Known limitations

  • Doesn't run on no-std targets. I don't plan to support those.


prettyprint is simply a fork of bat, with some functionality stripped out and bundled up as a library. I built it, because I needed it for cargo-inspect. All credits go to the original authors.