File Types
Supported
Section titled “Supported”| Type | Behavior |
|---|---|
Markdown (.md) | First-class. Synced, indexed, embedded, rendered everywhere. |
| Frontmatter | YAML at top of .md. Preserved exactly. Tags + key/value rendered separately. |
| Wikilinks | [[Note Title]] resolved against vault. Backlinks tracked. |
| Embeds | ![[image.png]] and ![[Note Title]] (block embed) rendered inline. |
| Images | .png, .jpg, .jpeg, .gif, .webp, .svg — stored as attachments, referenced by notes. |
| PDFs | Stored as attachments. Inline preview in web app. |
Canvas (.canvas) | Obsidian’s spatial-canvas JSON — synced as-is, renders in Obsidian. The web app does not render canvases today (no canvas viewer is wired); it shows the file as a markdown/attachment surface. |
| Audio | .mp3, .wav, .m4a — stored as attachments, browser preview where the browser supports it. |
| Video | .mp4, .webm — same as audio. |
| Other attachments | Any other file type — stored, synced, downloadable. Not previewed. |
Limits
Section titled “Limits”| Limit | Default | Configurable? |
|---|---|---|
| Per-note size | 1 MiB | Yes (MAX_NOTE_SIZE_BYTES) |
| Per-attachment size | 25 MiB | Yes (MAX_ATTACHMENT_SIZE_BYTES) |
| Total vault size | Tier-dependent on cloud, none on self-host | n/a |
| Notes per vault | None | n/a |
If you hit the per-note size cap, the plugin rejects the push with a 413. The fix is to split the note. (Notes that big are usually a code dump or a copy-paste of a long article — both are better off as attachments or external links.)
What’s NOT first-class
Section titled “What’s NOT first-class”- Live collaborative editing — Engram isn’t Google Docs. Two people editing the same note live will see a conflict, not a live cursor.
- Excalidraw plugin output — Excalidraw stores its data in
.mdfiles with embedded JSON. Engram syncs them but the web app’s markdown viewer doesn’t render the diagrams — only Obsidian’s Excalidraw plugin does. - Dataview queries — Dataview’s plugin-specific query syntax doesn’t execute server-side. The note syncs; the query runs only inside Obsidian.
- Templater scripts — same: the file content syncs, the script is Obsidian-only.
These are plugins that operate purely inside Obsidian. Engram syncs their backing files but doesn’t replicate their runtime.
What we DO render server-side
Section titled “What we DO render server-side”The web app renders the same things Obsidian does for stock markdown: wikilinks, embeds, callouts, KaTeX, Mermaid, footnotes, GFM tables, task lists. If you’d see it in Obsidian’s reading view (without plugins), you’ll see it in the web app.