# Discord channel types, by enum value

> Every Discord channel type and its numeric enum value, from GUILD_TEXT (0) to GUILD_MEDIA (16), with what each one is actually for.

- Canonical: https://discordtools.blog/blog/discord-channel-types-reference
- Published: 2026-08-29
- Author: The Index desk
- Facts checked: 2026-09-01
- Sources:
  - Discord developer docs — Channel resource (https://docs.discord.com/developers/resources/channel) — checked 2026-09-01
  - Discord developer docs — Guild resource (https://docs.discord.com/developers/resources/guild) — checked 2026-09-01
- Publication: The Index, an independent site not affiliated with Discord Inc.

---
Discord's channel model is a single numeric `type` field on every channel object. Most tooling
problems with channels trace back to code that assumed the set was smaller than it is.

## The full enum

| Value | Name | What it is |
| ----- | ---- | ---------- |
| 0 | `GUILD_TEXT` | An ordinary server text channel |
| 1 | `DM` | A direct message between two users |
| 2 | `GUILD_VOICE` | A voice channel |
| 3 | `GROUP_DM` | A direct message between several users |
| 4 | `GUILD_CATEGORY` | An organisational category, holding up to 50 channels |
| 5 | `GUILD_ANNOUNCEMENT` | A channel other servers can follow and crosspost from |
| 10 | `ANNOUNCEMENT_THREAD` | A thread inside an announcement channel |
| 11 | `PUBLIC_THREAD` | A thread inside a text or forum channel |
| 12 | `PRIVATE_THREAD` | A thread restricted by invitation or permission |
| 13 | `GUILD_STAGE_VOICE` | A voice channel with speakers and an audience |
| 14 | `GUILD_DIRECTORY` | A channel in a hub listing servers |
| 15 | `GUILD_FORUM` | A channel that contains only threads |
| 16 | `GUILD_MEDIA` | Like a forum, presented as a gallery |

Values 6 through 9 are absent. They were used by channel kinds Discord has since removed, and the
gap is permanent — the enum is a registry, not a sequence.

## Where this bites in practice

**Threads are channels.** A moderation bot that logs deletions by iterating text channels and
filtering `type === 0` will not see a single thread. Since forum channels contain *nothing but*
threads, that bot is blind to whole sections of a modern server. The correct filter is a set:
types 0, 5, 11, 12 and 10 all carry messages.

**Categories cap at 50 channels.** That is the real constraint behind "we ran out of room in
Support" — not a server-wide limit but a per-category one. A server that organises by category
and grows past fifty channels in one of them has to split the category, which changes channel
ordering and any permission that was inherited from it.

**Permission inheritance runs through the category.** A channel's effective permissions are the
category's overwrites combined with its own, so moving a channel between categories silently
changes who can see it. This is the single most common cause of "a channel disappeared for
everyone but staff" after a reorganisation.

## Choosing between forum and media

Both hold only threads. The difference is presentation: a forum lists posts with their titles and
reply counts, a media channel shows the first attachment of each post as a tile. Forums suit
question-and-answer and support workflows where the title is the unit of meaning; media channels
suit galleries where the image is. Neither supports ordinary messages at the channel root, which
is why a bot that posts a plain message to a forum ID gets an error rather than a post.