Skip to content

VHS

Records terminal sessions as GIFs or videos from a plain-text script you can edit and rerun.

Stars
21.2k
Forks
490
Licence
MIT
Language
Go
Last update
4 days ago
Type
CLI

What it is

VHS is a command-line tool that turns a text script (called a tape file) into a GIF or video of a terminal session. You write commands such as typing text, pressing Enter, and waiting, and VHS plays them back in a virtual terminal and renders the result. People use it to make demos of command-line tools and to test that CLI programs behave as expected.

  • Write a .tape file that types a command, waits, and produces demo.gif
  • Render the same tape to multiple outputs such as out.gif, out.mp4, or out.webm
  • Record a terminal session with vhs record and edit the generated tape file
  • Publish a finished GIF to vhs.charm.sh with vhs publish

Great for

  • Developers who want a repeatable terminal demo for a README or docs
  • Maintainers of command-line tools who need animated examples that stay up to date
  • Teams that run integration tests on CLI programs and want visual output
  • Anyone who prefers editing a script over re-recording a screen by hand

Not ideal for

  • People who only want to capture their screen as ordinary video, since VHS records a virtual terminal rather than the desktop
  • Users who need a graphical editor, because the workflow is text-file based
  • Anyone unable to install ttyd and ffmpeg, which the README says are required
Step-by-step guide: how to use VHSInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: ttyd · ffmpeg

    macOS or Linux (Homebrew)

    brew install vhs

    Go install

    go install github.com/charmbracelet/vhs@latest
  2. 2

    Run it

    • Create a starter file with vhs new demo.tape
    • Edit demo.tape to set the Output file name and the commands to type
    • Run vhs demo.tape to generate demo.gif
  3. 3

    Get the most out of it

    • Use vhs record to capture a session as a starting tape, then edit it
    • Add Require lines at the top of a tape to fail early if a program is missing from PATH
    • Use Set commands such as FontSize, Width, and Height to control the look of the output
    • Run vhs manual on the command line for the full command reference
    • Use the Docker image to run VHS without installing its dependencies

Downloads

Strengths

  • Demos are plain-text scripts, so they can be version-controlled and rerun
  • Supports several output formats, including GIF, MP4, WebM, and PNG frame sequences
  • Installable through common package managers and Docker, per the README

Trade-offs

  • Requires ttyd and ffmpeg to be installed separately
  • Settings must be placed at the top of a tape file, which the README notes as a constraint
  • Some features, such as publishing, depend on a hosted service at vhs.charm.sh

How it compares

ProjectStarsTypeLevelUpdatedBest for
vhs (this)21.2kCLIbeginner4 days agoDevelopers who want a repeatable terminal demo for a README or docs
terminalizer16.2kCLIbeginner2.2 years agoDevelopers who want an animated GIF of a command-line demo for a README or blog post
cheat.sh41.8kCLIbeginner2 months agoDevelopers who look up command flags and syntax often from the terminal
fastfetch25.2kCLIbeginner4 days agoLinux users who want a fast, maintained alternative to neofetch
moviepy15.1kLibrarybeginner2 months agoPython developers who want to automate video edits, such as batch trimming or adding titles
terminal105kAppbeginner6 days agoWindows users who work in the command line every day and want tabs and rich text

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.