Back to Blog
Guide

How to Find a Slack Channel ID (and Your Workspace ID)

Click the channel name and read the last line of the About tab: Channel ID, with a copy button. We also ran the API calls that fail when you pass a channel name instead of the ID, and the fix.

Slack Green Team
September 29, 2026
October 2, 2026
3 min read
Share:
slack tips
slack api
channels

To find a Slack channel ID, open the channel, click its name at the top, and look at the last line of the About tab. It reads "Channel ID: C0B7GGE8Q1Y" with a copy button next to it. Click the button and Slack shows "Copied!". The ID is also the last part of the channel's address in Slack in a browser: app.slack.com/client/T0B7JBCDKC1/C0B7GGE8Q1Y.

We checked every step below in the Slack web app on 29 September 2026, in a one-person test workspace, and ran the API calls with a real token. The IDs on this page are real ones from that workspace.

The About tab of the #social channel in Slack, with "Channel ID: C0B7GGE8Q1Y" and a copy button at the bottom, and the "Copied!" label after a click

Find the channel ID in the Slack app

  • Open the channel.
  • Click the channel name in the header, next to the # or the lock.
  • Stay on the About tab and scroll to the bottom.
  • Click the copy icon after "Channel ID".
  • Private channels show the ID in the same place. Our private test channel had the ID C0C5ARWS936.

    The browser address is the second place to look. In Slack on the web, every channel URL has the form https://app.slack.com/client/<workspace ID>/<channel ID>. The part after the last slash is the channel ID, and the part before it is the workspace ID.

    What a Slack channel ID looks like

    Every ID we read in two workspaces had 11 characters: one capital letter that names the type, then 10 capital letters and digits.

    KindExample from our testFirst letterLength
    Public channelC0B7GGE8Q1YC11
    Private channel, created 29 SeptemberC0C5ARWS936C11
    Direct messageD0B7D4VDCUDD11
    Workspace (team)T0B7JBCDKC1T11
    Member (user)U0B7L4YK420U11

    We also listed every conversation in our company workspace with conversations.list, counting prefixes only. It held 14 public channels, all C and 11 characters, and 12 direct messages, all D and 11 characters.

    Older guides say private channels start with G. Our new private channel started with C, and the API marked it "is_private": true. Slack's docs say older private channels and group DMs can still carry a G ID; we had none to check. To tell public from private, read is_private, not the first letter.

Never appear "away" on Slack again

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

Find your Slack workspace ID (team ID)

The workspace ID starts with T. You can read it in two places:

  • • In Slack on the web, it is the part of the URL after /client/: app.slack.com/client/T0B7JBCDKC1/....
  • • With the API, auth.test returns it as team_id. This is the response we got:
  • {
      "ok": true,
      "url": "https://slack-0yr1948.slack.com/",
      "team": "Slack",
      "user": "sieun",
      "team_id": "T0B7JBCDKC1",
      "user_id": "U0B7L4YK420",
      "is_enterprise_install": false
    }

    A member ID starts with U. Open someone's profile, click the three dots, and choose Copy member ID. You need it for mentions in bot messages, as in how to mention a user in a Slack webhook.

    A Slack profile with the three-dot menu open, showing Copy display name, View preferences, Account settings, View your files, Set yourself away, Copy member ID and Copy link to profile

    The API error you get with a channel name

    Most read methods want the ID and refuse a name. We sent the same channel four ways to conversations.info. The name, the name with #, the ID in lowercase and the full browser URL all got the same answer:

    {
      "ok": false,
      "error": "channel_not_found"
    }

    conversations.history with #social and conversations.join with social returned the same channel_not_found. Only the exact ID, C0B7GGE8Q1Y, worked. A message link also contains the channel ID, right after /archives/; the rest of that link is decoded in Slack message permalink, tested.

    chat.postMessage is the exception. It accepted both #social and social, posted the message, and returned "channel": "C0B7GGE8Q1Y" in the response. So a script that posts by name works, and the same script breaks the moment it reads history or adds a reaction. The ID in the chat.postMessage response is a free way to learn it.

    Get a channel ID from its name in code

    To go from name to ID, list the channels and match the name. This is the function we ran, using Slack's Node SDK (@slack/web-api):

    async function channelId(client, name) {
      name = name.replace(/^#/, "");
      let cursor;
      do {
        const res = await client.conversations.list({
          types: "public_channel,private_channel",
          exclude_archived: true,
          limit: 1000,
          cursor,
        });
        const hit = res.channels.find((c) => c.name === name);
        if (hit) return hit.id;
        cursor = res.response_metadata?.next_cursor;
      } while (cursor);
      return null;
    }

    Output in our workspace:

    channelId(client, "#social")             -> C0B7GGE8Q1Y
    channelId(client, "sg-huddle-test-0929") -> C0C5ARWS936
    channelId(client, "no-such-channel")     -> null

    conversations.list returns a private channel only when the token's user or bot is a member; our conversations.list test shows a bot token missing a private channel it was not added to. The reverse, ID to name, is one call: conversations.info with the ID returned "name": "social". Store the ID, not the name. We renamed our private test channel to sg-renamed-0929 with conversations.rename, and the response still carried C0C5ARWS936. Workflows that need the ID include sending a Slack message from GitHub Actions and reacting to a message with the API.

    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

    Slack Bot Scopes: The Scope Each API Method Needs, Measured on 44 Methods

    We gave a Slack bot one scope, called 44 common Web API methods, and read the needed field of every missing_scope error. Then we added the scopes and called them again. The table shows which scope clears each method.

    Slack Green Team
    Guide

    Slack File Size Limit: 1 GB Is Exactly 1,073,741,824 Bytes, Tested

    We uploaded files of 50 MB, exactly 1 GiB and 1 GiB plus one byte to Slack through its upload API. The limit is 1,073,741,824 bytes, and a failed upload can still leave a broken file behind.

    Slack Green Team
    Guide

    Slack Dark Mode: Where the Setting Is, and Which Custom Emoji Disappear

    Slack's dark mode is under Preferences > Appearance > Color Mode, with Light, Dark and System. We switched modes in Slack web with three test emoji and measured which ones vanish.

    Slack Green Team