|
| Content | Storage | Summary |
|---|---|---|
| Markdown | .md |
Notion-like WYSIWYG editor. Edit and read in a single view. Hierarchy via subpages |
| Outliner | .out |
Dynalist-like tree editing. Tags, tasks, search |
| Database | .out (view) |
The same outline as a Notion-like table. Text / tag / date columns |
| Mindmap | .out (view) |
The same outline rendered and edited as an SVG mindmap |
Tying it all together is Notes — a folder-scoped workspace (virtual tree, cross-file search, tabs, Daily Notes, S3 sync). Markdown pages open from both the markdown editor and the outliner. Subpages open in the side panel by default, or as standalone documents in a new tab.
Every file lives in one place, and moves freely. Not just .md and .out — attach any file (PDF, Excel, images, …) to a note, and move it between the note tree, outliner nodes, and markdown documents with simple drag & drop or copy/cut/paste shortcuts. Ownership follows the move automatically, links keep working, and cross-note moves copy the assets for you — no manual file wrangling.
📝 Markdown editor (.md)
A Notion-style WYSIWYG editor. What you see is exactly what's in the file.

Editing
- Seamless live preview — Markdown renders the moment you type it. Switch to source mode anytime (
Cmd+.) - Headings, lists, task lists, quotes, horizontal rules — all standard markdown, keyboard-first
- Tables — Excel-like cell selection: click selects a cell, arrows move, Shift+arrows / drag / Shift+click select ranges, and cmd+c/x/v interoperate with spreadsheets (TSV + HTML both ways). Enter/typing edits a cell; Tab moves right (last cell appends a row). Merge/unmerge cells from the toolbar (persisted as GFM-compatible markdown with a marker comment), filter rows with the toolbar search box (display-only), resize columns by dragging cell edges, and toggle the header row on/off — all markdown stays compatible with other viewers
- Blocks inside list items — Quote and code blocks can live inside a list item's continuation lines (Shift+Enter), created via
>/``` autoformat, the palette, or shortcuts, and they survive markdown round-trips - Code blocks — Syntax highlighting for 24+ languages, expandable into a VS Code editor tab
- Inline formatting — Bold, italic, strikethrough, inline code, smart link creation
- Action palette (
Cmd+/) — Every formatting and insert action in one searchable menu
Attachments & media
- Images — Paste or drag & drop. Full-screen lightbox with pinch-zoom and pan. Max display width is configurable
- File attachments — Drop any file (PDF, Excel, …) to insert a
[📎 filename](https://github.com/raggbal/fractal/blob/HEAD/path)link. Click to open — Office files (Word / Excel / PowerPoint), PDF, HTML, images and text/code files in the built-in viewer, everything else in the OS default app. Links show a file-type icon (📕 pdf / 📘 doc / 📗 xls / 📙 ppt / 🌐 html). The link text is editable like any other link; copy/cut a fully selected link text and it travels as a link, and dragging the 📎 icon moves the link within the document or out to the notes tree - Attachments panel — Lists every image and file referenced in the document, with Open / Copy Path
PDF export
- One click to PDF — Toolbar / side-panel button (or
Fractal Note: Export to PDF) turns the current markdown into a print-ready PDF, rendered exactly like the editor (Mermaid, math, colors, checkboxes included) - Smart page breaks — Breaks before
h1/h2by default, but not before the firsth1or the firsth2right after anh1— chapters flow naturally - Your own stylesheet —
fractal.pdfStyles(array of CSS file paths) overrides the built-in print style; setfractal.pdfIncludeDefaultStyles: falseto replace it entirely. Page breaks are plain CSS (break-before), so you can disable or extend them freely - Local & dependency-free — Uses your installed Chrome/Edge headlessly; no network access during export, nothing added to the extension bundle
Export bundle — take a document out of the note
Notes keep files flat with note-relative links, so copying a single .md out by hand breaks its images and subpages. Export bundle packs everything into one portable folder:
- Right-click an outliner node (or use the side-panel button on a markdown page) → Export bundle
- The page plus its subpages (recursive), linked pages, images, and attachments are copied into a single folder, with all links rewritten to be self-contained — ready to share, publish, or drop into another tool
Diagrams & math
- Mermaid — Rendered inline; click to edit the source
- KaTeX math — Display-mode formulas re-render live; both
```mathblocks and$$...$$blocks (Typora/Obsidian compatible), CJK/Hangul-friendly rendering
Embedded draw.io
Create and edit draw.io diagrams without leaving VS Code.
- Create —
Cmd+/→ Insert Drawio Diagram generates an empty diagram and inserts it as an image at the cursor. Dragging & dropping existing.drawio.svg/.drawio.pngfiles also works - File format — Diagrams are saved as
.drawio.svg(a real SVG with draw.io's editing data embedded inside). They render as images on GitHub as-is and stay editable in any draw.io client. They're embedded in the document as ordinary![]()images, so compatibility with other markdown editors is preserved - Edit — Hover a diagram to reveal three buttons:
- Open in VS Code — Open it in a VS Code tab. With the Draw.io Integration extension (hediet.vscode-drawio) installed, the draw.io editor opens right inside that tab (recommended)
- Open in External — Open it in an external app. draw.io Desktop is preferred if installed; otherwise the OS default app is used
- Copy Path — Copy the absolute path to the clipboard
- Automatic re-render — However you edited it, the diagram in your open document redraws itself the instant you save. A seamless edit loop — just bounce between editors
Subpages
Embed markdown pages inside markdown pages, like Notion. A subpage isn't a mere link — it's owned by its parent, and that ownership follows the parent everywhere:

Cmd+/** → Add Page** (orCmd+N) — Create a child markdown page and insert a link at the cursor- Click a
.mdlink to open it in a Notion-style side-peek panel with full WYSIWYG editing, including back/forward navigation (Opt+←/Opt+→) Cmd+clickto open it as a standalone document in a new tab- Pages within pages — build hierarchies as deep as you like
- Subpages travel with their parent — copy a parent (node copy/paste, cross-note paste, "Move to Other Note") and its subpages are duplicated or moved along with it, images and attachments included, with links rewritten so nothing breaks. Delete the parent and orphaned subpages are collected by Clean Unused Files
AI-friendly: live sync of external changes
When an AI assistant (Claude Code, Cursor, Kiro, …) — or anything else — modifies the file you have open:
- Block-level DOM diffing — only the changed blocks are patched; your cursor position and in-progress edits survive
- Your edits and the AI's edits coexist safely in the same document
Cmd+L— send the selected text to the AI chat.Cmd+Shift+.opens the file in the VS Code text editor
Standalone mode
- Set Fractal Note as your **default editor for **
.mdand edit any markdown on your machine — no note workspace required - For standalone files you can choose where images and attachments are saved (stored in a hidden
.fractal.jsonfile next to the markdown — the markdown body itself is never touched, so other editors never see it)
🌲 Outliner (.out)
A Dynalist-like outliner. The same data from three perspectives.
Outline view

Database view

Mindmap view

Three view modes
Switch with the view toggle:
- Outliner view — Classic bullet tree. Unlimited nesting, collapse/expand, subtree scoping with breadcrumbs
- Database view — Your outline as a Notion-like database (tree table). Text and tag (multi-select) columns, plus optional Date / Date & Time columns with a native date picker
- Mindmap mode — The same
.outrendered as an SVG mindmap. Four layouts (radial / left / right / balanced), keyboard-centric editing (navigation, sibling/child insert, swap, type-to-edit, copy/cut/paste with descendants), node colors and shapes, boundaries (groups), relationship lines — plus image attach/delete and drag & drop of 📄/📎 nodes to and from the note tree and markdown editors
Organize with tags & search
#tagand@tagare auto-highlighted; click to filter instantly- Pinned tags — Turn frequent tags into one-click filters
- Dynalist-compatible search — AND, OR, NOT,
"phrases",#tag,in:title,has:children,is:page,is:task— with smooth incremental filtering
Attach anything
- Markdown subpages — Turn any bullet into a page (
@page) and edit it in the side panel's full WYSIWYG editor. Manage hierarchical markdown like a Notion database - Images — Paste with
Cmd+V. Thumbnails appear under the node; drag to reorder, double-click to zoom - Files — Attach any file type to a node. 📎 nodes open Office / PDF / HTML / images / text in the built-in viewer, everything else in the OS default app
.md** import** — Import Notion / Obsidian exports as page nodes. Images are copied automatically and paths rewritten
Tasks
- [ ]/- [x]checkboxes with rich keyboard support (Cmd+Shift+Xto toggle)- Task mode — New root nodes automatically get checkboxes
- Task filter — Hide completed subtrees with one click
- Archive to Daily Notes — Move finished tasks (with their pages, images, and files) under today's Daily Note, tagged
#TASK #DONE
Editing basics
Enter / Tab / Shift+Tab work the way you expect. Multi-select indenting, node moves (Cmd+Shift+↑/↓), subtext (Shift+Cmd+Enter), inline formatting, clickable links, navigation history (Opt+←/→), and full undo/redo. See "Key shortcuts" below for details.
🗂 Notes — where everything connects
Fractal Note organizes information into notes. Just register any folder from the activity bar.

- Structure without lock-in — Files are stored flat on disk while you organize
.out,.md, and any other files in a virtual folder/file tree with drag & drop. Your data stays plain files - Import anything — drag a .md from Finder or the VS Code Explorer (hold Shift for Explorer drops) onto the file tree to copy & register it into the note; drop any file (PDF, Excel, zip, …) to store it in the note's shared
files/folder — click to open (Office / PDF / HTML / images / text in the built-in viewer, anything else in the OS default app; on a remote VS Code server this becomes a browser download) - Files flow everywhere — drag a tree file, an outliner 📎/page node, or a markdown 📎/subpage link onto any outliner or markdown editor (main pane, side panel, or tree item) — or back into the tree. Within a note the physical file never moves (only its owner changes); across notes the file is copied to the destination and the source copy is kept until Clean Notes collects it
- Markdown moves carry their assets — when a markdown file travels across notes or between the tree and a linked folder (drag & drop or Duplicate), its images, 📎 attachments, and subpage markdowns (recursively) are copied along with it, and the layout converts automatically: a note's flat shared
images//files/⇄images//files/folders next to the md in a linked folder. Safety rule: only files inside the source's own territory are followed — a note's asset folders, or anywhere inside the linked folder for moves out of a folder link. References that escape it (absolute paths or../beyond the boundary) are never copied; the link text is left untouched. This stops a crafted markdown from smuggling arbitrary local files (SSH keys, password files, …) into a note, where they would otherwise ride the S3 sync. Plain clipboard copy & paste of markdown text is unaffected - Link local folders — register any folder on disk as a 🔗 folder link (
+linkfd) and browse it in a built-in folder view: filter by name, create / rename / duplicate / delete (delete always via the OS trash), open markdown in the side panel and viewer-supported files (Office / PDF / HTML / images / text) in the built-in viewer — a single click on a file's 📄/📎 icon opens it too. The view live-reloads when files change on disk (builds, AI edits, …), and a 👁 header toggle shows hidden dotfiles when you need them (persisted per folder link; note that this can reveal sensitive folders like.gitor.ssh). Drag files between the folder view, the tree, and side-panel markdown — these drops move the file, so it lives in exactly one place — when a markdown moves out, its accompanied images / attachments / subpages are cleaned up from the linked folder too (only when every copy succeeded, and never while another markdown in the folder still references them). Where the OS trash is unavailable (e.g. on a remote VS Code server) the verified-copied original is removed directly. The linked folder itself stays a plain reference: it's never synced, cleaned, or touched outside your explicit actions - Full-text search — Search across every outline, subpage, and standalone markdown file in the note — and inside attached PDF / Word / Excel / PowerPoint files, plus any text-based attachment (HTML, JSON, CSV, source code, …) — with page / slide / sheet-cell hit locations and backlinks to the referencing nodes. Streaming results, click to jump
- Filter by file type — start the query with
ext:to narrow the search:ext:pdf invoicesearches only PDFs,ext:pdf,docx reportcovers both,ext:md/ext:outlimit to markdown or outlines. Case and a leading dot don't matter (ext:PDF=ext:.pdf); putext:anywhere else in the query and it's treated as literal text. The same syntax works in thefractal-searchCLI (combines with--scope) - Tabs — Switch between outliners and markdown files inside a note with browser-like tabs. Tab names follow the title / H1, and you can right-click an md tab to open it as a VS Code tab as well
- Recent — Jump back to a recently opened file with one click — markdowns and outlines, plus linked folders (🔗) and viewer/attachment files (📎)
- Daily Notes — One-click daily journal. Auto-creates a year/month/day hierarchy, with
<>navigation and a calendar picker - In-app links — Copy a link to any node or page (right-click a node / tree item → Copy In-App Link, or 🔗 in the side-panel header) and paste it anywhere in Fractal Note. Click to jump
- Cross-note copy & paste with assets — Copy markdown containing images, 📎 attachments, or subpage links and paste it into another note (md or outliner): the linked files are duplicated into the destination note and links keep working. Pasting into an outliner turns whole-line links into proper attachment / image / page nodes
- Housekeeping — "Clean Unused Files" finds orphaned images, pages, and attachments and moves them to the trash. "Move to Other Note" relocates pages together with their assets
📄 Built-in file viewer (Office, PDF, HTML, images & text)
Click an attached file anywhere — in the file tree, on an outliner 📎 node, or from a markdown 📎 link — and it opens right inside Fractal Note:
- Word / Excel / PowerPoint — read
.docx/.xlsx/.pptxwithout leaving the editor, with zero external dependencies. Word renders page-width cards with tables, lists, images and ruby; Excel is a real spreadsheet grid (formats, colors, merged cells, sheet tabs, comments, hyperlinks — smooth even at 100k rows); PowerPoint shows slides with shapes, theme colors, auto-fit text, real list numbering and vertical Japanese text — vector EMF images (the format Office uses for logos) render as crisp SVG in both Word and PowerPoint - Plus PDF, HTML, images and text/code — PDFs render locally with smooth selection (works on older-Chromium VS Code forks too); HTML is static by default (scripts only after explicit opt-in); images pan & zoom (incl. safe SVG display); 30+ text/code formats (.txt/.json/.js/.py/…) open read-only with line numbers
- Zoom & pan everywhere — trackpad pinch (Ctrl/Cmd+scroll) zooms the content at the cursor in every viewer — without zooming the whole VS Code window — with [−][+] and a ⟲ reset button on all kinds (PDF's reset also re-enables width auto-fit). HTML zooms like the browser's own Cmd± (pages re-flow to fill the pane), and zoomed PDFs pan by dragging (text selection still works; middle-button drag always pans)
- Three surfaces — the note's main pane (as a regular tab), the side panel next to what you're writing, or a standalone VS Code tab
- Find inside any file — Cmd/Ctrl+F (or 🔍): highlights, match count, next/previous. Clicking a full-text-search hit opens the file pre-filled and jumps to the hit — PDFs land on the right page, Excel jumps to the exact sheet & cell, PowerPoint to the slide
- Same feel as the md editor — the familiar icon toolbar (copy path / in-app link / export / open in OS app), and Esc closes the side panel with the cursor back exactly where you left off
- Safe & fast — instant display, everything renders locally; OOXML parsing is hardened against zip bombs and malformed files, and password-protected / oversized files degrade to a clear message
☁️ S3 backup & restore
With an AWS account, you can sync your notes to S3:
- Whole-note sync (Tools tab) — Bidirectional newer-wins sync of the entire note folder, or upload-all / download-all / clean rebuild
- Per-file, mtime-based newer-wins resolution: your local edits are never overwritten by older S3 content
🌍 Translation
Translate a selection or the whole document with Amazon Translate, including Custom Terminology support for better accuracy.
S3 sync and translation only need AWS credentials in settings — no AWS CLI installation required. Everything else works without AWS.
🤖 AI skills — make Fractal Note your agent's notebook
Fractal Note publishes AI skills (ai_skills/) that teach AI agents the Fractal Note data model so they can search, read, and write your notes directly:
fractal-structure— Reference for the Notes / Outliner / Page data modelfractal-search— Auto-discovers notes folders, full-text search across notes — including inside attached PDF / Word / Excel / PowerPoint files (zero-install, with hit locations) — tag and task-state filters (--tag/--checked), filtering by note namefractal-edit— Add / modify / delete / move nodes, import markdown pages (single or bulk), attach images and files, add subpages and attachments to markdown files, create new outliners and markdown filesfractal-doctor— Note integrity checks (broken references, orphaned files, layout inspection; read-only)fractal-summary— Bundle an outliner or a markdown file (including subpages recursively) into a single markdown for an AI to readcollectand other converters — Ingest web pages / YouTube transcripts / arXiv papers / PDF & Office documents as Markdown
ai_skills/install.sh # install into every detected AI IDE (Claude Code / Cursor / Kiro / Antigravity)
./install-skills.sh # Claude Code only, with rules
With the skills installed, agents like Claude Code can organize research, summarize clips, and build knowledge bases by writing straight into Fractal Note — a practical Obsidian alternative with an AI-native workflow.
🌐 Chrome extension (web clipper)
Save any web page into a Fractal Note — straight from Chrome, without launching VS Code.
- Lives in
chrome-extension/in this repository (load it as an unpacked extension) - Click the icon (or
Alt+Shift+Ffor a quick clip) → the page is extracted with Mozilla Readability and converted through Fractal Note's own HTML→MD pipeline (tables, GFM, Medium / dev.to code blocks, and more) - Save to an outliner (added as a page node) or to markdown (a new md is created and a subpage link is appended to the md you picked) — both are supported
- Destination presets — Register multiple "Note + destination" pairs and mark a ★default. The popup opens with the default pre-selected, ready to save immediately
- Writes directly to disk via the File System Access API — no communication with VS Code needed
- Concurrent clips are serialized through a queue to prevent write conflicts
See chrome-extension/README.md for details.
💻 Supported OS
| OS | Status |
|---|---|
| macOS | ✅ Verified (development and testing happen on macOS) |
| Windows | ⚠️ Implemented, not guaranteed |
| Linux | ⚠️ Implemented, not guaranteed |
The Windows / Linux implementations (path handling, clipboard, launching external apps, and so on) are in place, but day-to-day verification only happens on macOS, so behavior cannot be guaranteed. If you hit a problem, please file a request in GitHub Issues — I'll get to it when time allows. Reproduction steps plus your OS / VS Code version are much appreciated.
📦 Installation
VS Code Marketplace
- Open Extensions (
Ctrl+Shift+X) - Search "Fractal Note" → Install
Or directly: VS Code Marketplace
Open VSX (VSCodium / Gitpod / Eclipse Theia)
From VSIX
code --install-extension fractal-{version}.vsix
From source
git clone https://github.com/raggbal/fractal
cd fractal
npm install
npm run compile
# press F5 to launch in debug mode
Optional: AWS credentials (S3 sync & translation)
Core features work without AWS. To use S3 sync and Amazon Translate, just configure credentials in VS Code settings — the extension talks to AWS directly (built-in AWS SDK; no CLI installation needed). Note: connections through an HTTP(S) proxy are not currently supported for these features:
- S3 sync:
fractal.s3AccessKeyId,fractal.s3SecretAccessKey,fractal.s3Region - Translation:
fractal.transAccessKeyId,fractal.transSecretAccessKey,fractal.transRegion
🚀 Getting started
1. Create your first note (recommended)
- Click the Fractal Note icon in the activity bar (left edge of VS Code)
- Click + Add Notes Folder and pick (or create) an empty folder — say
~/notes/work. That folder is now a note - Click the note name — the three-pane UI opens: file tree (left) / editor (center) / outline & side panel (right)
2. Add content to the note
Everything is created from the file tree on the left — right-click it (or a folder inside it):
- New Outline here — creates an outliner (
.out). Start typing; Enter adds a node, Tab indents - New Markdown here — creates a markdown page and opens it in the WYSIWYG editor
- New Subfolder — folders are virtual (the files on disk stay flat), so reorganize freely
- Or just drag files in — drop a
.mdfrom Finder / VS Code Explorer (hold Shift for Explorer) to import it; drop a PDF, Excel, or any other file to attach it
From an outliner, type @page at the end of a node (or press Cmd+Enter) to hang a markdown page off that node — this is the core Fractal Note workflow: outline the structure, write the details in pages.
3. Find it again
Cmd+P-style cross-note search lives at the top of the file tree — it matches node text, markdown bodies, and the contents of attached PDF / Word / Excel / PowerPoint files- Click any
#tagto filter; pin frequent tags for one-click filtering - Tabs and navigation history (
Opt+←/→) work like a browser
Using the markdown editor standalone (without Notes)
Right-click any .md → "Open with Fractal Note". To make it the default: right-click → Open With… → Configure default editor → Fractal Note
Learning the ropes
- Long-press cmd (Ctrl on Windows) — a shortcut overlay (HUD) pops up for the current view (Markdown / Outliner / Mindmap / Database). Release to dismiss. This is the fastest way to discover features
Cmd+/in the markdown editor opens the action palette — every formatting and insert action, searchable- The full shortcut list is below
⌨️ Key shortcuts
A quick reference. (Mac notation; almost every shortcut also works with Ctrl instead of Cmd, and Windows/Linux uses Ctrl.)
Markdown editor
| Shortcut | Action |
|---|---|
Cmd+/ |
Action palette (searchable menu of every action) |
Cmd+N |
Add Page (create a subpage and insert a link) |
Cmd+. |
Toggle source mode |
Cmd+Shift+. |
Open in the VS Code text editor |
Cmd+\ |
Toggle sidebar (outline / file panel) |
Cmd+L |
Send selected text to the AI chat |
Cmd+B / Cmd+I / Cmd+Shift+S |
Bold / italic / strikethrough |
Cmd+` / Cmd+K |
Inline code / insert link |
Cmd+1…Cmd+6 / Cmd+0 |
Heading 1–6 / back to paragraph |
Cmd+T / Cmd+Shift+I |
Insert table / insert image |
Cmd+F / Cmd+H |
Find / replace |
Cmd+S / Cmd+Z / Cmd+Shift+Z |
Save / undo / redo |
Tab / Shift+Tab |
Tables: move between cells (Tab on the last cell adds a row); lists: indent / outdent |
Shift+Enter |
Lists: line break within the item (continuation line) |
Opt+← / Opt+→ |
Side-panel back / forward (side panel only) |
Tables have an Excel-like select mode (click a cell to enter it):
| Shortcut | Action |
|---|---|
↑↓←→ |
Move between cells (up/down at the table edge leaves the table) |
Shift+↑↓←→ / Shift+Click / drag |
Extend a rectangular range selection |
Cmd+C / Cmd+X / Cmd+V |
Copy / cut / paste the range — interoperates with Excel & Google Sheets (TSV + HTML, merged cells reproduced) |
Enter / F2 / type |
Edit the cell (typing replaces the content) |
Enter / Tab / Esc (while editing) |
Commit and return to select / commit and move right / discard |
Delete |
Clear the contents of the selected range |
Outliner view
| Shortcut | Action |
|---|---|
Enter / Option+Enter |
New sibling node / new child node |
Shift+Enter |
Line break within the node text |
Shift+Cmd+Enter |
Open / close subtext (note) |
Tab / Shift+Tab |
Indent / outdent (multi-select supported) |
Cmd+Enter |
Open the page (creates one if missing; file attachments open in an external app) |
↑ / ↓, Shift+↑/↓ |
Move between nodes / extend multi-selection |
Cmd+Shift+↑/↓ |
Move node up / down |
← / → |
Collapse / expand (at start / end of line) |
Cmd+. |
Toggle collapse for the node |
Cmd+] / Cmd+Shift+] |
Scope in (zoom) / scope out |
Cmd+Shift+X |
Toggle checkbox (Cmd+Shift+Opt+X to remove) |
Cmd+B / Cmd+I / Cmd+E / Cmd+Shift+S |
Bold / italic / inline code / strikethrough |
Cmd+C / Cmd+X / Cmd+V |
Copy / cut / paste nodes (multi-select and image paste supported) |
Cmd+A |
Select all nodes |
Cmd+F / Cmd+H / Cmd+Shift+F |
Text search / replace / filter |
Cmd+N |
New node at the end |
Cmd+Z / Cmd+Shift+Z |
Undo / redo |
Opt+← / Opt+→ |
Navigation history back / forward |
Backspace (at line start) |
Merge with previous node / delete empty node |
Database view
The outliner column supports all of the outliner shortcuts above. In addition:
| Shortcut | Action |
|---|---|
Cmd+←/→/↑/↓ |
Move between cells (all columns) |
Tab / Shift+Tab |
Next / previous cell (text columns) |
Enter or Space |
Open the tag dropdown (tag columns) / the date picker (Date columns; clicking works too) |
↑↓ + Enter |
Select and confirm inside the dropdown |
Cmd+B / Cmd+I / Cmd+E |
Inline formatting in text columns |
Mindmap mode
| Shortcut | Action |
|---|---|
↑↓←→ |
Navigate between nodes (layout-aware spatial navigation) |
Enter / Shift+Enter |
Add next sibling / add previous sibling |
Tab |
Add child node |
Space / F2 / type any character |
Start editing (typed characters are appended as-is) |
Enter / Tab / Esc (while editing) |
Commit the edit |
Delete / Backspace |
Delete node (deletes the group when a group is selected) |
Option+↑/↓ |
Swap with sibling |
Cmd+Shift+L |
Cycle layout (radial → right → left → balanced) |
Cmd+Enter |
Open / create the page |
Cmd+Shift+X / Cmd+Shift+Option+X |
Add / toggle checkbox — remove checkbox |
Cmd+C / Cmd+X / Cmd+V |
Copy / cut the node with all descendants / paste as children of the focused node (same asset rules as the outliner) |
Cmd+V (image in clipboard) |
Attach a pasted image to the node |
Click image + Delete |
Select an attached image (accent outline) and remove it |
| Click 📄 / 📎 | Open the page / attached file (icons are also draggable to the note tree and markdown editors) |
Cmd+A / Cmd+Z |
Select all / undo |
Cmd+wheel |
Zoom (toolbar +/−/Fit also available) |
| Drag | Empty space: pan; node: re-parent (top ⅓ = previous sibling, bottom ⅓ = next sibling, middle = child) |
| Right-click | Colors & shapes, create a group (boundary), create a relationship line, add / remove checkbox |
Task Mode works in Mindmap too: click checkboxes to toggle completion, and use the header's Task Mode / Filter / Archive buttons while in Mindmap view. With the completion filter on, completed nodes disappear from the map together with their subtrees and connector lines (same shared data as the Outliner view).
Markdown syntax shortcuts
Type a markdown pattern and it converts in place: # for headings, - for lists, - [ ] for tasks, > for quotes, ``` for code blocks, **bold**, *italic*, `code`, and more.
Full markdown element reference
Block elements
| Element | Pattern | Shortcut |
|---|---|---|
| Heading 1–6 | #…###### + Space |
Cmd+1…Cmd+6 |
| Paragraph | (default) | Cmd+0 |
| Bullet list | - or * + Space |
Cmd+Shift+U |
| Numbered list | 1. + Space |
Cmd+Shift+O |
| Task list | - [ ] + Space |
Cmd+Shift+X |
| Quote | > + Space |
Cmd+Shift+Q |
| Code block | ``` + Enter (```mermaid / ```math too) |
Cmd+Shift+K |
| Table | | col1 | col2 | + Enter |
Cmd+T |
| Horizontal rule | --- + Space/Enter |
Cmd+Shift+- |
Inline elements
| Element | Pattern | Shortcut |
|---|---|---|
| Bold | **text** + Space |
Cmd+B |
| Italic | *text* + Space |
Cmd+I |
| Strikethrough | ~~text~~ + Space |
Cmd+Shift+S |
| Inline code | `text` + Space |
Cmd+` |
| Link | [text](https://github.com/raggbal/fractal/blob/HEAD/url) |
Cmd+K |
| Image |  |
Cmd+Shift+I |
🎨 Settings
| Setting | Description | Default |
|---|---|---|
fractal.theme |
Editor theme (light, dark, auto) |
auto |
fractal.fontSize |
Base font size (px) | 12 |
fractal.imageMaxWidth |
Max display width for inline images (px) | 400 |
fractal.language |
UI language (default, en, ja, zh-CN, zh-TW, ko, es, fr) |
default |
fractal.toolbarMode |
Toolbar mode (full, simple) |
simple |
fractal.resourceRoots |
Directories the editor may load images/attachments from | [] (home directory) |
fractal.showTranslateButtons |
Show translate buttons in the toolbar / side panel | false |
fractal.showOpenInTextEditor |
Show the Open in Text Editor button | true |
fractal.enableDebugLogging |
Debug logging to the browser console | false |
S3 sync (AWS)
| Setting | Description | Default |
|---|---|---|
fractal.s3AccessKeyId |
AWS Access Key ID for S3 sync | "" |
fractal.s3SecretAccessKey |
AWS Secret Access Key for S3 sync | "" |
fractal.s3Region |
AWS region for S3 sync (e.g. ap-northeast-1) |
us-east-1 |
Translation (Amazon Translate)
| Setting | Description | Default |
|---|---|---|
fractal.transAccessKeyId |
AWS Access Key ID for Amazon Translate | "" |
fractal.transSecretAccessKey |
AWS Secret Access Key for Amazon Translate | "" |
fractal.transRegion |
AWS region for Amazon Translate (e.g. ap-northeast-1) |
us-east-1 |
fractal.translateSourceLang |
Default source language | en |
fractal.translateTargetLang |
Default target language | ja |
fractal.translateTerminologyName |
Custom Terminology name registered in Amazon Translate | "" |
fractal.translateTerminologyFile |
Path to a Custom Terminology file (CSV / TMX) to register | "" |
PDF export
| Setting | Description | Default |
|---|---|---|
fractal.pdfStyles |
Additional CSS file paths applied to the exported PDF | [] |
fractal.pdfIncludeDefaultStyles |
Include the built-in print stylesheet | true |
fractal.pdfBrowserPath |
Explicit path to a Chromium-based browser executable | "" (auto-detect) |
Image and attachment destinations are fixed by convention rather than by settings (shared images/ / files/ inside a note; standalone md outside a note uses the .fractal.json sidecar).
The UI is localized in English, Japanese, Simplified/Traditional Chinese, Korean, Spanish, and French (fractal.language; default follows VS Code).
🛠️ Development
npm install # install dependencies
npm run compile # compile TypeScript + build locales + copy assets
npm run watch # watch mode
npm test # run tests (parallel Playwright suite)
vsce package --no-dependencies # package the extension
💖 Support the project
- Sponsor on GitHub — support ongoing maintenance of the project
- Star it on GitHub
- Report bugs and suggest features in Issues
- Contribute via pull requests
📄 License
MIT License — free to use in your own projects.
🙏 Acknowledgements
- Made with love for the VS Code community

