Updated: 27 November 2013
Table Of Contents


pnm - Netpbm superformat


The PNM format is just an abstraction of the PBM, PGM, and PPM formats. I.e. the name "PNM" refers collectively to PBM, PGM, and PPM.

The name "PNM" is an acronym derived from "Portable Any Map." This derivation makes more sense if you consider it in the context of the other Netpbm format names: PBM, PGM, and PPM.

The more general term "Netpbm format" refers to the PNM formats plus PAM.

PNM is principally used with Netpbm.

Note that besides being names of formats, PBM, PGM, PPM, and PNM are also classes of programs. A PNM program can take PBM, PGM, or PPM input. That's nothing special -- a PPM program can too. But a PNM program can often produce multiple output formats as well, and a PNM program can see the difference between PBM, PGM, and PPM input and respond to each differently whereas a PPM program sees everything as if it were PPM. This is discussed more in the description of the netpbm programs.

"pnm" also appears in the names of the most general Netpbm library routines, some of which aren't even related to the PNM format.


No Internet Media Type (aka MIME type, content type) for PNM has been registered with the IANA, but the value image/x-portable-anymap is conventional.

Note that there are also conventional Internet Media Types for each of the PNM subformats. The recommended practice is to use those in preference to the PNM code when it is convenient to do so.


There are no requirements on the name of a PNM file, but the convention is to use the suffix "pbm", "pgm", or "ppm", depending on the particular subformat, or "pnm" if it is not convenient to distinguish the subformats.


ppm, pgm, pbm, pam, programs that process PNM, libnetpbm

Table Of Contents