Skip to content

Supported File Formats

FileBender supports CSV, Excel (XLSX), and JSON files as both inputs and outputs. Each format has its own configuration options. This page documents every option, its default value, and format-specific behavior.

Parsed with PapaParse. Supports streaming, so large files don’t need to fit in memory all at once.

OptionTypeDefaultDescription
delimiterstring (1 char),Column separator character. Common alternatives: ;, \t (tab), |.
hasHeaderbooleantrueWhen enabled, the first row is treated as column names. When disabled, columns are named Column 1, Column 2, etc.
skipEmptyLinesbooleantrueSkip rows where every field is empty.

Quoting rules. Fields that contain the delimiter, a newline, or a double-quote are expected to be wrapped in double quotes ("). A literal double-quote inside a quoted field is escaped by doubling it (""). This follows RFC 4180.

Encoding. Files are read as UTF-8. Non-UTF-8 files may produce garbled text in the preview and output.

OptionTypeDefaultDescription
delimiterstring (1 char),Column separator character in the generated file.
includeHeaderbooleantrueWrite column names as the first row.
lineEnding"LF" | "CRLF""LF"Line ending style. Use CRLF for Windows compatibility.

Tier availability. CSV output is available on all tiers (Free and above).

Parsed with SheetJS. Requires the full file in memory (not streamed), so very large workbooks may be slower to process.

OptionTypeDefaultDescription
sheetNamestring(none)Name of the sheet to read. Takes precedence over sheetIndex.
sheetIndexinteger(none)Zero-based index of the sheet to read. Ignored if sheetName is set.
hasHeaderbooleantrueTreat the first row (after skipped rows) as column names.
skipRowsinteger0Number of rows to skip from the top of the sheet before reading data. Useful when a workbook has title rows above the actual table.

When neither sheetName nor sheetIndex is provided, the first sheet in the workbook is used.

Supported cell types. Text, numbers, booleans, and dates. Formulas are evaluated by SheetJS and the result value is read. Merged cells are expanded to their constituent cells.

OptionTypeDefaultDescription
filenamestringoutput.xlsxName of the generated file.
sheetNamestringSheet1Name of the sheet inside the workbook.

Tier availability. XLSX output requires Starter tier or above. Free-tier flows can read XLSX files but cannot write them.

OptionTypeDefaultDescription
rootPathstring"" (root)Dot-separated path to the array of objects within the JSON structure. For example, data.results reads from {"data": {"results": [...]}}. Leave empty when the top-level value is already an array.
flattenNestedbooleantrueFlatten nested objects into dot-separated column names (e.g., address.city). Maximum nesting depth: 5 levels.

Supported shapes. The input expects either a JSON array of objects ([{...}, {...}]) or newline-delimited JSON (NDJSON, one object per line). When rootPath is set, the value at that path must be an array of objects.

Header derivation. Column names are derived from the union of all object keys across every row. Rows missing a key get a null value for that column.

OptionTypeDefaultDescription
format"json_array" | "ndjson""json_array"Output shape. json_array writes a single JSON array. ndjson writes one JSON object per line (newline-delimited).
prettyPrintbooleanfalseIndent the output with 2-space indentation. Only applies to json_array format.
unflattenNestedbooleanfalseReverse dot-separated column names back into nested objects (e.g., address.city becomes {"address": {"city": ...}}). Maximum depth: 5 levels.

Tier availability. JSON output is available on all tiers (Free and above).

FormatInputOutput
CSVAll tiersAll tiers
XLSXAll tiersStarter+
JSONAll tiersAll tiers

See Row Limits and Tiers for the full tier comparison.