The bracket-index pattern uses headers like tags[0] and tags[1] to denote positions in an array. FixTools sees the bracket notation in the header, groups all tags[N] columns into a single tags array per row, and places each cell value at the corresponding index. Empty trailing slots are trimmed so a row that only fills tags[0] and tags[1] but leaves tags[2] empty produces a two-element array rather than a three-element array with a trailing null. This pattern works well when the array length has a known upper bound, like up to five tags or up to ten options.
For arrays of objects use a combined notation: items[0].sku, items[0].qty, items[1].sku, items[1].qty. Each items[N] entry becomes one element of the items array, and the dot-prefixed sub-fields become properties of that object. The output is items: [ { sku: ..., qty: ... }, { sku: ..., qty: ... } ]. This pattern can represent surprisingly rich structures in a flat CSV, though it gets verbose for arrays with many properties or many positions.
The delimited-value pattern uses a single column with multiple values separated by a delimiter inside one cell. A column tags with cell value apple|banana|cherry becomes the array ["apple", "banana", "cherry"] when you enable the delimiter option and specify the pipe character. This pattern is more compact than bracket-index but requires the delimiter to be a character that does not appear in any actual value. Pipe and semicolon are common choices; commas are usually avoided because they conflict with CSV field separation.
You can mix both patterns in one CSV: some columns use bracket-index for fixed-position arrays, others use delimited values for variable-length arrays. The converter detects the bracket notation in the headers and applies the delimited-value split to columns you mark for splitting. This flexibility means you can pick the right representation per column based on how the data is authored and how complex the array contents are.