VHS(1)

πŸ’… VHS(1) β€” like, the manual manual ✨

okay so bestie, welcome to VHS(1) β€” it's the man page for vhs, and honestly? she's that girl. read this and you'll be writing terminal GIFs as code like it's nothing πŸŽ€


✨ NAME ✨

vhs β€” run a given tape file and generate its outputs. that's it, that's the whole job, and she does it flawlessly πŸ’–


🌸 SYNOPSIS 🌸

vhs [options...] [argument...]

πŸ¦‹ DESCRIPTION πŸ¦‹

VHS lets you write terminal GIFs as code. no cap. literally code. 🫢

VHS reads .tape files and renders GIFs (videos). the tape file is a script, bestie β€” it's made up of commands describing what actions to perform in the render 🌈

here's the full list of every possible command in VHS, don't skip any i'm serious:

  • Output <path>.(gif|webm|mp4)
  • Require <program>
  • Set <setting> <value>
  • Sleep <time>
  • Type "<string>"
  • Ctrl [+Alt][+Shift]+<char>
  • Backspace [repeat]
  • Delete [repeat]
  • Insert [repeat]
  • Down [repeat]
  • Enter [repeat]
  • Left [repeat]
  • Right [repeat]
  • Tab [repeat]
  • Up [repeat]
  • PageUp [repeat]
  • PageDown [repeat]
  • ScrollUp [repeat]
  • ScrollDown [repeat]
  • Hide
  • Show
  • Wait[+Screen][@<timeout>] /<regexp>/
  • Escape
  • Alt+<key>
  • Space [repeat]
  • Source <path>.tape
  • Screenshot <path>.png
  • Copy "<string>"
  • Paste

πŸŽ€ OPTIONS πŸŽ€

  • -o, --output β€” file name(s) of video output ✨
  • -p, --publish β€” publish your GIF to vhs.charm.sh and get a shareable URL πŸ‘‘
  • -q, --quiet β€” quiet, like do not log messages. oh but if the publish flag is provided, it will log that shareable URL 🀫

πŸ’œ COMMANDS πŸ’œ

  • help [command] β€” help about any command 🫢
  • new <name> β€” create a new tape file, complete with example tape file contents and documentation 🎁
  • publish <gif> β€” publish your GIF to vhs.charm.sh and get a shareable URL πŸ”—
  • record β€” create a new tape file by recording your actions πŸ“Ό
    • OPTIONS
      • -s, --shell β€” shell for recording
  • serve β€” start the VHS SSH server πŸ–₯️
  • themes β€” list all the available themes, one per line 🌈
    • OPTIONS
      • --markdown β€” output as markdown
  • validate <file>... β€” validate a glob file path and parses all the files to ensure they are valid without running them βœ…

⭐ OUTPUT ⭐

the Output command instructs VHS where to save the output of the recording πŸ’Ύ

file names with the extension .gif, .webm, .mp4 will have the respective file types. yes queen, the extension picks the format πŸ’…


πŸ“ SETTINGS πŸ“

the Set command allows VHS to adjust settings in the terminal, such as fonts, dimensions, and themes 🎨

here's every possible setting command in VHS, all of them, no skipping:

  • Set Shell <string>
  • Set FontSize <number>
  • Set FontFamily <string>
  • Set Height <number>
  • Set Width <number>
  • Set Rows <number>
  • Set Columns <number>
  • Set LetterSpacing <float>
  • Set LineHeight <float>
  • Set TypingSpeed <time>
  • Set Theme <json|string>
  • Set Padding <number>
  • Set Framerate <number>
  • Set PlaybackSpeed <float>
  • Set WaitTimeout <time>
  • Set WaitPattern <regexp>

πŸ’€ BUGS πŸ’€

see GitHub Issues: <https://github.com/charmbracelet/vhs/issues> β€” if something's cursed, that's where the receipts live πŸ™ˆ


🧚 AUTHOR 🧚

Charm <vt100@charm.sh> πŸ’Œ


(C) 2021-2022 Charmbracelet, Inc.

released under MIT license πŸ“œ


ok that's the whole page bestie, go make something iconic πŸ’–

signing off from the vhs manual page, dated 2026-09-25, VHS(1) through and through β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from