
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
How to get it
- 1
Install with a package manager
You'll need: ttyd · ffmpeg
macOS or Linux (Homebrew)
brew install vhsGo install
go install github.com/charmbracelet/vhs@latest - 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
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
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| vhs (this) | 21.2k | CLI | beginner | 4 days ago | Developers who want a repeatable terminal demo for a README or docs |
| terminalizer | 16.2k | CLI | beginner | 2.2 years ago | Developers who want an animated GIF of a command-line demo for a README or blog post |
| cheat.sh | 41.8k | CLI | beginner | 2 months ago | Developers who look up command flags and syntax often from the terminal |
| fastfetch | 25.2k | CLI | beginner | 4 days ago | Linux users who want a fast, maintained alternative to neofetch |
| moviepy | 15.1k | Library | beginner | 2 months ago | Python developers who want to automate video edits, such as batch trimming or adding titles |
| terminal | 105k | App | beginner | 6 days ago | Windows 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.