---
name: "nroff"
section: "1"
platform: "linux"
package: "groff"
version: "1.24.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/nroff"
---

# nroff(1)

format documents with groff for terminal (“TTY”) devices

## Name

nroff - format documents with *groff* for terminal (“TTY”) devices

## Synopsis

**nroff** \[**-abcCEhikpRStUVzZ**\] \[**-d**  *ctext*\] \[**-d**  *string***=** *text*\] \[**-D**  *fallback-input-encoding*\] \[**-I**  *inclusion-directory*\] \[**-K**  *input-encoding*\] \[**-m**  *macro-package*\] \[**-M**  *macro-directory*\] \[**-n**  *page-number*\] \[**-o**  *page-list*\] \[**-P**  *postprocessor-argument*\] \[**-r**  *cnumeric-expression*\] \[**-r**  *register***=** *numeric-expression*\] \[**-T**  *output-device*\] \[**-w**  *warning-category*\] \[**-W**  *warning-category*\] \[*file* ...\]

**nroff** **--help**

**nroff** **-v** \[*other-nroff-option* ...\]

**nroff** **--version** \[*other-nroff-option* ...\]

## Description

*nroff* formats documents written in the [*groff*(7)](/groff/7.md) language for typewriter-like devices such as terminal emulators. GNU *nroff* emulates the AT&T *nroff* command using [*groff*(1)](/groff/1.md). *nroff* generates output via [*grotty*(1)](/grotty/1.md), *groff*'s terminal output driver, which needs to know the character encoding scheme used by the device. Consequently, acceptable arguments to the **-T** option are **ascii**, **latin1**, and **utf8**; any others are ignored. If neither the *GROFF\_TYPESETTER* environment variable nor the **-T** command-line option (which overrides the environment variable) specifies a (valid) device, *nroff* consults the locale to select an appropriate output device. It first tries the [*locale*(1)](/locale/1.md) program, then checks several locale-related environment variables; see section “Environment” below. If all of the foregoing fail, *nroff* assumes “**-T ascii**”.

The **-a**, **-b**, **-c**, **-C**, **-d**, **-E**, **-i**, **-I**, **-m**, **-M**, **-n**, **-o**, **-r**, **-U**, **-w**, **-W**, and **-z** options have the effects described in [*troff*(1)](/troff/1.md). **-c** and **-h** imply “**-P -c**” and “**-P -h**”, respectively; **-c** is also meaningful to *troff* itself. Further, GNU *nroff* ignores the AT&T *nroff* options **-e**, **-q**, and **-s**. [*groff*(1)](/groff/1.md) documents options **-D**, **-k**, **-K**, **-p**, **-P**, **-R**, **-t**, **-S**, and **-Z**. **-V** causes *nroff* to display the constructed *groff* command on the standard output stream, but does not execute it. **-v** and **--version** show version information about *nroff* and the programs it runs, while **--help** displays a usage message; all exit afterward.

## Exit status

*nroff* exits with status **2** if there was a problem parsing its arguments, with status **0** if any of the options **-V**, **-v**, **--version**, or **--help** were specified, and with the status of *groff* otherwise.

## Environment

Normally, the path separator in environment variables ending with *PATH* is the colon; this may vary depending on the operating system. For example, Windows uses a semicolon instead.

- *GROFF\_BIN\_PATH*

  Locate *groff* commands in these directories, followed by those in *PATH*. If not set, the installation directory of GNU *roff* executables, */usr/bin*, is searched before *PATH*.

- *GROFF\_TYPESETTER*

  specifies the default output device for *groff*.

- *LC\_ALL* *LC\_CTYPE* *LANG* *LESSCHARSET*

  are pattern-matched in this order for contents matching standard character encodings supported by *groff* in the event no **-T** option is given and *GROFF\_TYPESETTER* is unset, or the values specified are invalid.

## Files

- */usr/share/groff/1.24.2/tmac/tty-char.tmac*

  defines fallback definitions of *roff* special characters. These definitions more poorly optically approximate typeset output than those of *tty.tmac* in favor of communicating semantic information. *nroff* loads it automatically.

## Notes

Pager programs like [*more*(1)](/more/1.md) and [*less*(1)](/less/1.md) may require command-line options to correctly handle some output sequences; see [*grotty*(1)](/grotty/1.md).

## See also

[*groff*(1)](/groff/1.md), [*troff*(1)](/troff/1.md), [*grotty*(1)](/grotty/1.md), [*locale*(1)](/locale/1.md), [*roff*(7)](/roff/7.md)
