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

# Supported File Formats

> Every file format MIRA can parse and inject into the reasoning context.

MIRA supports the following document formats for upload and context injection. All parsing runs in a background worker thread — the UI never freezes.

## Supported formats

| Extension | MIME type                                                                 | Notes                                                                            |
| --------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| `.pdf`    | `application/pdf`                                                         | Full text extraction via `pdf-parse`. Scanned/image-only PDFs are not supported. |
| `.docx`   | `application/vnd.openxmlformats-officedocument.wordprocessingml.document` | Parsed via `mammoth` — extracts text and table content.                          |
| `.txt`    | `text/plain`                                                              | Read directly as UTF-8 text.                                                     |
| `.md`     | `text/markdown`                                                           | Markdown syntax preserved in the raw text injected into context.                 |
| `.csv`    | `text/csv`                                                                | Parsed as structured text; headers and rows preserved.                           |
| `.json`   | `application/json`                                                        | Injected as formatted JSON string.                                               |
| `.py`     | `text/x-python`                                                           | Python source files.                                                             |
| `.js`     | `text/javascript`                                                         | JavaScript source files.                                                         |
| `.ts`     | `text/typescript`                                                         | TypeScript source files.                                                         |
| `.html`   | `text/html`                                                               | HTML source (not rendered — raw markup injected).                                |

## Size limit

The maximum file size per upload is **50 MB**. Files exceeding this limit are rejected at upload with an error message.

## Parse status

After upload, each document transitions through these states:

| Status      | Meaning                                                        |
| ----------- | -------------------------------------------------------------- |
| **Pending** | Document queued, worker not yet started                        |
| **Parsing** | Background worker is extracting and chunking text              |
| **Done**    | Parsing complete — document is available for context injection |
| **Error**   | Parsing failed (e.g. password-protected PDF, corrupted file)   |

When status is **Error**, hover over the document card to see the error message.

## What gets injected into context

When a document is active in a session, its parsed text chunks are concatenated (respecting the engine's context limit) and injected into the prompt as:

```
=== Document: filename.pdf ===
[chunked content here]
```

Multiple documents are concatenated with this separator pattern, in the order they appear in the Document Panel.

## Unsupported formats

Images (PNG, JPEG, GIF, SVG), audio, video, Excel (`.xlsx`), PowerPoint (`.pptx`), and compressed archives are not supported. For Excel files, export to CSV first.

<Tip>
  For large PDFs, only the most relevant chunks are injected to stay within the context budget. Use
  the chunking settings in **Settings → Engine** to tune chunk size and overlap.
</Tip>
