---
url: https://listr2.kilic.dev/renderer/renderer.md
---

# {{ $frontmatter.title }}

Renderers are the communication interface with your *Listr*.

There are five renderers: `default`, `simple`, `verbose`, `silent`, and the testing-only `test`.

*DefaultRenderer* is the default choice.

If the environment advertises itself as non-TTY it will fall back to the fallback renderer automatically.

*SimpleRenderer* is an alternative to *DefaultRenderer*, which has all its capabilities but does not try to update your `vt100` compatible terminal if you are not using prompts. From  it is designated as the default choice for the fallback renderer.

*VerboseRenderer* was the default choice for the fallback renderer prior to . It is a fully text-based renderer.

*SilentRenderer* is used for the *Subtask* of *Task* since the parent already started a renderer. This renderer can also be used for using `listr2` as only a task list without any output to the terminal directly, so you could use your method of communication, or a logger however you like it.

*TestRenderer* can be used for tests, where it will only output JSON output per-line for specific events that happen throughout the render.

## *Listr* and *Subtask* Renderer Options and Per *Task* Renderer Options

Renderers can have global options, which it is set through `rendererOptions`, can be modified for a certain *Subtask*, and per *Task* options, which are injected inside the *Task* as `options`.

Depending on the selected `renderer`, `rendererOptions` as well as the `options` in the `Task` will change accordingly.

For also configuring the `fallbackRenderer`, you can pass `fallbackRendererOptions` to *Listr*.
