gitwtfhub

wtf is bat?

sharkdp/bat — explained in plain English

Analysis updated 2026-06-20

58,746RustAudience · developerComplexity · 1/5Setup · easy

TL;DR

bat is a drop-in replacement for the cat command that adds syntax highlighting, line numbers, and Git change markers to files in your terminal, while staying fully compatible with scripts and pipes.

Mindmap

mindmap
  root((bat))
    What it does
      Syntax highlighting
      Line numbers
      Git change markers
    Features
      Scrollable pager
      Pipe-safe output
      Language detection
    Integrations
      fzf preview
      ripgrep colors
      Man pages
    Tech stack
      Rust
      Single binary

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

Why would anyone build with this?

REASON 1

Browse source code and config files in the terminal with color-coded syntax highlighting instead of plain text.

REASON 2

Use bat as the preview pane in fzf to see colorized file contents while fuzzy-searching.

REASON 3

View which lines were modified, added, or deleted in a file relative to the last Git commit.

REASON 4

Colorize man pages and help text from other command-line tools.

What's in the stack?

Rust

How it stacks up

sharkdp/batdani-garcia/vaultwardenmeilisearch/meilisearch
Stars58,74659,85657,433
LanguageRustRustRust
Setup difficultyeasymoderateeasy
Complexity1/53/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Wtf does this do

bat is a command-line tool for displaying the contents of files in your terminal, serving as an enhanced replacement for the standard Unix cat command. The core problem it solves is that reading source code or configuration files in a terminal with the default cat command is tedious: there is no color, no line numbers, and no way to tell at a glance what changed in a file. bat adds syntax highlighting for a large number of programming and markup languages, line numbers, and Git integration that shows which lines have been modified, added, or deleted since the last commit, all displayed in a scrollable pager so long files don't flood your screen. The tool is designed as a drop-in replacement for cat, meaning you use it the same way. When bat detects that its output is being piped to another command or to a file rather than displayed in a terminal, it automatically removes the decorative formatting and behaves exactly like plain cat, so it works correctly in scripts without any adjustment. Beyond standalone use, bat integrates well with other command-line tools: it can serve as the preview window in fzf, a fuzzy file finder, it can colorize the output of ripgrep search results, it can display man pages with syntax highlighting, and it can colorize help text from other commands. bat supports both reading from files and from standard input, and it can highlight specific programming languages you specify manually. The project is written in Rust, which gives it fast startup time and good performance even on large files. You would use bat whenever you are frequently reading code, config files, or logs in a terminal and want readable, color-coded output with contextual Git information, without leaving the command line.

Yoink these prompts

Prompt 1
Show me how to set bat as the default pager for man pages in my .bashrc or .zshrc.
Prompt 2
Write a shell alias that pipes ripgrep search results through bat with syntax highlighting.
Prompt 3
How do I configure bat to use a specific color theme and display only a certain line range?
Prompt 4
Show me how to wire bat as the preview window in an fzf file picker with live syntax highlighting.

Frequently asked questions

wtf is bat?

bat is a drop-in replacement for the cat command that adds syntax highlighting, line numbers, and Git change markers to files in your terminal, while staying fully compatible with scripts and pipes.

What language is bat written in?

Mainly Rust. The stack also includes Rust.

How hard is bat to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is bat for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.