Initializing... drag & drop files here
Supports: XCF
.xcf GIMP project, or click "+ Add Files" to pick one. GIMP-compressed variants (XCF saved with zlib, gzip, or bzip2) are accepted, and batch upload of multiple XCF files is supported.XCF is GIMP's native working format — first shipped on December 15, 1997 and named after Berkeley's eXperimental Computing Facility. It is a layered, editable container that holds layers, layer masks, channels, paths, guides, and the current selection, similar in scope to Photoshop's PSD. Almost nothing outside GIMP (and a few partial readers like Krita and Gwenview) reads XCF reliably, and the GIMP team explicitly recommends against XCF as an interchange format. PPM, the Portable Pixmap from the Netpbm suite, is the opposite: a tiny, well-specified, header-plus-raw-RGB container that every image-processing tool on Unix can read.
pnmscale, pnmtopng, pamscale, ppmhist) are deliberately small, single-purpose programs designed to be chained with pipes. Converting your XCF to PPM lets you drop a GIMP-edited frame straight into a shell pipeline without GIMP's libraries installed.| Property | XCF (GIMP) | PPM (Netpbm) |
|---|---|---|
| Full name | eXperimental Computing Facility | Portable Pixmap |
| Introduced | 1997 (GIMP 1.0 era) | 1988 (Pbmplus, Jef Poskanzer) |
| Designed for | Editable, layered project file | Cross-platform raw RGB exchange |
| Layers / channels / paths | Preserved | Flattened to a single image |
| Compression | RLE, plus zlib (since v4), gzip, bzip2, xz | None — raw bytes after a tiny header |
| Color depth | 8-bit, 16-bit integer, 32-bit float (per GIMP) | 1–255 maxval = 8 bits/channel; 256–65535 = 16 bits/channel |
| Transparency | Yes (alpha channel, layer masks) | No (RGB only; PAM/PNG needed for alpha) |
| Metadata | Parasites, ICC profile, EXIF | None — color space implied (typically sRGB / BT.709) |
| Magic bytes | gimp xcf ASCII signature |
P6 (binary) or P3 (ASCII) |
| Software support | GIMP (full); Krita, Gwenview (partial) | Universal on Unix: ImageMagick, FFmpeg, OpenCV, Netpbm |
| Typical file size | Large (layers + history) | Very large (uncompressed; ~3 bytes/pixel) |
| Variant | Magic | Sample storage | Channels | Best for |
|---|---|---|---|---|
| PPM (P6) — 8-bit | P6, maxval 1–255 | 1 byte / sample | RGB | The common case; ImageMagick, OpenCV, FFmpeg default |
| PPM (P6) — 16-bit | P6, maxval 256–65535 | 2 bytes / sample, big-endian | RGB | High-precision scientific work, HDR intermediates |
| PPM (P3) — ASCII | P3 | Decimal text | RGB | Human-readable debugging, tiny test fixtures |
| PGM (P5/P2) | P5 binary, P2 ASCII | 1 or 2 bytes / sample | Single grayscale | Greyscale-only pipelines; convert via PPM then ppmtopgm, or export PGM directly from GIMP |
| PBM (P4/P1) | P4 binary, P1 ASCII | 1 bit / pixel | Black & white | 1-bit masks, fax, OCR pre-processing |
| PAM | P7 | Variable | RGB+alpha, others | When you need transparency (PPM does not) |
No. PPM has no concept of layers, masks, or vector paths — the entire format spec is "magic number, width, height, maxval, raw RGB bytes." The conversion follows the same approach as the canonical command-line tool xcf2pnm: all visible layers are composited top-down into a single flattened image, transparent pixels are flattened against the background, and that flat raster is what gets written. If you need to keep layers, save your XCF as PSD, OpenRaster (.ora), or TIFF instead.
Because PPM is uncompressed by design. An 8-bit RGB PPM is exactly width × height × 3 bytes plus a tiny ASCII header (~15 bytes). A 4000×3000 PPM is therefore around 36 MB. Your XCF likely compressed the same pixels with zlib (the default since XCF v4) or RLE. PPM trades file size for parsing simplicity — that is the whole point of the format. If size matters, run the PPM through pnmtopng or save as PNG instead.
Pick 8-bit (maxval 255) unless you have a specific reason not to. Almost every reader handles 8-bit correctly, and most consumer XCFs are 8-bit anyway. Pick 16-bit (maxval 65535) if your XCF uses GIMP's 16-bit integer or 32-bit float precision mode and you need to keep fine tonal gradations for scientific analysis, HDR work, or downstream colour grading. Be aware that 16-bit doubles file size and a few legacy tools only accept 8-bit PPM.
No. PPM is strictly red-green-blue with no alpha. The Netpbm spec is explicit on this. If you need transparency, the Netpbm answer is PAM (Portable Arbitrary Map, magic P7), which adds an alpha tuple type. In practice, most workflows just pick PNG instead — see XCF to PNG when alpha matters.
The first two bytes of a PPM file are the magic number. P6 is the binary form: header in ASCII, then raw RGB bytes packed back-to-back. P3 is the plain form: every sample written as a decimal number in ASCII text, separated by whitespace. P6 is what you almost always want — it is roughly 3× smaller and orders of magnitude faster to parse. P3 exists mainly for human inspection, tiny test files, and environments without binary file support. This converter writes P6 by default.
Photoshop does not read PPM natively. The standard route is either to install a plugin or, more reliably, run the PPM through a free converter to PNG/TIFF first. Affinity Photo also has limited PPM support. If your target audience is Photoshop or Affinity users, XCF to TIFF or XCF to PNG is a better choice — both keep lossless pixel data and are widely supported.
xcf2pnm locally?xcf2pnm (Henning Makholm's tool, packaged in the xcf2png / xcftools Debian/Ubuntu package) is excellent if you already have it installed. The browser converter is for everyone else: no install step, no Linux required, no command line. Functionally both flatten layers and emit a P6 PPM, so the output is interchangeable for downstream pipelines. Batch upload also lets you convert many XCFs without writing a shell loop.
The GIMP project itself recommends against using XCF as an interchange format because the spec evolves (layer groups added in 2.7, color-managed channels later, etc.) and forward compatibility is not guaranteed. For long-term editable storage, the GIMP team is moving toward OpenRaster (.ora). For "send to another editor," PSD, TIFF, or PNG are safer than XCF. Converting to PPM is for downstream processing, not for round-tripping back into an editor.
Floating selections are not always rendered correctly by xcf2pnm-style flattening, and some exotic layer modes, indexed-color layers in mixed-mode files, or very recent GIMP 2.10+ effects may render slightly differently from a full GIMP composite. If pixel-perfect fidelity matters, open the XCF in GIMP and use File → Export As →.ppm directly — that uses GIMP's full rendering engine. For most flat photographic or design XCFs, the browser conversion produces output indistinguishable from GIMP's own export.