⌥+⌃AltPlusCtrl

Signal Keyboard Shortcuts

Signal Desktop has a larger keyboard surface than most people realise, and it is organised around a distinction the interface does not make obvious: some shortcuts act on the chat list, some on the composer you are typing in, and some on whichever individual message currently has selection. The message-level group is the one most users never find, because selecting a message with the keyboard is not something the interface advertises — and without a selected message, the whole Ctrl+Shift family for replying, reacting, forwarding and deleting appears to do nothing at all. The composer carries the set worth learning first, because it includes text formatting that a lot of Signal users do not know exists. Bold, italic, strikethrough, monospace and spoiler are all bound to key combinations, applied to selected text exactly as they would be in a word processor. Spoiler in particular — Ctrl+Shift+B, or Cmd+Shift+B on a Mac — hides the text behind a tap-to-reveal blur, which has no equivalent in most messaging apps and is genuinely useful for anything from plot details to a surprise someone in the group should not read yet. One warning before the tables. Signal's Mac and Windows bindings are not a clean Cmd-for-Ctrl substitution the way most cross-platform applications manage. Several actions use different modifier families entirely — the calling shortcuts are Ctrl+Shift on macOS and Alt+Shift on Windows and Linux, which is the reverse of the usual pattern where Mac gets the platform key and Windows gets Ctrl. Anyone who moves between a Mac and a PC will find that specific group does not transfer, and the tables below give both forms rather than asking you to derive one from the other. Signal's own list is always available in the application itself. Ctrl+/ or Cmd+/ opens it, as does Help ▸ Show Keyboard Shortcuts, and that is the authoritative reference for whichever version you have installed. This page covers the same ground with the context around each binding — what it actually does, what it needs to be focused on, and where the platforms diverge.

Conversation Navigation

ActionWindowsMacDescription
Next chatAlt+Down (or Ctrl+Tab)Option+Down (or Ctrl+Tab)Moves down the chat list to the following conversation. Two bindings exist for the same action because Ctrl+Tab matches the tab-cycling convention while the arrow version matches the visible vertical layout.
Previous chatAlt+Up (or Ctrl+Shift+Tab)Option+Up (or Ctrl+Shift+Tab)Moves up the chat list to the preceding conversation. Note the modifier is Option on macOS rather than Cmd, which is unusual for Signal and catches people who assume the standard substitution.
Next / previous unread chatAlt+Shift+Down / Alt+Shift+UpOption+Shift+Down / Option+Shift+UpSkips straight to conversations with unread messages, passing over everything already read. Adding Shift to the ordinary chat-stepping shortcut is a consistent pattern worth noticing — it filters rather than changing direction.
Jump to a chat by numberCtrl+1 to Ctrl+9Cmd+1 to Cmd+9Opens a conversation by its position in the list. Because Signal orders chats by recent activity rather than fixing them in place, the number pointing at a given person changes as other conversations move — this addresses a position, not a contact.
Focus the oldest unread or last messageCtrl+JCmd+JMoves selection to the first message you have not read, or the most recent one if everything is read. This is the usual way into message-level selection, which the rest of the per-message shortcuts require.
Navigate by sectionCtrl+TCmd+TCycles focus between the major regions of the window — chat list, conversation, composer. The foundation of keyboard-only use, and the answer when a shortcut appears dead because focus is somewhere you did not expect.
Search all chatsCtrl+FCmd+FSearches across every conversation. Ctrl+Shift+F searches within the currently open chat instead, which is the one you want when you know who said it and not when.
Start a new chatCtrl+NCmd+NOpens the new-conversation picker to choose a contact or group. Distinct from search, though both accept a name — this one starts a thread rather than finding an existing one.
Archive / unarchive a chatCtrl+Shift+A / Ctrl+Shift+UCmd+Shift+A / Cmd+Shift+UMoves a conversation out of the main list without deleting anything, and the paired shortcut brings it back. Archived chats resurface on their own if a new message arrives, so archiving is a tidying action rather than a mute.
Close the current chatCtrl+Shift+CCmd+Shift+CReturns to the chat list with no conversation open. Worth noting that Ctrl+Shift+C on macOS — with Ctrl rather than Cmd — starts a voice call instead, so the two live uncomfortably close together on that platform.
Open the chat menuCtrl+Shift+LCmd+Shift+LOpens the options menu for the open conversation — disappearing messages, mute, block, notification settings. Several features with no shortcut of their own live behind this one, which makes it the route to most per-chat configuration.
Scroll to top / bottom of a chatCtrl+Up / Ctrl+DownCmd+Up / Cmd+DownJumps to the beginning of the loaded history or back to the newest message. The bottom jump is the more useful of the two — the fast way back after scrolling up to find something.

Composer Formatting

