File Transform Node
Converts files that arrive in the payload into something the rest of the flow can actually read: a PDF into text, a CSV into JSON, an image into a smaller image. It is the node that sits between “someone attached a document” and any node that expects data.
Operation
| Value | In the panel | What it does |
|---|---|---|
| auto | Automatic | Looks at what arrived and applies the matching transformation |
| pdfToText | PDF → Text | Extracts the text of a PDF |
| csvToJson | CSV → JSON | Parses a CSV into JSON data |
| imageResize | Image Resize | Resizes to target dimensions |
| imageCompress | Image Compress | Compresses with quality control |
The panel only shows the settings the chosen operation actually uses — each section carries a badge saying which operations it belongs to. In auto the sections stay visible, because the operation is not known until an event arrives.
Source field
Which file to work on. Left empty it auto-detects from the payload, which is the normal case: an attachment from a trigger, or a file a previous node produced. Fill it in when the payload carries more than one file and you mean a particular one.
PDF → Text
One switch: Beautify extracted text. PDF extraction produces the words in the order the file stores them, which for a two-column layout or a table is rarely the order a human reads. Beautify tidies that up. Turn it off when you want the rawest possible text — for a checksum, or when a downstream parser expects the original spacing.
CSV → JSON
- Delimiter — the character that separates columns. Change it for the semicolon CSVs that European spreadsheets produce.
- First row is header — on, each row becomes an object keyed by the header names. Off, rows are plain arrays. Almost always you want it on: it is what lets the rest of the flow say
{{payload.rows.0.email}}instead of counting columns. - Strip ANSI escape codes — for CSVs that came out of a terminal and carry colour codes. They are invisible in a viewer and they poison every value they touch.
Images
Resize
Width and height in pixels. Leaving one empty keeps the aspect ratio from the other.
Output — shared by resize and compress
- Format — JPEG, PNG or WebP.
- Quality — 1 to 100.
- Strip metadata — drops EXIF. Worth knowing that EXIF is where the GPS coordinates of a phone photo live, so stripping is the privacy-preserving default for anything a customer uploaded.
- Progressive loading — the image renders blurry-first instead of top-down. Nice on slow connections, meaningless for an image nobody looks at.
Compression — compress only
- MozJPEG encoder — smaller JPEGs for the same quality, at more CPU.
- Lossless compression — no pixel is changed. Bigger files, exact image.
- CPU effort — 0 to 6. Higher is slower and smaller.
- Compression level — 0 to 9. Same trade, different knob.
Post-processing
Delete source file after processing removes the original once the transformation succeeds. It is the setting that keeps a flow from filling your storage with PDFs whose text you already extracted and no longer need.
What it unblocks
- Documents into a Vector Store. The store takes PDFs directly, but a DOCX or an XLSX does not — convert first. See Vector Stores.
- An attached CSV into rows. CSV to JSON, then a Loop, and each row becomes an event.
- User uploads into something postable. Resize and strip metadata before a Social Media node sends it anywhere.