explaingit

charmbracelet/vhs

Analysis updated 2026-06-21

19,682GoAudience · developerComplexity · 2/5Setup · easy

TLDR

VHS turns a simple script file into a polished, reproducible animated GIF or video of terminal commands, no manual screen recording needed.

Mindmap

mindmap
  root((repo))
    What it does
      Records terminal demos
      Outputs GIF or video
      No manual recording
    Inputs
      Tape script file
      Terminal commands
      Style config
    Outputs
      Animated GIF
      MP4 or WebM
      PNG frame sequence
    Tech
      Written in Go
      Uses ffmpeg
      Uses ttyd
    Use cases
      README demos
      Repeatable presentations
      Integration testing
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add a GIF of your CLI tool in action to your GitHub README.

USE CASE 2

Create a consistent, repeatable demo of a terminal workflow for a presentation.

USE CASE 3

Write integration tests that verify what your terminal program displays on screen.

What is it built with?

Goffmpegttyd

How does it compare?

charmbracelet/vhstwpayne/chezmoiahmetb/kubectx
Stars19,68219,70119,732
LanguageGoGoGo
Setup difficultyeasyeasyeasy
Complexity2/52/51/5
Audiencedeveloperdeveloperops devops

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

In plain English

VHS is a tool for creating animated GIFs or video recordings of terminal sessions by writing a simple script, called a "tape file", rather than manually screen-recording while you type. Instead of capturing a video in real time, you write out the sequence of actions you want (type this command, press Enter, wait two seconds) in a plain text file, then run VHS to produce a polished, repeatable GIF or video. This means your terminal demos are reproducible and version-controlled just like code. A tape file looks like readable instructions: you specify the output filename, configure the terminal size and font, then list actions like typing a command, pressing a key, or pausing for effect. VHS drives a virtual terminal behind the scenes, executes those actions, and records the result using ffmpeg (a widely used video tool) and ttyd (a terminal-over-browser utility). The output can be a GIF, MP4, or WebM video, or even a sequence of PNG frames. You would reach for VHS when you want to document a command-line tool with a GIF for a GitHub README, create consistent demos for a presentation, or run integration tests that verify what your terminal program actually displays. It can also run as an SSH server so you can use it remotely without installing dependencies locally. VHS is written in Go and installable via Homebrew, package managers, Docker, or a Go install command.

Copy-paste prompts

Prompt 1
Write a VHS tape file that types 'ls -la', presses Enter, waits 1 second, then saves the result as demo.gif at 1200x600.
Prompt 2
How do I configure VHS to use a specific font and dark background theme in my tape file?
Prompt 3
Show me a VHS tape file that demonstrates a multi-step deployment script with pauses between each command.
Prompt 4
How do I run VHS as an SSH server so my team can generate terminal GIFs remotely without installing it locally?

Frequently asked questions

What is vhs?

VHS turns a simple script file into a polished, reproducible animated GIF or video of terminal commands, no manual screen recording needed.

What language is vhs written in?

Mainly Go. The stack also includes Go, ffmpeg, ttyd.

How hard is vhs to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is vhs for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub charmbracelet on gitmyhub

Verify against the repo before relying on details.