---
title: "File formats"
description: "The file formats Lookio reads, the size limit of each, how each one is read, and what to do with a format that is not supported."
canonical: "https://lookio.app/docs/platform/file-formats"
updated: "2026-10-17"
---

# File formats

Lookio picks the best reader for each format. One table decides which formats are accepted and how big a file can be, and the same table is used by the app, the API and the engine, so they never disagree.

## Accepted formats

| Format                     | Extensions                                                | Size limit | Read with              |
| -------------------------- | --------------------------------------------------------- | ---------- | ---------------------- |
| PDF, scans included        | `pdf`                                                     | 50 MB      | OCR                    |
| Images                     | `png` `jpg` `jpeg` `webp` `gif` `bmp` `tif` `tiff` `avif` | 20 MB      | OCR                    |
| PowerPoint                 | `pptx` `ppsx`                                             | 30 MB      | OCR                    |
| Word and OpenDocument text | `docx` `docm` `odt`                                       | 25 MB      | Conversion to Markdown |
| Spreadsheets               | `xlsx` `xlsm` `xls` `xlsb` `ods` `numbers`                | 25 MB      | Conversion to Markdown |
| CSV                        | `csv` `tsv`                                               | 20 MB      | Lookio's own parser    |
| Saved web pages            | `html` `htm` `xml`                                        | 8 MB       | Conversion to Markdown |
| Text                       | `txt` `md` `markdown` `mdx` `json`                        | 5 MB       | Read as is             |

The limit is per file. The extension decides the format.

## How each reader behaves

- **OCR** reads text from PDFs, including scans, from images and from slides. The text keeps page markers, so a citation can name the page.
- **Conversion to Markdown** keeps headings, lists and tables of Word, OpenDocument, spreadsheet and HTML files.
- **CSV** detects the delimiter and the encoding, so a semicolon-separated export from a European tool works.
- **Text** files are indexed as they are. Markdown headings become sections.

After an import, open the resource to read the extracted text and the list of what could not be read. See [Resources](/docs/platform/resources#read-what-was-indexed).

## Formats Lookio does not read

These are refused before anything is stored, with advice on what to do.

| Format  | What to do                                          |
| ------- | --------------------------------------------------- |
| `doc`   | Open the file in Word and save it as `docx`.        |
| `ppt`   | Save it as `pptx`, or export it as PDF.             |
| `odp`   | Export it as PDF or `pptx`.                         |
| `rtf`   | Save the document as `docx`.                        |
| `pages` | In Pages, use File, Export To, Word or PDF.         |
| `key`   | In Keynote, use File, Export To, PowerPoint or PDF. |
| `epub`  | Not supported yet. Export the book as PDF.          |
| `zip`   | Not supported yet. Add the files one by one.        |
| `heic`  | Export the photo as JPEG or PNG.                    |

Any other extension is refused as unsupported, and an empty file is refused as empty. A file over its limit is refused with its size and the limit for its format.

## Upload

In the app, drop files on the **Files** tab of **Add a resource**, or click to choose them. You can add several at once and set tags and a source for all of them. Each file becomes one resource.

Over the API, send the file's bytes as the request body to [`POST /v1/resources/file`](/docs/api/resources/upload-file) with its name in `file_name`. With the CLI, run `lookio resources add-file ./handbook.pdf`: the file is streamed from disk, never loaded in memory.

An upload that is interrupted before it finishes is refused, and nothing is created.
