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

# grohtml(1)

groff output driver for HTML

## Name

grohtml, post-grohtml, pre-grohtml - *groff* output driver for HTML

## Synopsis

**pre-grohtml** \[**-epV**\] \[**-a**  *anti-aliasing-text-bits*\] \[**-D**  *image-directory*\] \[**-F**  *font-directory*\] \[**-g**  *anti-aliasing-graphic-bits*\] \[**-i**  *resolution*\] \[**-I**  *image-stem*\] \[**-o**  *image-vertical-offset*\] \[**-x**  *html-dialect*\] *troff-command* *troff-argument* ...

**pre-grohtml** **--help**

**pre-grohtml** **-v**

**pre-grohtml** **--version**

**post-grohtml** \[**-bCGhlnrVy**\] \[**-F**  *font-directory*\] \[**-j**  *output-stem*\] \[**-k**  *encoding*\] \[**-s**  *base-point-size*\] \[**-S**  *heading-level*\] \[**-x**  *html-dialect*\] \[*file* ...\]

**post-grohtml** **--help**

**post-grohtml** **-v**

**post-grohtml** **--version**

## Description

The GNU *roff* system's HTML support consists of a preprocessor, *pre-grohtml*, and an output driver, *post-grohtml*; together, they translate [*roff*(7)](/roff/7.md) documents to HTML. Because a preprocessor is (uniquely) required for this output driver, users should invoke *grohtml* via the [*groff*(1)](/groff/1.md) command with the **-Thtml** or **-Txhtml** options. (In this installation, **ps** is the default output device.) Use *groff*'s **-P** option to pass any options shown above to *grohtml*. If no operands are given, or if *file* is “**-**”, *grohtml* reads the standard input stream. It writes to the standard output stream.

*grohtml* invokes *groff* twice. In the first pass, the preprocessor *pre-grohtml* renders pictures, equations, and tables as images in PostScript format using the **ps** output device. In the second pass, the output driver *post-grohtml* translates the output of [*troff*(1)](/troff/1.md) to HTML.

*grohtml* writes UTF-8-encoded output (but see the **-k** option) and produces HTML character references for most non-composite, non-basic Latin Unicode characters. In spite of this, *groff* may issue warnings about unknown special characters if they can't be found during the first pass. You can ignore these warnings unless the special characters appear inside a table or equation.

### Typefaces

*grohtml* supports the standard four styles: **R** (roman), **I** (*italic*), **B** (**bold**), and **BI** (***bold-italic***). Fonts are grouped into families **T** and **C** having members in each style.

- **TR** **TI** **TB** **TBI** **CR** **CI** **CB** **CBI**

  Times roman

  Times italic

  Times bold

  Times bold-italic

  Courier roman

  Courier italic

  Courier bold

  Courier bold-italic

A special font, **S**, is also provided to accommodate *roff* documents that expect it to always be available.

*grohtml* furthermore supports a naming scheme for East Asian typefaces shared with [*gropdf*(1)](/gropdf/1.md), [*grops*(1)](/grops/1.md), and [*grotty*(1)](/grotty/1.md).

- **CSH** **CSS** **CTH** **CTS** **JPG** **JPM** **KOG** **KOM**

  Simplified Chinese, Hei style

  Simplified Chinese, Song style

  Traditional Chinese, Hei style

  Traditional Chinese, Song style

  Japanese, Gothic style

  Japanese, Mincho style

  Korean, Gothic style

  Korean, Mincho style

### Font description files

The font description files used with *grohtml* expose the same glyph repertoire in their **charset** sections. See [*groff\_font*(5)](/groff_font/5.md).

### Dependencies

*pre-grohtml* generates an image whenever an *eqn* equation, *tbl* table, or *pic* picture is encountered in the input. *grohtml* therefore may run several commands as part of its operation. These include the Netpbm tools *pamcut*, *pnmcrop*, and *pnmtopng*, as well as Ghostscript's *gs* and *ps2ps*.

## Options

**--help** displays a usage message, while **-v** and **--version** show version information; all exit afterward.

- **-a** *anti-aliasing-text-bits*

  Number of bits of antialiasing information to be used by text when generating PNG images. The default is **4** but **0**, **1**, and **2** are also valid. Your system's version of *gs* must support the **-dTextAlphaBits** option in order to exploit antialiasing. A value of **0** stops *grohtml* from issuing antialiasing commands to *gs*.

- **-b**

  Initialize the background color to white.

- **-C**

  Suppress output of “CreationDate:” HTML comment.

- **-D** *image-directory*

  Instruct *grohtml* to place all image files into directory *image-directory*.

- **-e**

  Direct *eqn* to produce MathML.

-

  This option should not be manually specified; it is synthesized by *groff* depending on whether it was given the **-Thtml** or **-Txhtml** option.

- **-F** *font-directory*

  Prepend directory font-directory*/dev*name to the search path for font and device description files; *name* is the name of the device, usually **html**.

