Dead easy terminal GIFs, from the terminal.
JavaScript Other
Latest commit 52be4ad Feb 24, 2016 @rauchg Merge pull request #4 from bfred-it/master
Use NeuQuant directly from npm


Cross-platform CLI GIF maker based on JS+Web.

How to use


$ clif out.gif

type exit to finish and save the recording.


  • Easy to install: npm install -g clif.
  • Works on OSX and Linux.
  • Small GIFs.
  • High quality (anti-aliased fonts).
  • Rendered with CSS/JS, customizable.
  • Realtime parallel rendering.
  • Frame aggregation and customizable FPS.
  • Support for titles

How it works

clif builds mainly on four projects: child_pty, term.js omggif and phantomjs.

child_pty is used to spawn a pseudo terminal from which we can capture the entirety of input and output.

Each frame that's captured is asynchronously sent to a phantomjs headless browser to render using term.js and screenshot.

The GIF is composited with omggif and finally written out to the filesystem.


  Usage: clif [options] <outfile>


    -h, --help           output usage information
    -V, --version        output the version number
    -c, --cols <cols>    Cols of the term [90]
    -r, --rows <rows>    Rows of the term [30]
    -s, --shell <shell>  Shell to use [/bin/bash]
    -f, --fps <fps>      Frames per second [8]
    -q, --quality <q>    Frame quality 1-30 (1 = best|slowest) [5]


  • Substitute phantom with a terminal rendered on top of node-canvas or low-level graphic APIs. terminal.js seems like a good candidate to add a <canvas> adaptor to.
  • Should work on Windows with some minor tweaks.