> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textql.com/llms.txt
> Use this file to discover all available pages before exploring further.

# File Upload

> What you can upload into a Thread or Playbook, and the size limits that apply

Attach a file to a message in a Thread or drop one onto a Playbook, and Ana can read it, query it, or use it as the input to an analysis — no separate import step. Threads and Playbooks upload files through the same mechanism, so what you can attach and how it's handled is identical in both.

## Supported File Types

Ana classifies every upload into one of four categories. A file with no extension, or an extension not listed below, is rejected.

| Category                  | Extensions                                                                                                 | Notes                                                                                                              |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Images**                | `.png` `.jpg` `.jpeg` `.gif` `.webp` `.heic` `.heif`                                                       | Read by Ana's vision pipeline. HEIC/HEIF (the default format for iPhone photos) is converted to PNG automatically. |
| **Tabular / Spreadsheet** | `.csv` `.tsv` `.xlsx` `.xls` `.parquet` `.ods`                                                             | Loaded as a dataset Ana can query. CSV and TSV stay editable as plain text; the rest are treated as binary.        |
| **Documents**             | `.pdf` `.pptx` `.pptm` `.docx` `.docm`                                                                     | PDF is read natively. PowerPoint and Word files are read inside the sandbox (via `python-pptx` / `python-docx`).   |
| **Text / Code**           | `.json` `.xml` `.yaml` `.md` `.sql` `.tql` `.geojson`, and roughly 60 other plain-text and code extensions | Read directly as text.                                                                                             |

## Size Limits

* **Per file, at upload time:** There's no fixed file-size ceiling on the upload itself when attaching directly in the TextQL UI — bounded in practice only by your own upload speed and browser stability. (The separate public API has its own stricter limit — see the note below.)
* **Tabular files (CSV, TSV, etc.):** Keep under **5 MB** — larger files upload fine but fail with a "file too large" error when Ana tries to read them.
* **PDFs** are capped by page count rather than file size, and the cap depends on the model you're chatting with: **100 pages** for most Claude models, **30 pages** for a smaller subset. A PDF over its model's page limit is rejected before upload with a message telling you the limit.
* **Per session:** There's no aggregate cap on total bytes uploaded across a single Thread or Playbook — each file is uploaded and processed independently.

<Note>
  These are the limits for uploading directly in the TextQL UI. If you're attaching files through the public API instead, that path enforces its own, stricter limits: 50 MB per file and 10 files per request.
</Note>

## Turning File Upload Off

Admins can disable file upload for the whole organization from **Settings → Features**. When it's off, the attach control disappears from both the Thread composer and Playbook file drop for every user in the org — there's no per-user or per-role override.

## Limitations

* An unrecognized or missing file extension is rejected outright — there's no fallback "treat as text" behavior for arbitrary binary files.
* Beyond the 5 MB content-load cap above, a tabular file over **10 MB** isn't copied into the sandbox for direct reading (e.g. via a Python cell) — Ana still has the processed dataset, just not the original raw file, and previews are additionally subject to their own row limits.
* PDF, PowerPoint, and Word support depends on the file being well-formed; corrupted or password-protected files will fail to process even though the upload succeeds.
