WordPress Admin Keyboard Shortcuts
WordPress's shortcuts live almost entirely inside the Gutenberg block editor, since that's where the actual content-creation work happens, while the broader admin dashboard (Settings, Plugins, Users) remains deliberately click-driven with no dedicated keyboard layer. Gutenberg's block-based architecture means several shortcuts are specifically about navigating and manipulating blocks as discrete units, a meaningfully different model from a single continuous document the way Word or Google Docs treats content. As a browser-based admin panel, the Gutenberg editor keeps its own list of registered keyboard shortcuts viewable from the three-dot menu in the top-right of the editor (Keyboard Shortcuts), and that in-app list is the authoritative source if a plugin has remapped anything. This page is written for content editors and site administrators working regularly in the block editor — bloggers, marketing teams, agencies managing several client sites — rather than plugin developers extending Gutenberg's underlying block API, since that's a fundamentally different, code-level interaction with the editor. Because so many popular WordPress plugins (page builders, SEO tools, form plugins) inject their own panels and occasionally their own keyboard shortcuts into the editor, it's worth checking the in-app Keyboard Shortcuts reference on your specific installation if a heavily plugin-customized site behaves differently than what's documented here for stock Gutenberg.
Block Editing
| Action | Windows | Mac | Description |
|---|---|---|---|
| Insert new block | Ctrl+Alt+T (varies) or / at line start | Cmd+Option+T or / | A forward slash typed on an otherwise empty new line summons the block-type search, so you can drop in a specific block — image, heading, list, and so on — by name rather than hunting for the plus icon. |
| Duplicate selected block | Ctrl+Shift+D | Cmd+Shift+D | Creates a copy of the selected block directly below the original, preserving all its content and settings. |
| Remove selected block | Shift+Alt+Z | Shift+Option+Z | Deletes the currently selected block entirely from the post, distinct from just deleting its text content which would leave an empty block behind. |
| Move block up/down | Ctrl+Shift+Alt+T/Y or use block toolbar arrows | Cmd+Option+Shift+T/Y | Relocates the selected block one position up or down in the post's block order; the on-screen up/down arrow buttons on the block toolbar are the more commonly used method in practice. |
| Select all blocks | Ctrl+A (twice) | Cmd+A (twice) | Pressing once selects all text within the current block; pressing a second time expands the selection to every block in the entire post, letting you apply a bulk action like delete or copy to the whole document at once. |
| Change block type | Click block toolbar's transform icon, no default shortcut | Same | Converts the selected block to a compatible alternate block type — a paragraph into a heading, or a bulleted list into a numbered list — through the block toolbar's transform dropdown, with no dedicated keyboard shortcut for triggering this specific conversion menu. |
Formatting
| Action | Windows | Mac | Description |
|---|---|---|---|
| Bold selected text | Ctrl+B | Cmd+B | Wraps the current selection in a <strong> tag via Gutenberg's inline-format toolbar that pops up above selected text, the same toggle available by clicking the B icon in that floating toolbar rather than a separate top-level menu. |
| Insert hyperlink | Ctrl+K | Cmd+K | Opens the link insertion popover for the selected text, supporting both external URLs and internal search for existing posts and pages to link to. |
| Convert to Heading block | Type ## then Space (Markdown shortcut) | Type ## then Space | Typing one to six hash symbols followed by a space at the start of a new block converts it to the corresponding heading level, following Gutenberg's Markdown-style autoformat conventions. |
| Italicize selected text | Ctrl+I | Cmd+I | Italicizes the current selection through the block's inline formatting toolbar, the same rich-text convention that shows up across nearly every web-based editor. |
Publishing
| Action | Windows | Mac | Description |
|---|---|---|---|
| Publish/Update post | Ctrl+S (saves draft) — Publish itself is a button click | Cmd+S | Ctrl+S saves the current draft; actually publishing or updating the live post still requires clicking the Publish/Update button in the top-right panel, since WordPress treats that as a deliberate, separate confirmation step. |
| Preview post | No default keyboard shortcut — click Preview button | Same | Checking how a post will actually render once published means clicking the Preview button up in the editor's toolbar, since no keyboard shortcut is wired to that action out of the box. |
| Toggle block List View | Ctrl+Shift+Alt+O | Cmd+Shift+Option+O | Opens a hierarchical outline sidebar showing every block in the post as a nested list, useful for navigating and understanding the structure of a long post with many nested blocks (like columns containing groups containing paragraphs) without scrolling through the entire document visually. |
Frequently Asked Questions
Why does Ctrl+S not actually publish my post?
WordPress deliberately separates saving a draft from publishing it live, similar to Confluence's model — Ctrl+S only saves your current progress as a draft (or updates an already-published post's content without changing its publish status), while Publish/Update requires an explicit button click as a final confirmation step to avoid accidentally pushing unfinished content live.
Does the Markdown-style ## heading shortcut work anywhere in the post?
It only triggers at the very start of an empty new block — if you type ## in the middle of existing text within a block, or in a block that isn't empty, it just inserts literal hash characters rather than converting the block type, since Gutenberg's autoformat only fires on a fresh empty line.
What's the difference between deleting text in a block versus removing the block itself?
Selecting and deleting all the text inside a block leaves an empty block of that same type sitting in the post, which still occupies a position in the block list and can be re-typed into. Shift+Alt+Z removes the block entirely, closing the gap in the document structure rather than just emptying its content.
What's the practical benefit of List View on a long post?
Once a post has many nested blocks — columns inside groups inside sections — scrolling through the visual editor to understand the overall structure or locate a specific deeply nested block becomes slow and disorienting. List View shows the same structure as a collapsible outline, letting you click directly on any block's name to jump straight to it regardless of how deeply nested it is or how far down the page it sits.
Why does converting a block type sometimes lose some of its original formatting?
Not every block type shares the same set of supported attributes — converting a Heading block to a Paragraph block, for instance, drops the specific heading-level setting since paragraphs don't have one, and converting a complex block like a Table into a simpler block type can lose structural data that the destination block type has no equivalent field to hold, so it's worth previewing the result after a conversion rather than assuming everything carries over cleanly.
Is there a keyboard shortcut for quickly switching between the block editor and the classic editor view?
No — switching editors (if the Classic Editor plugin is installed alongside Gutenberg) is done through a link in the post's edit screen or a setting applied per-post-type, since which editor loads is controlled by plugin configuration rather than something a single keystroke could toggle live.