GNU roff (groff) — a GNU project
Table of Contents
Please note that contributing to this package requires assigning copyright to the FSF.
groff (GNU roff) is a typesetting system that reads plain text input files that include formatting commands to produce output in PostScript, PDF, HTML, or DVI formats or for display to a terminal. Formatting commands can be low-level typesetting primitives, macros from a supplied package, or user-defined macros. All three approaches can be combined.
A reimplementation and extension of the typesetter from AT&T Unix, groff is present on most POSIX systems owing to its long association with Unix manuals (including man pages). It and its predecessor are notable for their production of several best-selling software engineering texts. groff is capable of producing typographically sophisticated documents while consuming minimal system resources.
groff is distributed under the GNU General Public License.
If you would like to contribute to groff, or are interested to know where groff is headed, have a look at its mission statement.
Examples of groff usage with the mom macro package can be found in groff-mission-statement.mom, mission-statement-style.mom and mission-statement-strings.mom, which were used to generate the PDF version.
Source code releases of groff are available at the GNU software host (mirrors). The current version is 1.23.0 (05-Jul-2023). Release candidate archives for the next version may also be available from the GNU alpha site. We greatly appreciate feedback on these when they are newer than the most recent release. Read the INSTALL.extra file within for build requirements and instructions.
To participate in groff development, clone its Git repository. Read the INSTALL.extra and INSTALL.REPO files within for build requirements and instructions.
To view the contents of the repository in your browser, use Savannah's cgit interface. You can view any commit in isolation, and browse the entire source tree corresponding to its state as of that commit. Click the summary line of the commit message to expose these options.
Platform Source and Binary Packages
Most GNU/Linux distributions offer groff as source and binary packages, and often it is already installed with the base system, at least in part. Many subdivide the groff installation, usually based on run-time dependencies, debugging symbol information, or by separating the documentation. In addition to groff, look for packages with names like groff-dbg, groff-doc, or groff-full.
Installing groff will also place its documentation on your system.
- groff --help
- summarizes options and operands. Most commands installed by groff recognize this option.
- man groff
- offers an overview of the system and a guide to further documentation. groff installs about five dozen man pages that describe every aspect of the system. We have collected these in our manuals directory.
- info groff
- presents a book-length manual documenting the language of the formatter in detail, with many examples. You can also read this groff manual online.
- Groff and mom: an overview
- contains a useful summary of basic groff concepts and workflow.
- A research paper on the development of grohtml is also available.
The source distribution also contains README and MANIFEST files
you should consult. Distributors often supply these in binary
packages as well, installed in locations like
groff has three mailing lists dedicated to it.
- <firstname.lastname@example.org> for general discussion of everything related to groff
- <email@example.com> for reporting bugs and following bug reports
- <firstname.lastname@example.org> a read-only list showing changes to the git repository
To subscribe to one of these groff mailing lists, visit the corresponding web page.
Alternatively, send an empty mail with a
header line of subscribe to the relevant
xxx-request list. For example, to subscribe yourself
to the main groff discussion list, you would send mail to
with no body and a
Subject: header line of only
Archives of these lists can be found at the following locations.
Please report bugs using the bug tracker linked from the
page. Alternatively, but less preferably, you can use the
form in the text file
BUG-REPORT distributed with the
groff source code; its purpose is to make sure that we have all
the information we need to fix the bug. At the very least, read
BUG-REPORT and make sure that you supply all the
information that it asks for. Even if you are not sure that
something is a bug, report it using
will help us determine whether it really is a bug or not.
Return to the GNU Project home page.
Please send broken links and other corrections (or suggestions) to email@example.com.
Please see the Translations README for information on coordinating and submitting translations of this article.
©1996-1999, 2001, 2003-2014, 2022 Free Software Foundation,
51 Franklin St, Fifth Floor, Boston, MA 02110, USA
Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.
Updated: 2023-07-06 Authors: wl, ps, bg, gbranden