Unix compress was written in C by Joseph M. Orost, James A. Woods et al., and was widely circulated via Usenet. It uses the Lempel-Ziv Welch algorithm and normally produces files with the suffix ".Z".
Compress uses variable length codes. Initially, nine-bit codes are output until they are all used. When this occurs, ten-bit codes are used and so on, until an implementation-dependent maximum is reached.
After every 10 kilobytes of input the compression ratio is checked. If it is decreasing then the entire string table is discarded and information is collected from scratch.