Get Started

Script a terminal demo once, render it as a GIF or a Reel

VHS reads a short text file, types your commands into a hidden terminal and films it as a GIF, MP4 or WebM. No screen recorder, no typos, no retakes. When your project changes, edit one line and render it again.

30 minBeginnerTools: FreeStep 1 free
Tested 9 Oct 2026 · VHS 0.12.1, ttyd 1.7.7, FFmpeg 9.0.2, Windows PowerShell 5.1, Windows 11
VHS working on Windows, Mac or Linux, with the two free helper programs it needs
A reusable .tape script that renders the same demo as a GIF, an MP4 and a WebM in one go
A 1080x1920 vertical version for Reels, Shorts and TikTok, from the same commands
  • A demo GIF for your GitHub README that you can re-render any time your project changes
Before you start
  • Windows, Mac or Linux, with at least 130MB of free disk space (VHS is about 23MB, ttyd about 1.4MB and FFmpeg about 105MB. winget's FFmpeg is the bigger "full" build, so allow more)
  • Google Chrome or Microsoft Edge. VHS uses one of them, hidden, to draw the terminal. Every Windows 11 PC has Edge. If VHS finds neither, it downloads its own copy of Chromium
  • Notepad or any text editor
  • Helpful but not required: Level 0's terminal survival kit
● What you'll have in 30 minutes
Preview
Two VHS renders from this mission, placed side by side for this page: the 1200x600 README demo (left) and the 1080x1920 Reels version (right). Each renders in about 30 to 40 seconds.
01/05Install VHS and its two helpers0 done
STEP 01 of 05~8 min

Install VHS and its two helpers

VHS needs two other free programs: ttyd (a terminal inside a web page) and FFmpeg (which turns frames into video).

  1. VHS is made by Charm, the team behind lots of popular terminal tools. It works in a clever way: it starts a terminal in a web page with ttyd, opens that page in a hidden Chrome or Edge window, types your commands, takes a picture of every frame and hands the frames to FFmpeg to make the GIF or video. You never see any of it happen.

  2. Install all three with winget, one line each:

    Windows
    winget install --id charmbracelet.vhs -e
    winget install --id tsl0922.ttyd -e
    winget install --id Gyan.FFmpeg -e
    Mac, or Linux with Homebrew (installs ttyd and FFmpeg with it)
    brew install vhs
  3. On Linux without Homebrew, use the package line for your distro from the VHS install guide ↗ (Arch, for example, is pacman -S vhs), and make sure ttyd and ffmpeg are installed too: VHS needs both on your PATH.

  4. Close the terminal and open a new one, so it can find the new programs. Then check all three are there:

    Terminal
    vhs --version
    ttyd --version
    ffmpeg -version
    Output
    vhs version v0.12.1 (24fa225)
    ttyd version 1.7.7-40e79c7
    ffmpeg version 9.0.2-essentials_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers
    ...
  5. For the hidden browser, VHS looks for Chrome first, then Edge. You don't need to set anything up.

✓
CheckpointAll three commands print a version number.
If it breaks'ffmpeg is not installed. Install it from: http://ffmpeg.org' + 2 more
'ffmpeg is not installed. Install it from: http://ffmpeg.org'
VHS can't find FFmpeg. Install it with the winget line above, then open a new terminal and check ffmpeg -version works before trying again.
'ttyd is not installed. Install it from: https://github.com/tsl0922/ttyd'
Same fix: install ttyd, open a new terminal, and check ttyd --version prints a version.
'vhs' is not recognised
Close every terminal and open a new one. winget adds programs to your PATH, but only new windows pick up the change.
Still stuck? Ask the community
Next mission · Build things with codeFind the move that lost your last chess game
→