> For the complete documentation index, see [llms.txt](https://docs.membercounter.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.membercounter.app/counters-reference/counters-list.md).

# All counters

Every counter the bot can put in a channel, what it shows, and which bot you need to run it.

A counter is one piece of live data inside a [template](/using-the-dashboard/template-editor.md). The bot replaces each counter with its current value every time it rewrites the channel, so a channel called `Members: 1204` is really a template with one Members counter in it. How the value looks is up to you. See [Formatting counters](/using-the-dashboard/customizing-counters.md).

You add counters in the template editor with **Add counter**, and type in the box to filter the list.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-3c0c5249a6584a190f8de92add2170c472e6fb18%2Feditor-add-counter-list.png?alt=media" alt="The Add counter picker"><figcaption><p>The <strong>Add counter</strong> picker, scrolled to the top</p></figcaption></figure>

## How to read the availability column

| Availability        | What it means                                                                                                                                                                                                                                              |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Every bot           | Works on the public bot, the legacy premium bot, a custom bot and a self-hosted bot, with no extra setup.                                                                                                                                                  |
| Custom bot          | Needs a [custom bot](/custom-bot/custom-bot.md) or a self-hosted bot. The legacy premium bot runs Twitch and YouTube, but not the finer Members filters, since it has no privileged intents. Nothing in this row works on the public "Member Counter" bot. |
| Self-hosted needs … | Extra keys you must put in `.env` when you run the bot yourself. See the [configuration reference](/self-hosting/configuration.md).                                                                                                                        |

Neither the public bot nor the legacy premium bot has privileged intents, so anything that needs to see individual members or their presence is limited on both. A [custom bot](/custom-bot/how-to-get-a-custom-bot.md) runs under your own token on our hosting with the intents enabled; [self-hosting](/self-hosting/self-hosting.md) is the free alternative on your own machine.

## Server

Counters that read the Discord server the channel is in.

| Counter                                                 | What it shows                                                                                                                               | Availability                                                                                                                                                                                                                                                          |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Members](/counters-reference/members.md)               | Member count, optionally filtered by online status, roles, account type and more                                                            | Every bot for **Any**, **Online**, **Online + Idle + DND**, **Offline** and **Count only banned members**. The **Idle**, **Do not disturb**, account type, role, game and voice filters need a custom bot or a self-hosted bot; the legacy premium bot cannot do them |
| [Roles](/counters-reference/roles.md)                   | How many roles the server has (to count the members who hold a role, use [Members](/counters-reference/members.md) with **Filter by role**) | Every bot                                                                                                                                                                                                                                                             |
| [Channels](/counters-reference/channels.md)             | How many channels the server has (categories are not counted), or how many are inside chosen categories                                     | Every bot                                                                                                                                                                                                                                                             |
| [Nitro Boosters](/counters-reference/nitro-boosters.md) | The number of Nitro boosters of the server                                                                                                  | Every bot                                                                                                                                                                                                                                                             |

On the public bot and on the legacy premium bot, **Online** and **Online + Idle + DND** return the same figure. Both read Discord's approximate presence count, which already includes idle and do-not-disturb members.

## Time

Counters that show a clock, a date or a countdown. A channel is rewritten every 5 or 10 minutes, so a clock is never to-the-second. Clock and Date also snap to the nearest 5 minutes, so their value moves in 5-minute steps. See [How counters update](/using-the-dashboard/how-counters-update.md).

| Counter                                       | What it shows                             | Availability |
| --------------------------------------------- | ----------------------------------------- | ------------ |
| [Clock](/counters-reference/clock.md)         | The current time in the timezone you pick | Every bot    |
| [Date](/counters-reference/date.md)           | The current date in the timezone you pick | Every bot    |
| [Countdown](/counters-reference/countdown.md) | The time left until a date you set        | Every bot    |

## External services

Counters that fetch a number from outside Discord. All of them cache their answer, so the value lags behind the source. Every counter page says for how long.