ActionWindowsMacDescription
Send a messageEnterReturnSends whatever is in the composer. In the expanded composer this changes — there, Ctrl+Enter or Cmd+Enter sends, because plain Enter is needed for line breaks in a multi-paragraph message.
Add a line break without sendingShift+EnterShift+ReturnInserts a newline instead of sending, which is how you write a multi-line message in the ordinary composer. For anything genuinely long, the expanded composer is the better tool.
Expand the composerCtrl+Shift+KCmd+Shift+KOpens a larger writing area for longer messages. The send key changes inside it — Ctrl+Enter rather than Enter — which is the whole point, since Enter becomes an ordinary line break.
Attach a fileCtrl+UCmd+UOpens the file picker for the current conversation. Ctrl+Shift+P clears every draft attachment at once, and Ctrl+P removes just the link preview if one was generated from a URL you pasted.
Edit your previous messageUp arrow (empty composer)Up arrow (empty composer)Pressing Up with nothing typed reopens your last message for editing. Recipients see that it was edited and can view the history, so this corrects a typo openly rather than quietly rewriting what was said.
Bold selected textCtrl+BCmd+BApplies bold to whatever is selected in the composer. Signal transmits the formatting as message metadata rather than as visible markdown characters, so recipients see formatted text rather than asterisks.
Italicise selected textCtrl+ICmd+IApplies italics to the selection, using the same combination as every text editor. Combines with the other formatting keys, so text can be bold and italic at once.
Strike through selected textCtrl+Shift+XCmd+Shift+XDraws a line through the selection. The odd one out in the formatting group — most applications use Ctrl+Shift+S or Alt+Shift+5, and Signal's choice of X has no obvious precedent.
Format selected text as monospaceCtrl+ECmd+ESwitches the selection to a fixed-width font, the right choice for a command, a file path or anything where character-level accuracy matters. Also stops the text being reflowed in ways that obscure spacing.
Mark selected text as a spoilerCtrl+Shift+BCmd+Shift+BHides the selection behind a blur that the recipient taps to reveal. Genuinely uncommon in messaging apps and useful for anything the reader should choose to see rather than encounter — plot details, results, a surprise.
Start recording a voice messageCtrl+Shift+YCmd+Shift+YBegins a voice recording in the current conversation without reaching for the microphone button. Worth distinguishing from the calling shortcuts, which use a different modifier family entirely on Windows.

Message Actions

ActionWindowsMacDescription
Reply to the selected messageCtrl+Shift+RCmd+Shift+RStarts a quoted reply to whichever message is selected, and toggles it off if pressed again. Requires a selected message — Ctrl+J is the usual way to get one from the keyboard.
Open the reaction pickerCtrl+Shift+ECmd+Shift+EOpens the emoji-reaction picker for the selected message. Reacting rather than replying keeps a group conversation from filling with acknowledgements, which is most of what the feature is for.
View message detailsCtrl+DCmd+DShows delivery and read status, timestamps, and in a group, who has seen it. The place to check when you need to know whether a message actually arrived rather than assuming from the absence of a reply.
Forward selected messagesCtrl+Shift+SCmd+Shift+SSends the selection on to another conversation. Signal marks forwarded messages as such for the recipient, which is a deliberate friction against content travelling without its context.
Save an attachmentCtrl+SCmd+SSaves the attachment from the selected message to disk, and does the same job inside the media viewer. Relevant for disappearing messages — saving is what takes a file out of that lifecycle.
Delete the selected messageCtrl+Shift+DCmd+Shift+DDeletes the selected message, with the choice of removing it for everyone or only for you. Deleting for everyone has a time limit and cannot recover a message someone has already screenshotted.
Open the message context menuShift+F10Cmd+F12Opens the full right-click menu for the selected message from the keyboard. The route to per-message actions that have no shortcut of their own, and one of the few places Signal's Mac and Windows bindings share no structure at all.
Default action on the selected messageEnterReturnPerforms whatever the obvious action is for that message type — opening an attachment, following a link, expanding media. Context-dependent by design, which makes it quick once selection is where you want it.

Calling Media

ActionWindowsMacDescription
Mute / unmute on a callShift+MShift+MToggles your microphone during a call. One of the few Signal shortcuts identical across platforms, and the only one most people need during a call.
Turn video on / offShift+VShift+VToggles your camera mid-call. Paired with Shift+M for the microphone, these two are the pair worth having in muscle memory before you need them urgently.
Start a voice or video callAlt+Shift+C (voice) / Alt+Shift+Y (video)Ctrl+Shift+C (voice) / Ctrl+Shift+Y (video)Calls the person or group in the open conversation. Note the platform inversion — macOS uses Ctrl here where Windows uses Alt, the reverse of the usual convention.
Answer a callAlt+Shift+V (with video) / Alt+Shift+A (without)Ctrl+Shift+V / Ctrl+Shift+ATwo separate bindings so you can answer a video call with the camera off, without scrambling for a mute button after connecting. The video variant applies only to incoming video calls.
Decline or end a callAlt+Shift+D (decline) / Alt+Shift+E (end)Ctrl+Shift+D / Ctrl+Shift+EDeclines an incoming call or ends one in progress. Distinct bindings for the two, so the key that hangs up on a live call is not the one you press to dismiss a ringing one.
Open the All Media viewCtrl+Shift+MCmd+Shift+MShows every photo, video and file shared in the current conversation in one grid. Considerably faster than scrolling a long history looking for something someone sent months ago.
Open the emoji, sticker or GIF pickerCtrl+Shift+J / Ctrl+Shift+O / Ctrl+Shift+GCmd+Shift+J / Cmd+Shift+O / Cmd+Shift+GThree separate pickers on three bindings — emoji, stickers and GIFs. Distinct from Ctrl+Shift+E, which reacts to a selected message rather than inserting into the composer.
Open PreferencesCtrl+,Cmd+,Opens application settings, following the platform convention. Where audio and video device selection lives, which is worth checking before a call rather than during one.

