PSD
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Psd Preview.
At a glance
| Original creator | Adobe |
| Purpose | The native document of Adobe Photoshop: a raster image with its layers, masks, transparency, text, channels and other editing state. |
| Extensions | .psd |
| Poka parser | poka-psd |
| Viewer | poka-image-with-meta-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B3 Core (see Breadth tiers) |
How much Poka reads
B3 Core. Only the main content type or types are decoded (for example geometry but not materials, layers or annotations, or only one version family). The list of gaps is substantial.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: parsers/poka-psd/src/lib.rs (section pre-validation, psd crate 0.3.5 flatten_layers_rgba or rgba() for 8-bit, hand-written 16-bit RGB and greyscale composite, layer and group listing), unit tests, tests/samples.rs (needs 35+ of 54 samples to render, typed errors otherwise); corpus header scan: 34 8-bit RGB, 13 16-bit RGB, 3 8-bit CMYK, 2 8-bit greyscale, 1 32-bit RGB, 1 8-bit Lab, all header version 1; psd-0.3.5 source read for depth, mode and blend limits. Covers PSD (version 1) RGB and greyscale documents only.
What Poka does not read
- PSB large documents (header version 2) not read
- 32-bit and 1-bit documents rejected
- CMYK is converted with the naive product formula, not Photoshop's own profile; Lab, indexed, duotone and multichannel modes are not colour-converted, and 16-bit CMYK is refused
- ZIP-compressed composites refused
- layer effects, adjustment layers, masks, smart objects, text and vector layers not rendered
- twelve blend modes the psd crate leaves unimplemented (PassThrough, Dissolve, the two colour modes, Vivid/Linear/Pin Light, Hard Mix and the four hue modes) are not replayed: the file's saved composite is shown instead, and the card says so
- layers are listed (first 12 names, hidden, opacity) but cannot be toggled or shown
- XMP, EXIF, ICC, thumbnail and other image resources only counted
- no layer or colour data beyond the flattened picture
Background
Wikipedia says PSD stores everything Photoshop can edit, and that PSB, the large document format, raises the limit to 300,000 pixels a side. Poka shows a flattened image, plus the size, colour mode, bit depth, layer and group counts and the first visible layer names. In 8-bit RGB documents the psd crate composites the layers (the composite Photoshop saved is used when a file has no layers, when flattening fails, or when a layer uses a blend mode the crate leaves unimplemented — that trap is an abort on wasm, so such a file is shown from the composite and the card names the mode). The 16-bit path reads the saved composite, and so does a CMYK file: the four inks are converted with the product formula, because the crate hands them to its RGB writer as coloured channels. Poka's own code does not composite layers.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| PSD (header version 1) | 8BPS |
Partly read | 8-bit RGB documents go through the psd crate, which composites the layers unless one uses a blend mode it cannot mix (then the saved composite is shown). 16-bit grey and RGB and 8-bit CMYK composites are decoded in the module. 32-bit and 1-bit documents are rejected, ZIP-compressed composites are refused, and Lab and indexed documents are not colour-converted. |
Derived and related formats
- Photoshop Big (large document format) (
.psb): Header version 2. Not routed to Poka.
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- image (used; MIT OR Apache-2.0; Rust)
- psd (used; MIT OR Apache-2.0; Rust)
- psd-tools (candidate; MIT; Python; https://github.com/psd-tools/psd-tools) — Reads/writes PSD/PSB structure and layers; compositing partial; PyPI v1.24.0.
- ag-psd (candidate; MIT; TypeScript/JavaScript; https://github.com/Agamnentzar/ag-psd) — readPsd/writePsd for Node and browser; no CMYK/Lab/16-bit support, text layers incomplete.
- ag-psd-rs (candidate; MIT; Rust; https://github.com/Vasyanator/ag-psd-rs) — From-scratch Rust port of ag-psd; crates.io v0.3.0 updated 2026-09-06. A search result says it was largely written by Claude and is not human-reviewed; treat with caution.
- Aspose.PSD for .NET (candidate; Commercial; .NET (also Java edition); https://www.nuget.org/packages/Aspose.PSD/) — Reads/writes/converts PSD and PSB; licence terms on vendor site not read.
Sources
- https://en.wikipedia.org/wiki/Adobe_Photoshop
- parsers/poka-psd/src/lib.rs