#asciinema #asciicast

app asciinema-scenario

Create asciinema videos from a text file

3 releases (breaking)

0.3.0 Apr 23, 2022
0.2.0 Sep 28, 2020
0.1.0 Sep 12, 2020

#40 in Video

Download history 2/week @ 2022-02-04 4/week @ 2022-02-18 2/week @ 2022-02-25 1/week @ 2022-03-04 9/week @ 2022-03-11 8/week @ 2022-03-18 30/week @ 2022-04-22 10/week @ 2022-04-29 25/week @ 2022-05-06 51/week @ 2022-05-13

116 downloads per month


244 lines



Create asciinema videos from a text file.

Have you ever re-record your asciinema video over and over again to hit perfect speed and avoid making typos? I did, too many times and this is why I wrote this tool.


If you have Nix installed, then issue nix-build, and the asciinema-scenario executable will be available in ./result/bin/.

$ nix-build
$ result/bin/asciinema-scenario



How to write a .scenario file?

  • If first line starts with #! it must be followed by JSON object. The object can include:

    Name Type Default Description
    step float 0.10 A time in seconds of typing speed of a single event.
    width int 77 Maximum number of characters in one line.
    height int 20 Number of lines of the video
  • Empty lines will add timeout of 3 x step.

  • Lines starting with #timeout: 1.5 will create a 1.5 second timeout. When custom timeout is needed select the timeout you need.

  • Lines starting with # will be skipped and can serve as comments.

  • Lines starting with $ will be typed out one character at the time with step timeout in between. Every character after # will be brighter.

  • Lines starting with "(nix-shell) $ " will be typed out with (nix-shell) in green color.

  • Lines starting with "--" will clear the screen. A timeout of 18 * step will be there before the terminal screen clears.

  • Everything else will be displayed immediately.


  • To immediately display a shell command line example (instead of having it being typed out as the default behaviour), precede $ with a zero-width space

  • To quickly play back the scenario you are working on (or any for that matter), use

    $ asciinema-scenario my.scenario | asciinema play -
    # or
    $ asciinema play <(asciinema-scenario my.scenario)


Detailed release notes are available in this repo at CHANGES.md.

Reporting issues

Found a bug? I'd love to know about it!

Please report all issues on the GitHub issue tracker.


Licensed under either of these:


~84K SLoC