# Upload a file

> Turn a CSV, Excel, JSON or Parquet file into a table, or a table's next version.

Drop a file anywhere in the rho app, or choose **Upload**. rho reads CSV, TSV, Excel (XLSX), JSON, NDJSON and Parquet, up to 2 GB.

1. **rho reads it.** It works out each column's type (numbers, dates, decimal commas), the delimiter and the encoding.
2. **You see what it made of the file**: each column with the type rho read, and the first rows. Nothing is written yet.
3. **You say where it goes.** rho suggests a path from the file's name, in the folder you were in.
   - A new path makes a new table.
   - An existing table's path makes this file its next version. Choose how: **replace** its rows, **add** these rows, or **update rows by a key**. Columns that are new, or of another type than the table's, are marked before you write.
4. **Write it.** Add a message for the history if you like.

A file dropped on a table's page, or chosen with **Upload a new version** in its **⋯** menu, goes to that table as its next version.

Since every write is a version, a wrong upload is undone by restoring the version before it.

Agents load files with `import_table`, from a URL, so the data never passes through them.