| Counter                                       | What it shows                                                                       | Availability                                                                                                        |
| --------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| [Twitch](/counters-reference/twitch.md)       | The follower count, live viewer count or channel name of a Twitch channel           | Custom bot. Self-hosted needs `TWITCH_CLIENT_ID`, `TWITCH_CLIENT_SECRET` and `DISCORD_BOT_INSTANCE_IS_PREMIUM=true` |
| [YouTube](/counters-reference/youtube.md)     | Subscriber count, video count, total views or the channel name of a YouTube channel | Custom bot. Self-hosted needs `YOUTUBE_API_KEY` and `DISCORD_BOT_INSTANCE_IS_PREMIUM=true`                          |
| [Reddit](/counters-reference/reddit.md)       | The title of a subreddit, its member count and how many members are online          | Every bot                                                                                                           |
| [Memerator](/counters-reference/memerator.md) | The follower count or meme count of a Memerator account                             | Every bot. Self-hosted needs `MEMERATOR_API_KEY`                                                                    |
| [Game](/counters-reference/game.md)           | The number of online players on a game server, for more than 320 games              | Every bot                                                                                                           |
| [HTTP](/counters-reference/http.md)           | Any value from a GET request to an endpoint you choose                              | Every bot                                                                                                           |

## Building blocks

Counters that shape values rather than fetch them. Each one accepts typed-in values as well as other counters nested inside it. See [Nested counters](/using-the-dashboard/nested-counters.md).

| Counter                                   | What it shows                                                                    | Availability |
| ----------------------------------------- | -------------------------------------------------------------------------------- | ------------ |
| [Math](/counters-reference/math.md)       | Addition, subtraction, multiplication, division or modulo over a list of numbers | Every bot    |
| [Number](/counters-reference/number.md)   | A number with formatting applied to it                                           | Every bot    |
| [Concat](/counters-reference/concat.md)   | Several strings joined into one                                                  | Every bot    |
| [Replace](/counters-reference/replace.md) | Text with parts of it replaced                                                   | Every bot    |

## Other

| Counter                                       | What it shows                                   | Availability |
| --------------------------------------------- | ----------------------------------------------- | ------------ |
| [Bot stats](/counters-reference/bot-stats.md) | How many servers and users the bot itself is in | Every bot    |

<details>

<summary>Technical details</summary>

* **Add counter** matches what you type against each counter's numeric id and its `keywords` string from the locale files (`apps/frontend/src/locales/en-US/main.json`), not against the name or the description shown in the row.
* A template stores each counter by its numeric `DataSourceId` (`packages/common/src/DataSource.ts`), and that number is also the middle part of the counter's Redis cache key, `1:<id>:<argument>`, where `1` is `BaseKeys.DataSourceCache`.
* The "Custom bot" rows are enforced in the evaluators. `Twitch.ts` and `YouTube.ts` assert `isPremium` and throw `BOT_IS_NOT_PREMIUM`, "The bot is not a premium version and lacks certain features needed for this counter." `members.ts` throws the same error for a filter the instance cannot serve, or `BOT_HAS_NO_ENOUGH_PRIVILEGED_INTENTS`, "The bot does not have enough privileged intents to use this counter.", when the instance is premium but the intent is off.
* The channel rewrite job is a cron: `0 */5 * * * *` on a premium instance, `0 */10 * * * *` otherwise (`apps/bot/src/jobs/updateChannels.ts`).
* Each counter in a template gets its own 60 seconds, nested counters included in their parent's. The parts are evaluated one after another, so a template with several counters can take longer overall. Past 60 seconds a counter fails with `EVALUATION_TIMEOUT`, "The evaluation took too long and timed out."
* Templates from the old bot were converted counter by counter by the transpiler in `packages/db/src/migrations-utils/1736974607752_Migration/counter-transpiler/counters/`, one file per legacy name.

</details>
