⌥+⌃AltPlusCtrl

Signal Desktop Chat Navigation Shortcuts

Signal's navigation shortcuts fall into three groups that behave differently: stepping through the chat list, jumping into a specific conversation, and moving focus between regions of the window. The third group is the one that makes the other two make sense.

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.
Start with Ctrl+T, because it explains most of the confusion people have with Signal's keyboard support. It cycles focus between the major regions of the window — the chat list, the open conversation, the composer. Almost every Signal shortcut is scoped to one of these, so a binding that appears dead is usually a binding acting somewhere other than where you are looking. Knowing where focus currently sits turns Signal from an application with unreliable shortcuts into one with reliable ones. Moving between conversations is Alt with the up and down arrows, or Ctrl+Tab and Ctrl+Shift+Tab for the same actions. Note the modifier on macOS: it is Option, not Cmd, which is unusual for Signal and catches people who reasonably assume the standard substitution. Two bindings exist for the same action because they come from different conventions — Ctrl+Tab matches tab cycling elsewhere, and the arrows match what you can actually see, which is a vertical list. Adding Shift filters rather than reversing. Alt+Shift+Down and Alt+Shift+Up move to the next and previous conversations with unread messages, skipping everything already read. On a busy account this is a considerably better way of working through a backlog than stepping past every conversation in order, and the pattern — Shift narrows the same movement — is worth noticing because it recurs. Ctrl with a number opens a chat by position, and the caveat matters: Signal orders conversations by recent activity, so the number pointing at a given person changes as other chats move around them. This addresses a position in a list, not a contact. It is fast for the two or three conversations that are always at the top and unreliable for anything further down, which is a genuine limitation rather than something to work around. Search splits usefully. Ctrl+F searches every conversation; Ctrl+Shift+F searches only the one open. The second is underused and often the one you actually want, because the common situation is knowing exactly who said something and having no idea when. Searching globally for a common word returns a great deal to sift through; searching one conversation for it usually lands. Ctrl+J is the bridge into the rest of Signal's keyboard support. It moves selection to the oldest unread message, or the most recent if everything is read, and that selected message is what the entire Ctrl+Shift family of reply, react, forward and delete acts upon. Without it those shortcuts have no target and appear broken. If you learn one thing from this page, this connection is probably it. Archiving with Ctrl+Shift+A and restoring with Ctrl+Shift+U is tidying rather than silencing. An archived conversation leaves the main list but comes straight back, notification and all, when a new message arrives. Muting is a separate setting behind the chat menu on Ctrl+Shift+L, and conflating the two produces the specific surprise of an archived chat that keeps interrupting you. That chat menu is worth exploring for its own sake. Disappearing messages, mute duration, block, notification settings and several other per-conversation options live there with no shortcuts of their own, which makes Ctrl+Shift+L effectively the entry point to per-chat configuration rather than merely one more binding. The remaining pair is small but frequently used: Ctrl+Up and Ctrl+Down jump to the top of the loaded history and back to the newest message. The downward one earns its place — it is the fast way back after scrolling up to check something, and scrolling manually through a long conversation to return to the present is exactly the kind of small friction a shortcut should remove. One structural point ties this section together. Signal's chat list is ordered by recent activity and re-orders itself constantly as messages arrive, which means every position-based shortcut here is addressing a moving target. That is fine for stepping — next and previous are relative, so they behave predictably regardless of what has moved. It is less good for the numbered jumps, which point at a slot rather than a person and can land somewhere unexpected if a quiet conversation has suddenly become active. In practice people use the numbers for the two or three chats that are reliably at the top and the arrows for everything else. For keyboard-only use, the workable path through a backlog is worth spelling out because it combines several of these bindings into something genuinely efficient. Alt+Shift+Down moves to the next conversation carrying unread messages. Ctrl+J puts selection on the first message you have not read within it. The down arrow walks forward through the rest. Ctrl+Shift+R replies where a reply is warranted, and Alt+Shift+Down moves on. That loop covers a morning's accumulated messages without the mouse being involved at any point, which is not something most messaging applications support at all.