Skip to content
pdfconversionapi

PSB to TIFF API

POST a .psb to /v2/convert/psb/to/tiff; the JSON returns one flat TIFF. Our 16-bit banner came back as a 16-bit RGB TIFF of 295,122 bytes whose values equal, sample for sample, the 16-bit PNG from the same file.

Endpoint
POST /v2/convert/psb/to/tiff
Accepts
psb
Sample timing
86 ms median of 5 runsHow we measure
Request size
Up to 10 MB on the Free plan or 100 MB on paid plans, all files together

Request and response

Every sample below ran against the API before this page was published. Set PDFCONVERSIONAPI_KEY to your key and run it as is.

curl -sS -X POST \
  https://api.pdfconversionapi.com/v2/convert/psb/to/tiff \
  -H "Authorization: Bearer $PDFCONVERSIONAPI_KEY" \
  -F File=@ridge-loop-trail-banner.psb \
  -o response.json

# FileData is base64. Save the first file in converted/,
# or print the JSON error.
if jq -e '.Files' response.json > /dev/null; then
  mkdir -p converted
  name=$(jq -r '.Files[0].FileName' response.json)
  jq -r '.Files[0].FileData' response.json \
    | base64 --decode > "converted/$name"
else
  cat response.json
fi
200 OK86 ms median1 file, 288 KB
{
  "ConversionCost": 1,
  "ConversionTime": 0.086,
  "Files": [
    {
      "FileName": "ridge-loop-trail-banner.tiff",
      "FileExt": "tiff",
      "FileSize": 295122,
      "FileData": "SUkqACSABAABAAAAAQAAAAEA…"
    }
  ]
}

Response from our test run on 2026-11-03. ConversionTime shows the median of 5 runs. FileData is shortened here; the real response carries the whole file as base64.

The sample, converted

The same file the code sends. Download the input and the output and compare them yourself.

First page of ridge-loop-trail-banner.tiff, rendered by the API
Input
ridge-loop-trail-banner.psb (171 KB)
Output
ridge-loop-trail-banner.tiff (288 KB)
Source
A layered trail-map banner we drew for this site: 384 x 128 pixels at 16 bits per channel on an opaque Background layer, with seven layers including a smooth sky gradient and a hidden old route. Written in the large document (PSB) format by our own script from the published file format specification. (CC0-1.0). How it was made
Made by
2026-11-04, API build 9eeeb0640aba

Parameters

Send these as form fields next to the file. Names are case-insensitive. If you set one of the documented options below that we don't support yet, the request fails with a 400 that names it instead of returning a file made without it.

ParameterWhat it does
ImageResolutionintegerWrites the DPI into the TIFF. The banner's 150 ppi needs ImageResolution=150; without it the fields hold 1/1 and no unit.Values: 10–800
ImageWidthintegerWidth after flattening. Scaling keeps 16 bits: 192 gave a 192 × 64 TIFF of 73,938 bytes.Values: 1–20000
ImageHeightintegerHeight after flattening; with a width, a box the document is fitted into.Values: 1–20000
ScaleProportionsboolean, default truefalse forces the exact width and height you send.
ScaleIfLargerboolean, default falsetrue only lets the request make the document smaller.
ScaleImageboolean, default truefalse crops from the top left instead of scaling.
ColorSpaceenum, default defaultgray and monochrome each gave an 8-bit one-channel TIFF of 49,350 bytes; the 16-bit depth is not kept.Values: default, rgb, gray, monochrome; cmyk returns 400
TransparentColorstringAdds an alpha channel in which one exact color is clear. The TIFF drops to 8 bits per channel (196,822 bytes with #FFFFFF).Values: #RRGGBB, R,G,B or a color name
FileNamestringBase name of the TIFF; ridge-loop-trail-banner.tiff otherwise.
StoreFileboolean, default falsetrue answers with a 3-hour link rather than base64.

What carries over, and what doesn't

Kept

  • All 16 bits per channel: BitsPerSample reads 16, 16, 16, and every value equals the 16-bit PNG of the same PSB
  • The look of the layers as merged by the API, within 1 step in 65,535 of the merged image stored in the PSB
  • An opaque document as three-channel RGB, with no alpha channel added

Lost or not yet supported

  • Size. The TIFF is uncompressed: 295,122 bytes, against 47,095 for the 16-bit PNG.
  • Layers and the hidden Old route; the TIFF is one flat page.
  • The 150 ppi resolution, unless ImageResolution is sent.
  • 16-bit depth as soon as ColorSpace=gray, monochrome or a TransparentColor is sent; rgb and truecolors give the default file.

Limits

  • One PSB per request; one page out.
  • Requests up to 10 MB on the Free plan or 100 MB on paid plans, all files and fields together.
  • Up to 100,000,000 pixels after flattening, or 413.
  • Resize targets from 1 to 20,000 px per side.
  • 120 seconds per conversion, then 504.
  • Untested: type layers, smart objects and layer effects in PSB files.

Where teams use it

16-bit masters for prepress

When large print work is finished in 16 bits, a flat 16-bit TIFF hands that depth to a RIP or layout tool that does not read PSB, without rounding to 8 bits.

Archiving the final state of a large document

Store the flattened result of each approved version. Uncompressed strips need no decoder for a compression scheme, and the values are exactly what the layers produce.

Questions

Does the TIFF keep 16 bits per channel?

Yes. The sample PSB is 16-bit and so is the TIFF, with values identical to the 16-bit PNG route. Only ColorSpace=gray or monochrome and TransparentColor reduce it to 8 bits.

Can the TIFF be compressed?

No option for it exists. On this route ImageQuality is ignored without an error (50 gave the same 295,122 bytes), because ConvertAPI documents no options for PSB to TIFF.

Why is the TIFF bigger than my PSB?

The PSB stores its layers compressed; the TIFF holds raw strips. 384 × 128 pixels × 3 channels × 2 bytes is 294,912 bytes of pixel data, plus the header.

Convert your first PSB file in a minute.