Skip to content

File Types

TypeBehavior
Markdown (.md)First-class. Synced, indexed, embedded, rendered everywhere.
FrontmatterYAML at top of .md. Preserved exactly. Tags + key/value rendered separately.
Wikilinks[[Note Title]] resolved against vault and rendered as links. (A backlinks panel isn’t shipped in the web app yet.)
Embeds![[image.png]] and ![[Note Title]] (block embed) rendered inline.
Images.png, .jpg, .jpeg, .gif, .webp, .svg (stored as attachments, referenced by notes).
PDFsStored 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 attachmentsAny other file type, stored, synced, and downloadable. Not previewed.
LimitDefaultConfigurable?
Per-note size10 MiBNo (hardcoded backend cap)
Per-attachment sizeTier-dependent on cloud (Free 10 MiB / Starter 200 MiB / Pro 500 MiB); 500 MiB ceiling on self-hostPer-tier on cloud
Total vault sizeTier-dependent on cloud, none on self-hostn/a
Notes per vaultNonen/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, and both are better off as attachments or external links.)

  • 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 .md files 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 idea: 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.

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.