# Imports and exports (/docs/library/imports)

**Import** adds or updates many files from a CSV: Excel, Numbers and Google Sheets all save one. A row is a file: a URL to fetch, or the name or id of a file already in the library, whose details it updates. Nothing changes until you run the import. Importing takes an admin, developer or editor role in the Space.

## The template and the export [#the-template-and-the-export]

- **Download the template**: every column the import reads, in the Space's languages, with an example row.
- **Export all files**: every file of the Space in the same columns. Edit details in a spreadsheet and import it back to change them in bulk.

## Columns [#columns]

| Column               | What it holds                                                                                                                |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `id`                 | A file's id, to update that file                                                                                             |
| `file`               | An `https` URL to fetch a new file from, or the name of one file already here, to update it                                  |
| `folder`             | A folder path, `Campaigns/Summer`; folders that don't exist are made                                                         |
| `tags`               | Comma separated; added to the file's tags                                                                                    |
| `private`            | `true` or `false` (`yes`/`no` and `1`/`0` work too): makes the file [private](/docs/library/details#private-files) or public |
| `focal_x`, `focal_y` | The [focal point](/docs/library/details#focal-point), both from 0 to 1                                                       |
| `title.en`, …        | The title, a column per language of the Space                                                                                |
| `alt.en`, …          | The alt text, a column per language of the Space                                                                             |

An empty cell changes nothing: it never clears a title or a tag.

## Running an import [#running-an-import]

**New import** walks through four steps: **Get the CSV**, **Add files**, **Check** and **Run**.

1. Drop or choose the **CSV file**. It's read in your browser, so a file of tens of thousands of rows is fine. Commas and semicolons both work, with or without a byte order mark. Its row shows how many rows and columns it has and which languages it fills; **Replace** picks another.
2. **Files to match by name** (optional): drop files here and they're uploaded first, so rows can name them by file name.
3. **Which column is which**: columns named as in the template are matched already. Choose the column for the rest, or leave it out. The mapping is saved for the next CSV with the same columns.
4. **Check** shows what the import will do, row by row: Add, Update, or Skip and Error with the reason. Nothing has changed yet.
5. **Run import**. It runs in the background, a few rows at a time; you can leave the page.

**Imports** lists every import: when and by whom, its rows, how many files it added and updated and how many rows failed, and its status. **Report** downloads a CSV with each row's outcome.

## What a row does [#what-a-row-does]

- With an `id`: updates that file.
- With a URL in `file`: fetches a new file. Only `https` URLs on public hosts, at most 50 MB, and the bytes must be the type the URL claims. Without a `folder`, the Space's [upload rules](/docs/library/rules) sort it.
- With a name in `file`: updates the one file of that name. A name that no file or several files have is skipped: give the id instead.

Titles and alt text are set per language, leaving the other languages alone. A row that fails while running is marked failed in the report; the rest carry on.