Frequently Asked Questions

Why does Ctrl+Shift+R do nothing when I press it?

Because it acts on a selected message, and you almost certainly do not have one. Signal's per-message shortcuts — reply, react, forward, delete, details — all require a message to have keyboard selection, which is separate from having the conversation open or the composer focused. Ctrl+J is the usual way in: it moves selection to the oldest unread message, or the most recent one if everything is read. From there the arrow keys move between messages and the Ctrl+Shift family works. This single missing step is the reason most people conclude Signal has far fewer shortcuts than it does.

How do I write a multi-line message without sending it early?

Shift+Enter inserts a line break in the ordinary composer. Once a message runs past two or three lines, Ctrl+Shift+K opens the expanded composer, and the send key changes there — Ctrl+Enter sends, while plain Enter becomes an ordinary newline. That inversion is the point of the expanded view: in a larger writing area you want Enter to behave the way it does in every text editor rather than firing the message off mid-thought.

Can I format text in Signal, and does the recipient see it?

Yes to both. Ctrl+B bolds, Ctrl+I italicises, Ctrl+Shift+X strikes through, Ctrl+E sets monospace and Ctrl+Shift+B marks a spoiler — all applied to selected text in the composer, with Cmd in place of Ctrl on macOS. Signal transmits formatting as message metadata rather than as literal markdown characters, so recipients see genuinely formatted text rather than asterisks and underscores. Formatting survives to Android and iOS as well, so a monospaced command sent from Desktop arrives monospaced on a phone.

What does the spoiler formatting actually do?

Ctrl+Shift+B hides the selected text behind a blur that the recipient taps or clicks to reveal. It is a display treatment, not a security feature — the text is delivered normally and anyone who reveals it sees it, so it protects against accidental reading rather than against a determined reader. That said, accidental reading is the actual problem it solves: plot details in a group where not everyone has watched the thing, a result someone is deliberately avoiding, a surprise that should not be spoiled by a notification preview.

Why are the calling shortcuts Ctrl on Mac and Alt on Windows?

That is genuinely how Signal has bound them, and it is the reverse of the usual pattern. Everywhere else in the application, macOS uses Cmd where Windows uses Ctrl, exactly as you would expect. The calling group breaks that: starting a voice call is Ctrl+Shift+C on macOS and Alt+Shift+C on Windows and Linux, and the same inversion applies to answering, declining and ending. No public rationale has been given. What matters practically is that this group alone cannot be derived from the others, so anyone switching between a Mac and a PC has to hold two sets in memory for calls specifically and one set for everything else.

How do I edit a message I have already sent?

Press the Up arrow with the composer empty, and your last message reopens for editing. Signal marks edited messages visibly and recipients can view the edit history, so this is an open correction rather than a silent rewrite — which is a deliberate design choice for a messaging app where 'what did they actually say' can matter. There is a time window after which editing is no longer offered, so a typo caught days later needs a follow-up message instead.

What is the difference between Ctrl+F and Ctrl+Shift+F?

Ctrl+F searches across every conversation, and Ctrl+Shift+F searches inside the one currently open. The distinction matters more in Signal than in most applications because searching everything for a common word returns a great deal, while you usually know which conversation something was in and simply cannot remember when. Ctrl+Shift+F is the one that answers 'they sent me the address at some point' quickly, and it is noticeably underused compared with the global search.

Does archiving a chat mute it?

No, and conflating the two causes real surprise. Ctrl+Shift+A archives a conversation, which removes it from the main list without deleting anything, and Ctrl+Shift+U brings it back. But an archived chat resurfaces on its own when a new message arrives, notification included. Muting is a separate setting, found through the chat menu on Ctrl+Shift+L. Archive is for tidying a list you have stopped needing; mute is for a conversation that is too noisy.

How do I find every photo someone sent me without scrolling?

Ctrl+Shift+M opens the All Media view for the current conversation — every photo, video and file in one grid, ordered by date. Scrolling a long history looking for an image is one of the more tedious things a messaging app asks of you, and this replaces it entirely. Inside the media viewer, Ctrl+S saves whatever you are looking at, which is worth knowing for disappearing messages, since saving is what takes a file out of that lifecycle before it goes.

Where does Signal list its own shortcuts?

Ctrl+/ or Cmd+/ opens the full list from inside the application, and Help ▸ Show Keyboard Shortcuts does the same from the menu bar. That is the authoritative reference for whichever version you have installed, which matters because Signal ships frequently and the set has grown over time — message editing and several formatting options are more recent additions than the app's overall age would suggest. Signal also publishes downloadable PDF reference cards for Windows/Linux and for macOS separately, precisely because the two differ in the ways described above.