What differs from Obsidian
Three kinds of difference, kept apart because they mean different things: not yet, deliberately different, and not ever.
If you are deciding whether Scoria can be your daily editor, this is the page to read.
Not yet
Things Obsidian does that Scoria intends to do and does not.
Rendering
| Math | $x$ and $$x$$ are parsed but not typeset — you see the TeX source. In Live Preview the dollars are hidden and the source is centred in the accent color |
| HTML in notes | Parsed, shown as literal text |
| Remote images |  does not load. Local images do |
| Mermaid diagrams | Not rendered |
| PDF viewing and export | PDFs are recognized as a file kind; there is no viewer and no export |
| Audio and video players | Recognized as file kinds; no player |
| Heading folding | Headings do not collapse |
| Code block copy buttons | Select and copy |
| Toggling a task in reading view | Checkboxes render but are inert there. They toggle in Live Preview |
Views
| Canvas | The JSON Canvas 1.0 format is implemented and round-trips; there is no canvas view |
| Bases | The Bases YAML format is implemented and round-trips; there is no base view |
| Tabs and split panes | One note at a time, with back and forward history |
| Popout windows | — |
| Multiple vaults in one window | Run Scoria once per vault |
| Local graph depth beyond 1, arrows, timelapse, screenshot export | See the graph |
| Local graph as a side pane | The graph is a full view |
Editing
| Table cell editing | A table is a widget in Live Preview; edit the Markdown as text |
| Properties editor | Frontmatter is YAML text |
| Autocompletion | No suggestions when you type [[, # or ![[ |
| Auto-pairing | autoPairBrackets and autoPairMarkdown are read, not acted on |
| Bold/italic toggles | Ctrl + B and Ctrl + I are registered ids with no behavior — type the asterisks |
| Templates, daily notes, file recovery | — |
| Vim mode | vimMode is read, not implemented |
| Line numbers, indent guides, inline title, right-to-left | Read and shown in Settings, not acted on |
| Spellcheck | — |
Ctrl + hover page previews | — |
Files and settings
| Writing settings | Settings is read-only. Change settings in Obsidian or edit the JSON |
Writing graph.json | Graph forces and filters are read, not written back |
| Drag and drop in Files | Use file-explorer:move-file |
| Inline title editing | Use F2 |
| Pasting or dropping attachments | Put the file in the folder yourself |
| System trash on Windows and macOS | Implemented on Linux (freedesktop trash with a .trashinfo record); elsewhere it falls back to the vault's .trash/ |
Themes (cssTheme) | Base theme, accent color and fonts are honored; a CSS theme is not. Tier 3 |
| Workspace layout | workspace.json is read but not applied; Scoria opens its own default layout and never writes the file |
| Search result sorting, copying, collapsing | See search |
| Vault-wide search and replace | Replace works within one note |
Markdown edge cases
Two of the 1,009 corpus notes do not match Obsidian's output, on three constructs: nested
delimiter runs such as ****a****, ==== four ==x===y==, and a wikilink inside Markdown
link text (which Obsidian splits the link on). See compatibility.
Deliberately different
Places where Scoria does not copy Obsidian, on purpose.
Frontmatter links are rewritten in place. When a rename changes a link in your YAML,
Obsidian re-serialises the whole frontmatter block — which can turn aliases: [Bee] into a
block list, changing bytes you did not touch. Scoria replaces the link text and leaves every
other byte alone. This is a difference in Scoria's favor and it is not going to be
"fixed".
Settings is read-only. Not an omission so much as a sequencing choice: Obsidian rewrites an entire settings file on every change, and doing that without dropping keys Scoria does not recognize is exactly the kind of thing the round-trip gate exists to guarantee. Writing settings comes after that gate, not before it.
The command palette lists only runnable commands. This matches how Obsidian hides a command whose check callback fails, but the effect is more visible here because more commands are unimplemented. The Hotkeys tab still lists all 244 ids so your bindings are visible.
No window-layout restore. Scoria opens its own three-pane layout every time, which is also why it starts instantly.
The default font is Liberation Sans. Not a taste decision: the pinned GPUI cannot select
weights from a variable font, so with a single-file variable font nothing renders bold.
Liberation Sans ships static Bold faces. Your appearance.json fonts override it.
Not ever
Obsidian's community plugins will not run in Scoria. They are JavaScript against an Electron app's API, with Node and DOM access. Scoria is a native binary with neither. Embedding a JavaScript runtime and a DOM to host them would rebuild the thing whose absence is the entire point of the project.
What is planned instead is a native plugin API of Scoria's own (tier 4, the last phase).
Your community-plugins.json and plugin manifests are read and listed in Settings, so you can
see what your vault has — they are simply not executed.
Obsidian Sync, Publish and the commercial services are Obsidian's products, not file formats. Scoria has nothing to do with them. Use any file-level sync — git, Syncthing, Dropbox, or Obsidian Sync itself: they all move files, and files are all Scoria needs.
Keeping this page honest
This list is maintained against docs/scoria/Development.md in the repository, which carries
the per-item status and the gate notes. If you find something missing from it — a difference
you hit that is not written here — that is worth
reporting in its own right.
Next
- Obsidian compatibility — the tiers and the numbers.
- Troubleshooting