# File formats

MAIA reads spreadsheets and map files on upload, reads a PDF attached to chat, and writes CSV and Excel on export. This page lists each format, what it holds, and the rules that apply to it.

Updated: 2026-09-30. Source: https://maia-analytics.com/docs/reference/file-formats

## Spreadsheets MAIA reads

| Format | Extension | Notes |
| --- | --- | --- |
| CSV | `.csv` | Location comes from an address column, latitude and longitude columns, or a WKT or GeoJSON column |
| TSV | `.tsv`, `.tab` | As CSV |
| Excel | `.xlsx`, `.xlsm` | As CSV |
| Parquet | `.parquet` | As CSV |

## Map files MAIA reads

| Format | Extension | Notes |
| --- | --- | --- |
| GeoJSON | `.geojson`, `.json` |  |
| KML | `.kml` |  |
| KMZ | `.kmz` | A zipped KML. The size after unpacking counts |
| GeoPackage | `.gpkg` |  |
| Shapefile | `.zip` | One zip that holds the `.prj`. The size after unpacking counts |

## Rules on upload

- **A Shapefile is one zip that holds its `.prj`.** Loose files are rejected, and so is a zip with no `.prj`, since MAIA cannot know the coordinate system.
- **Any coordinate system works if the file names it.** MAIA reprojects every shape to WGS84.
- **One file per upload.** To bring in two files, upload twice.
- **A file over a row limit does not fail.** MAIA offers **Import first rows**.

A valid Shapefile zip holds these four files, with one name:

```
sites.shp
sites.shx
sites.dbf
sites.prj
```

| Limit | Value |
| --- | --- |
| File size | 25 MB |
| Size after unpacking | 200 MB |
| Rows, added as a layer or a table | 10,000 |
| Rows, matched to parcels by address | 1,000 |

How MAIA classifies a file and matches its rows is on the [File upload](https://maia-analytics.com/docs/capabilities/file-upload) page.

## PDFs in chat

Where PDF attachments are turned on, you can attach a PDF to a chat message. MAIA reads it as context for the conversation. It is not imported as data.

| Limit | Value |
| --- | --- |
| File size | 10 MB |
| Encrypted PDFs | Not accepted |

## Formats MAIA writes

Export is turned on per workspace. If you do not see **Download CSV** or **Download Excel**, ask [support](mailto:support@maia-analytics.com) to turn it on.

| Format | Extension | In the app |
| --- | --- | --- |
| CSV | `.csv` | **Download CSV** from the table's options menu |
| Excel | `.xlsx` | **Download Excel** from the table's options menu |
| CSV of saved contacts | `.csv` | **Download CSV** on the project's **Contacts** page |

An export holds the layer as the table shows it, with its filters applied. A filtered view exports fewer rows than the layer holds.

| Option | What it adds |
| --- | --- |
| **Include reasoning** | A reasoning column beside each researched column |
| **Include sources** | A source column beside each researched column |
| Contact fields | The contact fields you choose, such as work email or mobile phone |

## Rules on export

| Limit | Value |
| --- | --- |
| Rows per export | 10,000 |
| Characters per cell | 32,000 |

- **MAIA does not export map formats.** There is no GeoJSON, KML, or Shapefile export.
- **Shared links carry no export.** A viewer of a shared project cannot download it. See [Sharing and publishing](https://maia-analytics.com/docs/capabilities/sharing-and-publishing).
