---
title: "Languages & Dictionaries"
description: "Choose bundled English or build a detector from explicit language packs."
---

> Documentation Index
> Fetch the complete documentation index at: https://profanity-kit.up2dul.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Languages & Dictionaries

Profanity Kit separates its detector engine from language dictionaries. Choose
the entry point based on who should control the language data.

English and Indonesian are available as built-in language packs today. You can
use either independently, combine both for multilingual input, or provide a
custom pack for another language or community.

Each pack exposes its own data version. Packs version independently from the
npm package and from one another; a version changes when that pack's reviewed
word data or curation policy changes.

## Available languages

| Language   | Import                       |
| ---------- | ---------------------------- |
| English    | `profanity-kit/languages/en` |
| Indonesian | `profanity-kit/languages/id` |

## Choose an entry point

| Import               | Dictionaries               | Best for                                                          |
| -------------------- | -------------------------- | ----------------------------------------------------------------- |
| `profanity-kit`      | English included           | English-only applications and shortest setup                      |
| `profanity-kit/core` | None; `languages` required | Non-English, multilingual, custom-pack, and bundle-conscious apps |

## Use bundled English

The root entry wraps core with the English pack. It does not accept a
`languages` option.

```ts
import { createDetector } from "profanity-kit";

const detector = createDetector();
detector.check("that is shit"); // => true
detector.check("dasar goblok"); // => false
```

Its type is `ProfanityDetector<"en">`.

## Select one language

Import the dictionary-free core entry and a pack. `languages` must be a
non-empty array.

```ts
import { createDetector } from "profanity-kit/core";
import { indonesian } from "profanity-kit/languages/id";

const detector = createDetector({ languages: [indonesian] });
detector.check("dasar goblok"); // => true
detector.check("that is shit"); // => false
```

Its type is `ProfanityDetector<"id">`.

## Combine languages

Pass multiple packs when input can contain multiple languages. Literal pack
codes remain available in match result types.

```ts
import { createDetector } from "profanity-kit/core";
import { english } from "profanity-kit/languages/en";
import { indonesian } from "profanity-kit/languages/id";

const detector = createDetector({
  languages: [english, indonesian],
});

detector.check("shit"); // => true
detector.check("goblok"); // => true
detector.filter("shit dan goblok"); // => "**** dan ******"
```

The inferred type is `ProfanityDetector<"en" | "id">`. When the same
normalized word occurs in several active packs, its match lists every pack.

## Import only what you use

Core includes the engine but no words. Packs use separate module imports:

```ts
import { english } from "profanity-kit/languages/en";
import { indonesian } from "profanity-kit/languages/id";
```

This gives bundlers a structural opportunity to exclude unused dictionaries.
Choose the root entry for English convenience and core when dictionary
selection or bundle composition should be explicit.

You can also supply a custom [`LanguagePack`](/api/types#languagepack).
See [Customization](/guides/customization#create-a-custom-language-pack)
for a complete example.

## More languages

More built-in language packs are planned, but there is no committed language
list or release schedule. Until a built-in pack is available, applications can
provide a custom language pack through the same core API.

Native speakers and community reviewers are welcome to propose or contribute a
new built-in pack. Open a
[GitHub issue](https://github.com/up2dul/profanity-kit/issues) before beginning
substantial corpus work, then follow the
[contribution guide](https://github.com/up2dul/profanity-kit/blob/main/CONTRIBUTING.md#dictionary-contributions)
and
[dictionary review policy](https://github.com/up2dul/profanity-kit/blob/main/dictionaries/README.md).

Source: https://profanity-kit.up2dul.dev/core-concepts/languages/index.mdx
