Slack Keyboard Shortcuts
Slack is built around the assumption that you'll be jumping between dozens of channels and direct messages all day, and its keyboard shortcuts reflect that — the heaviest emphasis is on fast navigation between conversations rather than text formatting, which is comparatively minimal. The Quick Switcher is the single shortcut worth memorizing above all others, since it turns Slack's sometimes-cluttered sidebar into a searchable list you can jump through without ever touching the mouse. Beyond navigation, Slack supports a reasonable set of message-composition and formatting shortcuts borrowed loosely from Markdown conventions, plus a few workspace-level shortcuts for muting, marking things read, and managing notifications during a busy day. Slack's model is workspace-then-channel: you belong to one or more workspaces (typically one per organization or community), and each workspace contains its own set of channels and direct messages, distinct from Discord's server-based model where anyone can casually join many servers at once — Slack workspaces are generally tied to a specific organization's paid membership rather than freely joinable communities. Slack's own shortcut cheat sheet, opened by typing a question mark into any message box or through the Help menu, stays in sync with whatever the current desktop app version supports, which matters since Slack has quietly changed a few default bindings across major redesigns.
Navigation
| Action | Windows | Mac | Description |
|---|---|---|---|
| Open Quick Switcher | Ctrl+K | Cmd+K | Opens a searchable list of every channel, direct message, and workspace you have access to — type a few letters and press Enter to jump straight there, by far the fastest way to move around Slack once you're in more than a handful of channels. |
| Jump to next unread channel | Alt+Shift+Down | Cmd+Shift+Down | Advances to whichever channel or direct message is next in line with an unread badge, working through a notification backlog top-down instead of eyeballing the sidebar for bold unread text. |
| Browse all channels | Ctrl+Shift+L | Cmd+Shift+L | Opens the full channel directory for the workspace, including channels you haven't joined yet, searchable by name or topic. |
| Open direct messages list | Ctrl+Shift+K | Cmd+Shift+K | Jumps to a list of all your direct message conversations specifically, useful when you know you're looking for a DM rather than a channel and want to skip the mixed sidebar. |
| Mark all unreads as read | Shift+Esc (or Ctrl+Shift+A in some builds) | Shift+Esc | Clears unread indicators across the entire workspace in one action, useful after returning from time away when catching up message-by-message isn't realistic. |
| Switch between workspaces | Ctrl+1 through Ctrl+9 | Cmd+1 through Cmd+9 | Jumps directly to a specific workspace by its position in the sidebar's workspace switcher, numbered in the order they were added — handy for anyone juggling a personal workspace alongside two or three client or community workspaces throughout the day. |
| Search messages and files | Ctrl+F | Cmd+F | Opens the search bar scoped to the current workspace, supporting modifiers like from:, in:, and before: to narrow results — distinct from Quick Switcher, which jumps to destinations rather than searching message content. |
| Open preferences | Ctrl+, | Cmd+, | Opens the full preferences panel covering notifications, themes, accessibility, and language settings, the same destination reached by clicking the workspace name in the top-left corner and selecting Preferences from the dropdown. |
Messaging
| Action | Windows | Mac | Description |
|---|---|---|---|
| Edit your last message | Up Arrow (in empty message box) | Up Arrow (in empty message box) | Pressing Up with an empty compose box loads your most recently sent message into edit mode, the fastest way to fix a typo without scrolling up and hovering to find the edit option. |
| Add emoji reaction to focused message | Hover message + Ctrl+Shift+\\ or click emoji icon | Hover message + Cmd+Shift+\\ | Opens the emoji picker anchored to a specific message for adding a reaction without needing to right-click or hunt for the small reaction icon that only appears on hover. |
| Upload a file to current conversation | Ctrl+Shift+U | Cmd+Shift+U | Opens a file picker to attach a file directly to the current channel or DM, equivalent to clicking the paperclip icon in the compose box. |
| Reply in thread to focused message | T (with message focused via arrow keys) | T (with message focused) | Opens the reply-in-thread panel for the message the keyboard focus is currently sitting on, letting you type an in-thread reply without precisely clicking that small link beneath the message. |
| Compose a new direct message | Ctrl+Shift+K then select recipient | Cmd+Shift+K then select recipient | Opens the direct message composer, prompting you to search for and select a person or group of people to start a fresh conversation with, distinct from continuing an existing thread or channel discussion. |
| Pin focused message to channel | Hover/focus message > pin from message menu (no default global key) | Hover/focus message > pin from message menu | Adds a message to the channel's pinned items list, keeping important context (a key decision, a shared resource link) easily reachable later without scrolling back through potentially months of channel history to relocate it. |
Formatting
| Action | Windows | Mac | Description |
|---|---|---|---|
| Bold selected text | Ctrl+B | Cmd+B | Wraps the selected text in asterisks to render it bold, following Slack's Markdown-like formatting syntax. |
| Format as inline code | Ctrl+Shift+C | Cmd+Shift+C | Wraps selected text in backticks to render as inline code with a monospace font and subtle background, commonly used for short code snippets or filenames in a message. |
| Format as code block | Ctrl+Shift+Enter (varies by version) or triple-backtick syntax | Cmd+Shift+Enter | Converts a multi-line selection into a fenced code block with preserved formatting and a monospace font, the right choice for pasting multi-line code rather than inline formatting which strips line breaks visually. |
| Start a bulleted list | Ctrl+Shift+8 | Cmd+Shift+8 | Switches the current line to a bulleted list item, and Slack keeps auto-continuing the bullet on every Enter press until you either hit Enter twice in a row or delete the bullet by hand. |
| Italicize selected text | Ctrl+I | Cmd+I | Wraps the selected text in single underscores to render it as italic, mirroring the same Markdown-style convention Slack uses for bold and strikethrough — useful for softening emphasis on a word without shouting it in bold. |
| Strikethrough selected text | Ctrl+Shift+X | Cmd+Shift+X | Wraps the selected text in tildes so it renders with a line through it, commonly used to visibly retract a statement in a message rather than deleting and retyping it, which loses the correction context for anyone already reading the thread. |
| Format as blockquote | Type > then Space at line start | Type > then Space at line start | Typing a right-angle bracket followed by a space at the start of a line converts it into a quoted blockquote, visually indented with a vertical bar, commonly used to reference or requote something someone else said before responding to it. |
Huddles Calls
| Action | Windows | Mac | Description |
|---|---|---|---|
| Start a huddle in current channel/DM | Click huddle icon (no default global key) | Click huddle icon (no default global key) | Launches Slack's lightweight, audio-first huddle feature directly in the current channel or DM, a lower-friction alternative to a formally scheduled video call for a quick real-time conversation. |
| Mute/unmute microphone in huddle | Ctrl+Shift+Space | Cmd+Shift+Space | Toggles your microphone while inside an active huddle, the huddle equivalent of the mute shortcuts covered on Zoom's and Teams' own shortcut pages. |
| Share screen in huddle | Click screen share icon in huddle bar (no default global key) | Click screen share icon in huddle bar | Starts sharing your screen with everyone currently in the huddle, opening the standard window/screen picker, without needing to leave the huddle or switch to a separate video call tool. |
| Leave current huddle | Click leave icon in huddle bar (no default global key) | Click leave icon in huddle bar | Exits the huddle while leaving it running for anyone else still in it, distinct from ending it entirely — a huddle stays open as long as at least one person remains inside it. |
Frequently Asked Questions
Why does the Quick Switcher sometimes show channels I've never joined?
Quick Switcher searches the entire workspace directory by default, not just channels you belong to, so public channels you haven't joined yet still appear in results. Selecting one prompts you to join before viewing its content, which is intentional — it's meant to help you discover and join relevant channels, not just navigate ones you're already in.
Why doesn't Up Arrow edit my last message sometimes?
This only works when the message compose box is completely empty and focused. If there's any draft text already typed, or you're in a thread panel rather than the main channel, Up Arrow either does nothing or moves the cursor within existing text instead of loading your last sent message for editing.
Is there a way to mark just one channel as read without clearing everything?
Yes — opening a channel and scrolling to the bottom marks just that channel as read automatically, or right-clicking a specific channel in the sidebar offers a 'Mark as Read' option scoped to that one channel. The Shift+Esc shortcut is specifically for clearing every unread across the whole workspace at once, which is a different and broader action.
Why does my bold formatting use asterisks instead of a visual bold button taking effect immediately?
Slack's message composer uses a lightweight Markdown-like syntax under the hood — Ctrl+B wraps your selection in asterisks, which render as bold once the message is sent or as you type if you're using the rich text composer mode. If you're seeing literal asterisks in a sent message rather than bold text, your workspace may have rich text formatting disabled in compose settings.
What's the difference between a huddle and a regular Slack call or Zoom meeting?
A huddle is deliberately lightweight — audio-first, launched with one click directly from a channel or DM with no scheduling or calendar invite required, meant for a quick real-time conversation that doesn't warrant the ceremony of a formally scheduled video meeting. A traditional Slack call (or an external tool like Zoom) is generally better suited to a planned, longer, or larger meeting where video, recording, or more structured host controls actually matter.
Can I change Slack's default keyboard shortcuts?
Slack does not offer a general shortcut remapping panel the way some editors do, but a handful of navigation shortcuts can be adjusted for accessibility purposes under Preferences > Accessibility, and some users work around missing customization by using OS-level remapping tools like Karabiner on Mac or AutoHotkey on Windows to bind their own combinations to Slack's existing actions.
Why does leaving a huddle not end it for everyone else?
Huddles are designed around ambient, drop-in presence rather than a formally hosted meeting with a single owner who controls when it ends — anyone can join or leave independently, and the huddle itself simply stays active as long as at least one person remains inside it, closing automatically only once the last remaining participant leaves.