π₯ Fast State-of-the-Art Tokenizers optimized for Research and Production
11,018
stars
2,000
commits
Rust
primary language
Sep 4, 2026
updated
Provides an implementation of today's most used tokenizers, with a focus on performance and versatility.
Performances can vary depending on hardware, but running the ~/bindings/python/benches/test_tiktoken.py should give the following on a g6 aws instance:
We provide bindings to the following languages (more to come!):
You can install from source using:
pip install git+https://github.com/huggingface/tokenizers.git#subdirectory=bindings/python
or install the released versions with
pip install tokenizers
Choose your model between Byte-Pair Encoding, WordPiece or Unigram and instantiate a tokenizer:
from tokenizers import Tokenizer
from tokenizers.models import BPE
tokenizer = Tokenizer(BPE())
You can customize how pre-tokenization (e.g., splitting into words) is done:
from tokenizers.pre_tokenizers import Whitespace
tokenizer.pre_tokenizer = Whitespace()
Then training your tokenizer on a set of files just takes two lines of codes:
from tokenizers.trainers import BpeTrainer
trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])
tokenizer.train(files=["wiki.train.raw", "wiki.valid.raw", "wiki.test.raw"], trainer=trainer)
Once your tokenizer is trained, encode any text with just one line:
output = tokenizer.encode("Hello, y'all! How are you π ?")
print(output.tokens)
# ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"]
Check the documentation or the quicktour to learn more!
(top 30 of 143)
Rust
76.9%
Python
20.8%
TypeScript
1.8%
π₯ Fast State-of-the-Art Tokenizers optimized for Research and Production
11,018
stars
2,000
commits
Rust
primary language
Sep 4, 2026
updated
Provides an implementation of today's most used tokenizers, with a focus on performance and versatility.
Performances can vary depending on hardware, but running the ~/bindings/python/benches/test_tiktoken.py should give the following on a g6 aws instance:
We provide bindings to the following languages (more to come!):
You can install from source using:
pip install git+https://github.com/huggingface/tokenizers.git#subdirectory=bindings/python
or install the released versions with
pip install tokenizers
Choose your model between Byte-Pair Encoding, WordPiece or Unigram and instantiate a tokenizer:
from tokenizers import Tokenizer
from tokenizers.models import BPE
tokenizer = Tokenizer(BPE())
You can customize how pre-tokenization (e.g., splitting into words) is done:
from tokenizers.pre_tokenizers import Whitespace
tokenizer.pre_tokenizer = Whitespace()
Then training your tokenizer on a set of files just takes two lines of codes:
from tokenizers.trainers import BpeTrainer
trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])
tokenizer.train(files=["wiki.train.raw", "wiki.valid.raw", "wiki.test.raw"], trainer=trainer)
Once your tokenizer is trained, encode any text with just one line:
output = tokenizer.encode("Hello, y'all! How are you π ?")
print(output.tokens)
# ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"]
Check the documentation or the quicktour to learn more!
(top 30 of 143)
Rust
76.9%
Python
20.8%
TypeScript
1.8%