Monofile picks an editor from the file's extension. This page maps the 54 extensions it recognises to the nine editors that open them, and says what happens to everything else.

## How the type is chosen

Only the name matters. Monofile reads the last dot segment of the filename, lowercases it, and looks it up. `report.final.md` is markdown, `server.test.ts` is TypeScript. The extension gives a MIME type, and the MIME type picks the editor.

So the type is a property you can change. Rename `notes.txt` to `notes.md` and it opens in the markdown editor from then on. There is no conversion step, because both are plain text.

> [!NOTE]
> Monofile treats an extension it does not recognise, or a file with no extension at all, as plain text and opens it in the WYSIWYG editor.

## The nine editors

| Editor | Opens | What you get |
|---|---|---|
| WYSIWYG | Markdown, text, unknown types | Live formatted editing, slash commands, `[[wiki-links]]`, mermaid, tables, task lists |
| Code | Code, config and data files | Syntax highlighting, minimap, bracket colouring, folding, find and replace |
| HTML | `.html`, `.htm` | A sandboxed live render of the page, with a toggle back to the source |
| Drawing | `.draw` | An Excalidraw whiteboard: shapes, arrows, freehand, text |
| Canvas | `.canvas` | A spatial board of file, note, link and group nodes joined by labelled edges |
| Slides | `.slides` | A markdown slide deck rendered as a presentation, with an inspector for editing, a presenter window and HTML or PowerPoint export. See [[Slide Decks]] |
| Attachment | `.pptx`, `.pdf` | A download card for exported decks and PDFs; the bytes live in object storage |
| Image | Images | An inline viewer |
| Video | Video | An inline player with controls and a generated poster frame |

Markdown, HTML and canvas files also have a raw toggle. Press <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd> (<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd> on Windows and Linux) to swap the rendered view for the source in the code editor, and press it again to go back.

## Every extension

| Group | Extensions | Opens in |
|---|---|---|
| Markdown and text | `.md` `.mdx` `.txt`, no extension, any unrecognised extension | WYSIWYG |
| JavaScript and TypeScript | `.js` `.jsx` `.ts` `.tsx` `.mjs` `.cjs` | Code |
| Data and config | `.json` `.yaml` `.yml` `.toml` `.xml` | Code |
| Shell | `.sh` `.bash` `.zsh` | Code |
| Stylesheets | `.css` `.scss` `.sass` `.less` | Code |
| Other languages | `.py` `.go` `.rs` `.java` `.c` `.cpp` `.h` `.hpp` `.cs` `.rb` `.php` `.swift` `.kt` `.sql` | Code |
| HTML | `.html` `.htm` | HTML |
| Drawings | `.draw` | Drawing |
| Canvas boards | `.canvas` | Canvas |
| Slide decks | `.slides` | Slides |
| Attachments | `.pptx` `.pdf` | Attachment |
| Images | `.png` `.jpg` `.jpeg` `.gif` `.webp` `.svg` `.avif` | Image |
| Video | `.mp4` `.webm` `.mov` `.mkv` `.avi` | Video |

## What actually gets stored

Monofile stores every text type as plain text, byte for byte what you see under the raw toggle. Markdown files hold markdown. `.draw` and `.canvas` files hold JSON, and `.slides` decks are plain markdown. There is no wrapper format and no export step. The API, the CLI and the editor all hand you the same bytes.

So the rest of the product applies to every text file: versions on every write, `[[wiki-links]]`, share links, agent reads and edits, diffs and reverts.

Images and video are the exception. Their bytes live in object storage and the file record carries a CDN URL instead of content, so uploading is the only way to create one.

## Limits

| Limit | Value |
|---|---|
| Large text file warning | 5 MB |
| Media upload size | 500 MB per file |
| Accepted upload types | Images and video only |
| Nodes per canvas board | 500 |

## Next steps

:::cards
- [[Markdown Files]] — Markdown files, the WYSIWYG editor, and the markdown Monofile stores.
- [[Code Files]] — Monaco-backed editing for every supported language, and what it gives you.
- [[Drawings]] — Excalidraw drawings stored as .draw files, drawn by hand or generated from mermaid.
- [[Canvas Boards]] — Spatial boards of live file nodes, notes, links, groups and labelled edges.
- [[Slide Decks]] — Markdown slide decks: write them, edit them in the inspector, present, and export to HTML or PowerPoint.
- [[HTML Files]] — HTML files with live preview, and artboard rendering on canvas.
- [[Images and Video]] — How images and video render, stream and get thumbnails, and where PDFs fit.
- [[Data Files]] — JSON, YAML, TOML, XML and friends: editing, validation and formatting, and where CSV stands.
- [[Limits]] — Sizes, counts, timeouts and rate limits in one table.
:::
