Notion Keyboard Shortcuts
Notion's blocks-based editing model means its shortcuts split between two layers: Markdown-style shortcuts that transform a line as you type (typing a hyphen and space to start a bullet list, for instance) and traditional modifier-key shortcuts for navigation and block manipulation. The Markdown-style triggers are arguably Notion's defining feature, since they let fast typists build structured content without ever touching a toolbar or slash command, while the slash command itself remains the universal fallback for inserting any block type you can't remember the typed shortcut for. Because Notion pages can nest infinitely deep and link to each other extensively, navigation shortcuts for jumping between pages and search matter just as much as block-level editing shortcuts. Beyond plain pages, Notion's database views — tables, boards, calendars, and galleries built on the same underlying structured data — carry their own set of keyboard behaviors for moving between cells and opening records, which is where a lot of new users get tripped up, since a database table looks superficially like a spreadsheet but its navigation and editing keys diverge from Excel or Sheets in specific, easy-to-miss ways. The shortcuts below are grouped by what you're actually doing: getting around the workspace, transforming and manipulating blocks, working inside a database view specifically, and applying inline text formatting.
Navigation
| Action | Windows | Mac | Description |
|---|---|---|---|
| Open Quick Find / search | Ctrl+P | Cmd+P | Fuzzy-matches against every page title in the workspace as you type, which beats manually drilling down through nested sidebar entries when you already know roughly what the page is called. |
| Create new page | Ctrl+N | Cmd+N | Creates a new blank page at the top level of your workspace, distinct from creating a sub-page nested within an existing page. |
| Navigate back | Ctrl+[ | Cmd+[ | Returns to the previously viewed page, building a back/forward history similar to a web browser as you click through linked pages. |
| Navigate forward | Ctrl+] | Cmd+] | Moves forward through the same back/forward page history built by clicking through linked pages, the counterpart to navigating back and only active once you've gone back at least once. |
| Toggle sidebar visibility | Ctrl+\ | Cmd+\ | Collapses or restores the left sidebar entirely, useful for reclaiming horizontal space while writing on a smaller screen or when presenting a page to someone else without the workspace navigation visible. |
| Open current page in new window | Ctrl+Shift+N | Cmd+Shift+N | Pops the current page out into its own separate window, useful for referencing one page's content side-by-side with another rather than flipping back and forth in a single window. |
Block Editing
| Action | Windows | Mac | Description |
|---|---|---|---|
| Convert line to bulleted list | Type - then Space | Type - then Space | Start an empty line with a hyphen and a space and Notion auto-converts it into a bulleted list item right away, with each following Enter press continuing the same list format automatically. |
| Convert line to heading | Type # then Space (## for H2, ### for H3) | Type # then Space | Typing one, two, or three hash symbols followed by a space converts the current line into a Heading 1, 2, or 3 block respectively, mirroring Markdown heading syntax. |
| Duplicate selected block | Ctrl+D | Cmd+D | Creates an identical copy of the selected block directly beneath the original, preserving any nested content and formatting. |
| Move block up/down | Ctrl+Shift+Up / Ctrl+Shift+Down | Cmd+Shift+Up / Cmd+Shift+Down | Relocates the currently selected block one position earlier or later among its siblings, without needing to drag the six-dot handle that appears on hover. |
| Indent block (nest under previous) | Tab | Tab | Tucks the current block underneath the one sitting directly above it as a nested child, the exact mechanism Notion's toggle lists and outline-style pages are built on. |
| Outdent block (un-nest one level) | Shift+Tab | Shift+Tab | Promotes the current block back up one nesting level, the reverse of Tab, pulling a block out from underneath its parent so it becomes a sibling of the block it was previously nested inside. |
| Convert line to to-do checkbox | Type [] then Space | Type [] then Space | An empty pair of square brackets plus one space, typed right where a new line begins, immediately turns that line into a checkable to-do item, and the checkbox format keeps continuing automatically each time you press Enter to start the next one. |
| Add a comment to selected text or block | Ctrl+Shift+M | Cmd+Shift+M | Opens a comment thread anchored to the selected text or block, letting collaborators discuss a specific piece of content directly rather than leaving a disconnected note elsewhere on the page. |
| Delete selected block | Backspace (block selected, not text cursor) | Delete/Backspace | Removes an entire selected block outright rather than deleting one character at a time — select the block first (Escape from within it selects its container) so the keypress targets the whole block instead of editing its text content. |
| Convert line to toggle list | Type > then Space | Type > then Space | A right-angle bracket followed by a space converts the line into a collapsible toggle block, which hides its nested children behind a small triangle until clicked open — the building block behind most of Notion's collapsible outline-style pages. |
Database Views
| Action | Windows | Mac | Description |
|---|---|---|---|
| Open a database record (page) | Click row, or Enter with row focused | Click row, or Enter with row focused | Opens the selected database row as its own full page — every row in a Notion database is secretly a complete page in its own right, capable of holding any block content beneath its properties, not just the values shown in the table's columns. |
| Move between cells in table view | Arrow keys / Tab | Arrow keys / Tab | Steps the focused cell across a table view one column or row at a time, similar in spirit to a spreadsheet but limited to whatever property columns are currently visible, since a database table is a structured view of pages rather than a freeform grid. |
| Create new database row | Ctrl+Enter (row focused) or click + New | Cmd+Return | Adds a new blank row (page) to the current database view, inheriting whatever filters are currently applied so the new row appears consistent with the filtered set you're looking at. |
| Edit a database property value | Click cell or Enter to open editor | Click cell or Return to open editor | Opens the appropriate input for that property's type — a date picker for a date property, a dropdown for a select property, a checkbox toggle for a checkbox property — since each column in a Notion database enforces its own data type rather than accepting arbitrary free text the way a spreadsheet cell does. |
| Open Filter menu | Click Filter (no default global key) | Click Filter (no default global key) | Opens the condition-builder for narrowing a database view to rows matching specific property criteria, saved per-view so different views of the same underlying database can show entirely different filtered subsets simultaneously. |
| Switch between saved database views | Click view tab at top of database (no default key) | Click view tab at top of database (no default key) | Jumps between different saved presentations of the same underlying data — table, board, calendar, gallery, timeline — each with its own filters and sort order, without duplicating the actual rows themselves, since all views read from the same single set of pages. |
Formatting
| Action | Windows | Mac | Description |
|---|---|---|---|
| Toggle bold | Ctrl+B | Cmd+B | Bolds the current selection, the same binding you'd expect from virtually any text editor you've ever used. |
| Format as inline code | Ctrl+E | Cmd+E | Wraps selected text in a monospace, code-styled inline span, distinct from a full code block which is its own block type entirely. |
| Highlight selected text | Ctrl+Shift+H | Cmd+Shift+H | Applies a background highlight color to the selected text, cycling through available highlight colors on repeated presses in some versions. |
| Toggle italic | Ctrl+I | Cmd+I | Italicizes the current text selection, consistent with the same binding used across nearly every other text editor and app on this site. |
| Toggle strikethrough | Ctrl+Shift+S | Cmd+Shift+S | Draws a line through the selected text, commonly used to visibly mark a to-do item's label as abandoned or a line of text as outdated without deleting it outright. |
| Clear inline formatting | Ctrl+Shift+0 (varies) or Ctrl+E toggled off individually | Cmd+Shift+0 | Strips inline character-level formatting (bold, italic, code, color) from the current selection back to plain text, without affecting the block type itself, which stays whatever it already was — a paragraph, a heading, a to-do. |
Frequently Asked Questions
Why does typing # at the start of a line sometimes not create a heading?
The hash-to-heading conversion only triggers if the hash and following space are typed at the very start of an empty or otherwise-untransformed line. If you've already applied other formatting to that block, or you're pasting text containing a hash rather than typing it manually, the automatic conversion won't trigger the same way.
What's the difference between Tab indenting a block and dragging it into another block?
Tab specifically nests the current block as a child of whatever block sits directly above it at the same level, which is fast but limited to that one specific relationship. Dragging via the six-dot handle lets you drop a block anywhere on the page, including nesting it several levels deep into an unrelated section, offering more flexibility at the cost of needing the mouse.
Why doesn't Ctrl+P open the browser's print dialog like it normally would?
Notion intercepts Ctrl+P within its own app and web interface to launch Quick Find instead of the browser's native print function, which is a deliberate override since searching pages is overwhelmingly more common than printing a Notion page directly. If you genuinely need to print, that option is available through Notion's own page-level menu rather than the browser shortcut.
Can I undo a block conversion if the Markdown shortcut triggers unintentionally?
Yes — Ctrl+Z (Cmd+Z) immediately after an automatic conversion (like accidentally typing a hyphen-space that converts to a bullet) reverts just that conversion, restoring the plain text you'd typed, without undoing other unrelated edits further back in your history.
Why does a database row open as a full page instead of just showing an edit form?
Every row in a Notion database is a genuine page under the hood, with its visible property columns representing only part of what that page can hold — the same row can also contain any freeform block content (text, images, sub-databases) beneath its properties, which is why clicking or pressing Enter on a row opens a full page view rather than a compact edit form the way a typical spreadsheet or CRM record might.
Why did converting a paragraph into a heading change more than just its text size?
Headings in Notion are also collapsible blocks by default, meaning converting a paragraph to any heading level adds a toggle arrow that can hide everything nested beneath it — a behavior that catches people expecting a purely visual size change, since it also affects the page's structural outline and any table-of-contents block's behavior if one is present. This is generally useful once you're used to it, since every heading doubles as an optional collapse point with no extra setup required, but it's worth knowing before converting a heading purely for its larger text size and being surprised that the content underneath became collapsible along with it — closing that arrow only hides child blocks from view, it never deletes or moves them, and reopening it instantly restores the same layout.