๐Ÿ˜ผ fcat

April 25, 2026 ยท View on GitHub

Github Actions

fastcat logo

fcat, short for fastcat, is a cat implementation in Rust using Linux's splice syscall.
Read the announcement here.

:warning: **This project is currently broken on newer Linux versions (5.9+) because of some changes
concerning the splice system call. (See here and here.) Consider using uutils/cat, GNU coreutils 9.11 on such kernels since it supports splice too.

Performance

cat myfile | pv -r > /dev/null
[1.90GiB/s]
fcat myfile | pv -r > /dev/null
[5.90GiB/s]

Installation

Note: Only works on Linux.
(But you can send me a pull request for other operating systems.)

cargo install fcat

Usage

fcat file1 file2 file3

Project goals

  • Be the fastest cat in town.
  • Be a drop-in replacement for (POSIX) cat.

Non-goals

  • Provide any additional functionality other than what cat provides.
    If you're looking for a more beautiful cat, check out bat.

Known issues

If you run fcat /dev/zero >> myfile, it will fail with exit code EINVAL because, according to the splice manpage: "The target file is opened in append mode."

Trivia

  • You probably won't ever need this, but it's a fun little experiment.
  • What I like the most about the project is the logo.
  • GNU coreutils 9.11 started using splice at cat (https://savannah.gnu.org/news/?id=10884).

License

fcat is licensed under either of

at your option.