> 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/using-the-dashboard/server-settings.md).

# Server settings

Set the locale, compact notation and custom digits used by every counter in your server.

**Server settings** holds the defaults every counter in the server starts from: **Use compact notation for numbers**, **Locale** and **Custom digits**.

Open it from the dashboard: pick your server, then click the gear next to the server name. You need **Manage Server** or **Administrator** in the Discord server to open it.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-3a556de8a50bdf30098a2bce22dbf34c39e13ddc%2Fsettings-server-overview.png?alt=media" alt="The Server settings page"><figcaption><p>The whole page: three settings and the buttons at the bottom.</p></figcaption></figure>

Any single counter can ignore these defaults. See [Formatting counters](/using-the-dashboard/customizing-counters.md).

## Use compact notation for numbers

A switch, **on by default**. Turn it off and every counter prints its number in full, unless the counter overrides it.

The examples under it are written in the locale you picked, and they always show the compact form, whatever the switch is set to.

| Example   | With locale `en-US` | With locale `de-DE` |
| --------- | ------------------- | ------------------- |
| `12300`   | `12K`               | `12.300`            |
| `439212`  | `439K`              | `439.212`           |
| `1500000` | `1.5M`              | `1,5 Mio.`          |

## Locale

A searchable combobox. **The default is `en-US`.**

The locale decides the group separator and decimal mark of a number, the suffix compact notation uses, and the words the [Clock](/counters-reference/clock.md) and [Date](/counters-reference/date.md) counters print, such as month and weekday names. With `en-US`, `15:30h` shows as `3:30 PM` and `439212` as `439K`; with `de-DE`, the same two show as `15:30` and `439.212`.

The list holds the full ISO locale set. You can also type a locale that is not listed and select what you typed.

{% hint style="warning" %}
**Type a real locale tag, such as `en-US`.** Nothing checks the value you save: a bad one makes counters that use compact notation write the literal text `ERROR!` into the channel on the next update, and breaks Clock and Date.

To recover, set **Locale** back to a valid tag and save. An empty field is not the default.
{% endhint %}

## Custom digits

Ten inputs, one per digit. Member Counter replaces each digit of a number with the one you provide, which is how you print a counter in custom emojis or in a unicode style font.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-cdabeddf6d6cd93f2d500a8e08695e1c408ca43e%2Fsettings-custom-digits.png?alt=media" alt="The Custom digits section with its accessibility warning"><figcaption><p>The ten digit inputs, under the screen reader warning.</p></figcaption></figure>

**The default is the plain digits `0` to `9`**, already typed into the inputs. An empty input falls back to the plain digit for that position, so clearing one changes nothing. You do not have to fill all ten.

Each input is a small editor, not a plain text box. You can format the text inside it and open the emoji picker from it. A digit can be a custom server emoji, a channel mention or a role mention. It does not accept counters.

{% hint style="danger" %}
People using a screen reader may hear something unintelligible instead of your digits, and screen readers are often used by people with visual disabilities. Do not customise any digit unless you are certain that nobody using a screen reader will have access to a counter.
{% endhint %}

Custom digits only reach the **topic** of a text or announcement channel. The **name** of a voice channel or a category never shows them, because Discord channel names cannot. See [Formatting counters](/using-the-dashboard/customizing-counters.md#what-is-never-formatted) and [Channel settings](/using-the-dashboard/channel-settings.md).

## Saving

Click **Save** when you are done. Autosave is off by default and is switched on from [your account](/using-the-dashboard/account.md). The browser warns you if you leave the page with unsaved changes.

Saving does not rewrite your channels. The bot applies the new settings the next time it refreshes them, so a channel keeps its old text until then. See [how counters update](/using-the-dashboard/how-counters-update.md).

## Reset settings

**Reset settings** opens a confirmation dialog first.

<figure><img src="https://1582170640-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lu2S5r7lKtu4IK5ucu9%2Fuploads%2Fgit-blob-7fdad36386a2c0e8b6fe8844373955468d269ad7%2Fsettings-reset-dialog.png?alt=media" alt="The Reset settings confirmation dialog"><figcaption><p>The Reset settings confirmation</p></figcaption></figure>

{% hint style="danger" %}
**Reset settings does more than the dialog says.** It wipes the whole server record and builds a new one from the defaults, and that takes every channel with it. You lose the three settings on this page, **every template you have written, in every channel**, and the **Enable template** switch on each of them. On an upgraded server it also removes the server upgrade, which cannot be recovered. There is no undo.

If you only want the format defaults back, set them by hand instead: **Locale** to `en-US`, **Use compact notation for numbers** on, and the ten digit inputs back to the plain digits `0` to `9`.
{% endhint %}

<details>

<summary>Technical details</summary>

* Stored defaults on the guild row: `locale "en-US"`, `compactNotation true`, `digits ["0" … "9"]` (`packages/db/prisma/schema.prisma`).
* Editing needs `canModify`: the Discord `Administrator` or `ManageGuild` bit on that server, or the staff permission `ManageGuilds`.
* The update mutation takes `digits` as exactly ten strings and never validates `locale`.
* The locale list comes from `iso-lang-codes`, and a term typed by the user is accepted as it is, so any string reaches the database (`apps/frontend/src/lib/locales.ts`).
* Compact notation is `new Intl.NumberFormat(locale, { notation: "compact" })` and runs only when compact notation is on; an invalid tag throws a `RangeError` there. The job stores the raw message in `LastTemplateComputeError` and writes `jobs.updateChannels.computeError`, the string `ERROR!`, into the channel; the dashboard shows "An unknown error occurred." because it cannot parse that message. Evaluators fall back to `en-US` only when the stored locale is shorter than two characters, so `en_US` reaches Clock and Date unchanged and breaks them.
* Digit substitution runs only for `GuildText` and `GuildAnnouncement` channels; compact notation runs before that gate, so names keep it.
* **Reset settings** deletes the guild row and recreates it with the schema defaults. Channels are a relation of the guild, so every channel row, template and **Enable template** switch goes with it.
* Saved values reach a channel on the next cron pass, `0 */10 * * * *` on the public bot and `0 */5 * * * *` otherwise, 20 guilds at a time.
* Autosave fires 10,000 ms after the last edit.
* Self-hosting: `DISCORD_BOT_INSTANCE_IS_PREMIUM` picks the 5-minute interval and is `true` in `.env.example`. No environment variable changes the defaults above.

</details>