- **-g** *anti-aliasing-graphic-bits*

  Number of bits of antialiasing information to be used by graphics when generating PNG images. The default is **4** but **0**, **1**, and **2** are also valid. Your system's version of *gs* must support the **-dGraphicAlphaBits** option in order to exploit antialiasing. A value of **0** stops *grohtml* from issuing antialiasing commands to *gs*.

- **-G**

  Suppress output of “Creator:” HTML comment.

- **-h**

  Generate section headings by using HTML **B** elements and increasing the font size, rather than HTML **H** elements.

- **-i** *resolution*

  Set the image resolution in pixels per inch; the default is **100**.

- **-I** *image-stem*

  Determine the image file name stem. If omitted, *grohtml* uses *grohtml-*XXXXX (where *XXXXX* is the process ID). A dash is appended to the stem to separate it from the following image number.

- **-j** *output-stem*

  Instruct *grohtml* to split the HTML output into multiple files. Output is written to a new file at each section heading (but see option **-S** below) named *output-stem-*n*.html*.\

- **-k** *encoding*

  Select the character encoding used in the generated document, affecting the declared encoding in the preamble and the form of character entity references. Valid values are “ASCII” and “UTF-8”. The default is “UTF-8”.

- **-l**

  Turn off the production of automatic section links at the top of the document.

- **-n**

  Generate simple heading anchors whenever a section/number heading is found. Without the option the anchor value is the textual heading. This can cause problems when a heading contains a “?” on older versions of some browsers. This feature is automatically enabled if a heading contains an image.

- **-o** *image-vertical-offset*

  Specify the vertical offset of images in points.

- **-p**

  Display page rendering progress to the standard error stream. *grohtml* displays a page number only when an image is required.

- **-r**

  Turn off the automatic header and footer line (HTML rule).

- **-s** *base-type-size*

  Set the document's base type size in points. When this size is used in the source, it corresponds to the HTML base type size. Every increase of two points in the source will produce a “**big**” element, and conversely when a decrease of two points is seen, a “**small**” element is emitted.

- **-S** *heading-level*

  When splitting HTML output (see option **-j** above), split at each nested heading level defined by *heading-level*, or higher). The default is **1**.

- **-V**

  Create an XHTML or HTML validator button at the bottom of each page of the document.

- **-x** *html-dialect*

  Select HTML dialect. Currently, *html-dialect* should be either the digit **4** or the letter **x**, which indicates whether *grohtml* should generate HTML 4 or XHTML, respectively.

-

  This option should not be manually specified; it is synthesized by *groff* depending on whether it was given the **-Thtml** or **-Txhtml** option.

- **-y**

  Produce a right-aligned *groff* signature at the end of the document (only if **-V** is also specified).

## Exit status

*pre-grohtml* and *post-grohtml* each exit with status **0** on successful operation, status **2** if the program cannot interpret its command-line arguments, and status **1** if it encounters an error during operation.

## Environment

- *GROFF\_FONT\_PATH*

  lists directories in which to search for *devhtml*, *grohtml*'s directory of device and font description files. See [*troff*(1)](/troff/1.md) and [*groff\_font*(5)](/groff_font/5.md).

- *SOURCE\_DATE\_EPOCH*

  A timestamp (expressed as seconds since the Unix epoch) to use as the output creation timestamp in place of the current time. The time is converted to human-readable form using [*gmtime*(3)](/gmtime/3.md) and [*asctime*(3)](/asctime/3.md), and recorded in an HTML comment.

- *TZ*

  The time zone to use when converting the current time to human-readable form; see [*tzset*(3)](/tzset/3.md). If *SOURCE\_DATE\_EPOCH* is used, it is always converted to human-readable form using UTC.

## Files

- */usr/share/groff/1.24.2/font/devhtml/DESC*

  describes the **html** output device.

- */usr/share/groff/1.24.2/font/devhtml/*F

  describes the font known as *F* on device **html**.

- */usr/share/groff/1.24.2/tmac/html.tmac*

  defines font mappings, special characters, and colors for use with the **html** output device. It is automatically loaded by *troffrc* when either of the **html** or **xhtml** output devices is selected.

- */usr/share/groff/1.24.2/tmac/html-end.tmac*

  finalizes setup of the **html** output device. It is automatically loaded by *troffrc-end* when either of the **html** or **xhtml** output devices is selected.

*grohtml* uses temporary files. See [*groff*(1)](/groff/1.md) for details about where such files are created.

## Bugs

*grohtml* is still beta code.

*grohtml* does not truly support hyphenation, but you can fool it into hyphenating long input lines, which can appear in HTML output with a hyphenated word followed by a space but no line break.

## See also

[*groff*(1)](/groff/1.md), [*troff*(1)](/troff/1.md), [*groff\_font*(5)](/groff_font/5.md)
