The following table tries to give an overview from bat
s perspective, i.e. we only compare
categories which are relevant for bat
. Some of these projects have completely different goals and
if you are not looking for a program like bat
, this comparison might not be for you.
bat | pygments | highlight | ccat | source-highlight | hicat | coderay | rouge | |
---|---|---|---|---|---|---|---|---|
Drop-in cat replacement |
✔️ * | ❌ | ❌ | (:heavy_check_mark:) | ❌ | ❌ * | ❌ | ❌ |
Git integration | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Automatic paging | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ |
Languages (circa) | 150 | 300 | 200 | 7 | 80 | 130 | 30 | 130 |
Extensible (languages, themes) | ✔️ | (:heavy_check_mark:) | (:heavy_check_mark:) | ❌ | (:heavy_check_mark:) | ❌ | ❌ | ❌ |
Advanced highlighting (e.g. nested syntaxes) | ✔️ | ✔️ | (:heavy_check_mark:) ? | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
Execution time [ms] (jquery-3.3.1.js ) |
624 | 789 | 400 | 80 | 300 | 316 | 157 | 695 |
Execution time [ms] (miniz.c ) |
66 | 656 | 26 | 8 | 53 | 141 | 75 | 254 |
Execution time [ms] (370 kB XML file) | 238 | 487 | 129 | 111 | 110 | 339 | 147 | 359 |
If you think that some entries in this table are outdated or wrong, please open a ticket or pull request.
Some other alternatives that are also related, but not yet included in the table:
The benchmarks above have been created with this script:
#!/usr/bin/env bash
cd "$(dirname "${BASH_SOURCE[0]}")" || exit
if ! command -v hyperfine > /dev/null 2>&1; then
echo "'hyperfine' does not seem to be installed."
echo "You can get it here: https://github.com/sharkdp/hyperfine"
exit 1
fi
SRC="test-src/jquery-3.3.1.js"
cmd_bat="bat --style=full --color=always --paging=never '$SRC'"
cmd_bat_simple="bat --plain --wrap=never --tabs=0 --color=always --paging=never '$SRC'"
cmd_pygmentize="pygmentize -g '$SRC'"
cmd_highlight="highlight -O truecolor '$SRC'"
cmd_ccat="ccat --color=always '$SRC'"
cmd_source_highlight="source-highlight --failsafe --infer-lang -f esc -i '$SRC'"
cmd_hicat="hicat '$SRC'"
cmd_coderay="coderay '$SRC'"
cmd_rouge="rougify '$SRC'"
hyperfine --warmup 3 \
"$cmd_bat" \
"$cmd_bat_simple" \
"$cmd_pygmentize" \
"$cmd_highlight" \
"$cmd_ccat" \
"$cmd_source_highlight" \
"$cmd_hicat" \
"$cmd_coderay" \
"$cmd_rouge" \