Flattening is the default in most JSON-to-CSV tools because it produces analyst-friendly columns. But flattening is not always what you want. If your nested objects are opaque, such as a metadata blob with hundreds of keys you do not care about, flattening produces a sea of irrelevant columns. If your CSV is destined for re-import into a JSON-aware tool, flattening throws away structural information that downstream code needs. If your audience treats the CSV as a transport format rather than an analysis target, narrow output with JSON-encoded cells is easier to scan than wide output with hundreds of dotted columns.
The no-flatten mode in FixTools keeps top-level keys as the column set and writes nested values, both objects and arrays, as compact JSON strings in their cells. The cell content is a single line of valid JSON that any tool with a JSON parser can re-hydrate into the original structure. Excel and Google Sheets display the JSON string as opaque text, which is the right behaviour because there is no useful spreadsheet operation on raw JSON anyway. Pandas can re-parse the cell with json.loads when the analyst needs to drill into the nested data.
The CSV escaping rules apply correctly to JSON-encoded cells. Because JSON strings contain literal double quotes, every cell with JSON content gets enclosed in double quotes and every internal double quote gets doubled per RFC 4180. The result is a slightly bulkier cell but a fully spec-compliant CSV that opens cleanly in any tool. The encoded JSON inside the cell preserves Unicode characters in their natural form because the surrounding UTF-8 CSV can carry them directly, which means there is no need for the JSON escape sequences like \u00e9 to represent é.
The trade-off is that spreadsheet-side analysis of the nested data is impossible without re-parsing. If the analyst needs to filter on a field inside a nested object, they have to either re-parse the JSON in their tool of choice or go back and run the conversion again with flattening enabled. Many teams hand both versions to the analyst: the flat version for filter and pivot, the JSON-preserved version for archival and re-import. FixTools makes generating both quick because the source JSON is already pasted; you just toggle the flatten setting and re-download.