Back to Blog
Guide

Slack Forward Multiple Messages: No Multi-Select, 3 Workarounds Tested

Slack forwards one message at a time. We checked the message menu, shift-click and the forward dialog, then tested three ways to move 10 messages at once: a thread, a copied range, and a script that posts links.

Slack Green Team
October 6, 2026
October 6, 2026
4 min read
Share:
slack
messages

You cannot forward multiple messages at once in Slack. Each message has its own Forward message button, and the forward dialog holds exactly one message. There is also no way to select several messages: the message menu has no Select item, and shift-click does nothing. We checked this in the Slack web app (not the desktop or mobile apps) on 6 October 2026 in our free-plan test workspace, with 10 test messages in one channel. Then we tried three ways to get all 10 to another channel. The best one depends on whether the messages are already in a thread.

What Slack offers for one message

Hover a message and the toolbar shows Forward message... (the curved arrow). The More actions menu (three dots) has Edit message, Mark unread, Add to saved, Add a reminder, Turn off notifications for replies, Copy link, Copy message, Pin to channel, Connect to apps and Delete message. Nothing in it selects a message for a group action.

The More actions menu of a Slack message next to ten test messages: Edit message, Mark unread, Add to saved, Add a reminder, Turn off notifications for replies, Copy link, Copy message, Pin to channel, Connect to apps, Delete message, and no Select option

We also held Shift and clicked message 3, then message 7. Nothing was selected, and no toolbar for a group action appeared. The forward dialog is titled "Forward this message". It shows one message under the search box, with Copy Link, Forward and Schedule for later, and has no button to add another message. Forwarding 10 messages this way means opening that dialog 10 times: hover, click the arrow, pick the channel, click Forward, for each message.

Workaround 1: forward the thread, not the messages

If the messages are replies in one thread, forward the thread's first message. We posted a parent message with 10 replies and forwarded the parent to another channel. The forwarded post showed the parent text only, labelled "Thread in #sglab-fwd-src", with no replies and no reply count. Clicking that label opened the original thread with all 10 replies in the side panel.

Left: the forwarded parent in the target channel, labelled Thread in #sglab-fwd-src, under a normal forwarded message labelled Posted in. Right: the thread panel that opened from it, with the parent and all ten replies

This is one forward instead of 10, and the replies stay readable in context. The catch: the forward links back to the source. A reader has to be able to open the source channel to see the replies. Our test workspace has one member, so we could not check what someone outside a private source channel sees. If the messages are not in a thread yet, this does not help, because Slack cannot move existing messages into a thread.

Never appear "away" on Slack again

Cloud-based. No downloads. Works 24/7 even when your laptop is off.

Workaround 2: select the text of a range and copy it

You can drag across messages to select their text, as on any web page. We pressed the mouse on the first word of message 1 and released after message 10. All 10 were highlighted, and the selection held 456 characters.

Ten Slack messages highlighted by one mouse drag, from Incident note 1 of 10 to Incident note 10 of 10

The selection includes more than the messages. Between the lines it held the hover time stamps, 4:42 and 4:43, as separate lines:

Incident note 1 of 10: step 1 of the fix
4:42
Incident note 2 of 10: step 2 of the fix
4:42
Incident note 3 of 10: step 3 of the fix
...
Incident note 10 of 10: step 10 of the fix

Paste it into a message, a canvas or a document, and delete the time lines if you do not want them. This is the fastest way to move the words, but the copy is plain text: it has no link back to the original messages, and replies, reactions and files are lost.

Workaround 3: post the message links with a script

chat.getPermalink returns the link of any message, and Slack shows a preview when you post a message link. This script reads the last 10 messages of one channel and posts all 10 links as one message in another:

import os, time, requests

TOKEN = os.environ["SLACK_TOKEN"]          # bot or user token with channels:history and chat:write
SOURCE, TARGET = os.environ["SOURCE_CHANNEL"], os.environ["TARGET_CHANNEL"]
H = {"Authorization": f"Bearer {TOKEN}"}

start = time.time()
hist = requests.get("https://slack.com/api/conversations.history", headers=H,
                    params={"channel": SOURCE, "limit": 10}, timeout=30).json()
msgs = [m for m in reversed(hist["messages"]) if not m.get("subtype")][-10:]
lines = []
for m in msgs:
    link = requests.get("https://slack.com/api/chat.getPermalink", headers=H,
                        params={"channel": SOURCE, "message_ts": m["ts"]}, timeout=30).json()["permalink"]
    lines.append(f"<{link}|{m['text'][:40]}>")
r = requests.post("https://slack.com/api/chat.postMessage", headers=H, timeout=30,
                  json={"channel": TARGET, "text": "10 messages from #sglab-fwd-src:\n" + "\n".join(lines)}).json()
print("ok:", r["ok"], "links:", len(lines), "seconds:", round(time.time() - start, 1))

Output:

ok: True links: 10 seconds: 24.2

The post held 10 links, but Slack showed a preview card for only the first 5. Links 6 to 10 stayed plain blue text, and the API returned 5 attachments with is_share: true. If you want a card for every message, post at most 5 links per message. Our permalink guide explains the link format and who can open one.

The script's post in Slack: the list of ten links, followed by preview cards for incident notes 1 to 5 only

Which way to pick

WaySteps for 10 messagesKeeps a link to the sourceShows the full text
Forward one by one10 dialogsyesyes, 10 posts
Forward the thread parent1 dialogyesreplies open from the link
Drag-select and copy1 drag and pastenoyes, plus time stamps
Script with permalinks1 runyesfirst 5 as cards

For a single message, quoting it is another option when you want to reply to it in a new place.

Always Active

Stop Jiggling Your Mouse.

Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.

Related Articles

Guide

Export a Slack Canvas to PDF or Markdown: What Works, Tested

Slack has no download or export button for canvases. We checked every menu on a test canvas, used Print canvas for PDF, and turned the API's HTML download into clean Markdown with a script we ran.

Slack Green Team
Guide

Send a Slack Message From PowerShell: Webhook, Bot Token and Files

Working PowerShell for Slack: Invoke-RestMethod to a webhook, chat.postMessage with a bot token, Block Kit, and a file upload. Every script was run in PowerShell 7.6.6 against a real Slack workspace, with its output.

Slack Green Team
Guide

Slack App Name Change: Why the Bot Name Does Not Update, Tested

We renamed a Slack app and its bot user eight times in a test workspace. Which names changed, how fast Slack showed them, the App Home edit that never reached Slack, and the exact validation messages.

Slack Green Team