Overview
Roam Research is a note-taking tool designed for networked thought. Unlike traditional hierarchical note-taking apps, Roam uses bidirectional linking and block-level references to create a web of interconnected ideas. Every page and every bullet point (block) is addressable and linkable, enabling emergent structure rather than requiring upfront organization.
Roam Research stores data in a graph database and features an outliner interface, daily notes as the default entry point, powerful queries using Datalog, support for LaTeX, code blocks, diagrams, and a plugin/extension ecosystem via roam/js.
Getting Started
Roam opens to today’s Daily Notes page by default. This is the primary entry point for capturing thoughts and tasks throughout the day.
Core Syntax
Page References
| Syntax | Description |
|---|
[[Page Name]] | Link to a page |
#tag | Equivalent to [[tag]] |
#[[multi word tag]] | Multi-word tag reference |
[alias]([[Page Name]]) | Display alias text for a link |
Block References
| Syntax | Description |
|---|
((block-uid)) | Reference a specific block |
Ctrl+Shift+9 | Copy block reference |
{{embed: ((block-uid))}} | Embed a block (live copy) |
{{embed: [[Page Name]]}} | Embed an entire page |
Keyboard Shortcuts
| Shortcut | Action |
|---|
Ctrl+U | Search / navigate to page |
Ctrl+Shift+D | Go to Daily Notes |
Ctrl+Shift+9 | Copy block reference |
Ctrl+Enter | Toggle TODO / DONE |
Tab | Indent block |
Shift+Tab | Unindent block |
Alt+Up | Move block up |
Alt+Down | Move block down |
Ctrl+B | Bold |
Ctrl+I | Italic |
Ctrl+H | Highlight |
Ctrl+Y | Strikethrough |
Ctrl+\ | Toggle sidebar |
Shift+Click | Open page in sidebar |
/ | Slash command menu |
Text Formatting
| Syntax | Result |
|---|
**bold** | Bold text |
__italic__ | Italic text |
^^highlight^^ | Highlighted text |
~~strikethrough~~ | Strikethrough text |
`inline code` | Inline code |
$$LaTeX$$ | Rendered LaTeX math |
Block Types (Slash Commands)
| Command | Block Type |
|---|
/todo | Checkbox (TODO/DONE) |
/heading 1-3 | Headings |
/code block | Code with syntax highlighting |
/latex | LaTeX math block |
/table | Create a table |
/embed | Embed URL or block |
/date picker | Date picker widget |
/kanban | Kanban board |
/pomodoro | Pomodoro timer |
/diagram | Mermaid diagram |
Queries
Basic Queries
{{[[query]]: {and: [[topic1]] [[topic2]]}}}
{{[[query]]: {or: [[topic1]] [[topic2]]}}}
{{[[query]]: {not: [[excluded]]}}}
{{[[query]]: {and: [[project]] {not: [[completed]]}}}}
{{[[query]]: {between: [[January 1st, 2025]] [[January 31st, 2025]]}}}
Query Operators
| Operator | Description |
|---|
{and:} | All conditions must match |
{or:} | Any condition matches |
{not:} | Exclude matches |
{between:} | Date range filter |
Advanced Queries (Datalog)
{{query:
{:find [?block]
:where
[?block :block/refs ?page]
[?page :node/title "Project Alpha"]
[?block :block/refs ?tag]
[?tag :node/title "TODO"]}}}
Templates
Creating Templates
- {{[[roam/templates]]}} Meeting Notes
- **Date:**
- **Attendees:**
- **Agenda:**
-
- **Action Items:**
- {{[[TODO]]}}
- **Notes:**
-
Using Templates
Type ;; to trigger template search, select the name, and content is inserted.
- [[Book]]: The Design of Everyday Things
- Author:: [[Don Norman]]
- Rating:: 5/5
- Status:: #reading
- Date Started:: [[January 10th, 2025]]
Advanced Usage
Kanban Board
- {{[[kanban]]}}
- To Do
- Task 1
- Task 2
- In Progress
- Task 3
- Done
- Task 4
Tables
- {{[[table]]}}
- Name
- Alice
- Bob
- Role
- Engineer
- Designer
Custom CSS (roam/css page)
.roam-body .roam-app {
font-family: 'Inter', sans-serif;
}
.rm-reference-item {
border-left: 3px solid #137cbd;
padding-left: 10px;
}
roam/js (Custom Scripts)
Create a page called roam/js and add code blocks with JavaScript to extend functionality.
Graph Visualization
| Feature | Description |
|---|
| Graph Overview | Full graph of all pages and links |
| Page Graph | Connections for a specific page |
| Filter | Show/hide pages by tag |
| Node size | Proportional to number of references |
Troubleshooting
| Issue | Solution |
|---|
| Slow performance | Reduce graph size; archive old daily notes |
| Sync conflicts | Only use one device at a time; wait for sync |
| Query returning nothing | Check page name spelling (case-sensitive) |
| Block ref showing UID | Referenced block may have been deleted |
| CSS not applying | Ensure code block is on roam/css page |
| roam/js not running | Enable developer mode in settings |
| Export incomplete | Use JSON export for full graph data |
| Graph view crashes | Reduce visible nodes; filter to specific pages |