groff es el reemplazo libre de GNU para los formateadores de texto nroff y troff. Es una implementación escrita principalmente en C++ por James Clark y fue modelada sobre la base de ditrof, incluyendo muchas extensiones. La primera versión, 0.3.1, fue dispuesta al público en junio de 1990. La primera versión estable, 1.04, fue anunciada en noviembre de 1991. Groff fue desarrollado como software libre para proporcionar una alternativa a nroff/troff, que en ese tiempo eran propietarios y ni siquiera estaban disponible en algunos sistemas Unix. En 1999, Ted Harding y Werner Lemberg asumieron la dirección del proyecto.
Groff posee una gran cantidad de asistentes, preprocesadores y postprocesadores incluyendo eqn, tbl, pic y soelim. También hay disponibles diversos paquetes que mejoran, expanden o reemplazan totalmente las capacidades de las macros originales de troff.
Actualmente el desarrollo de groff está activo y creando nuevas capacidades, puesto que es una parte importante de cualquier derivado de Unix como GNU/Linux o los derivados de BSD4.4, principalmente por su uso en las páginas de man de Unix.
Hasta hace poco, O'Reilly era una compañía de publicación que dependía bastante en groff para la salida final de páginas y el flujo de trabajo (actualmente los libros son hechos principalmente con una combinación de Adobe FrameMaker y QuarkXPress, lo que se puede notar en los colofones de sus libros).