Firebase Realtime Database stores data as a giant JSON tree. The import flow accepts a JSON file where the top-level structure is an object whose keys are the unique IDs of your records and whose values are the record objects themselves. This shape lets the import engine merge into existing data without collisions. A flat array would not work because there are no keys to merge by. FixTools produces this keyed-object shape when you select a column from your CSV to use as the key. Pick the ID column, click Convert, and the output is an object with that column dropped out of each value (since it lives in the key) and assigned as the key itself.
Firestore organises data into collections of documents. Bulk import is typically done through an admin SDK script rather than a UI file upload. The script iterates a JSON array of document objects and calls set or add for each. The standard JSON array shape from FixTools works perfectly for this pattern: each element becomes one document, and the script can optionally use a particular field as the document ID via set(docId, data). Type inference produces real numbers and booleans, which matter for Firestore because the field types affect indexing and querying behaviour.
For both Realtime Database and Firestore, nested object structures are common because Firebase encourages denormalised data shapes. The dot-notation headers feature in FixTools makes building nested records from flat CSV rows straightforward. A CSV with headers like name, address.city, address.zip, contact.email produces JSON records with nested address and contact objects in the output, ready to import directly without further manipulation. This avoids the need to write transformation code between the CSV source and the Firebase import step.
Privacy considerations apply strongly to Firebase imports because the data is usually customer-facing. Uploading customer records to a third-party converter before importing to Firebase undoes the privacy posture you set up for the database itself. FixTools converts in the browser with no upload, so the data path is CSV in your browser, JSON in your browser, then directly to Firebase via the admin SDK or import UI. No intermediate cloud service touches the data.