font + tokenizer → token-space font, where each token is equal width
The quick brown fox ate the load-bearing strawberry You have nothing to lose but your chains of thought I hope this helps the user gain empathy for the assistant
Type or paste your text above. Compiling a new font switches this preview to it.
Download font · CSS · Build report
Your files stay in this browser. Large tokenizers can take several minutes.
Theme font: DeepSeek V4.1 Flash × Inter
.theme.css file. To find an ID, enable Discord’s
Settings → Advanced → Developer Mode, then
right-click the user and choose Copy User ID.
.theme.css file into that
folder. Return to Themes, click
Load Missing Themes if needed, and enable the
theme.
Keep Vencord Location at its current setting. This is a theme, so no custom Vencord build or UserFonts plugin is needed. Disable older font themes for the same user if they conflict.
If messages look unchanged, check that the compiled font is installed and this theme is enabled. If targeting an ID, also check that ThemeAttributes is enabled and the ID is correct. Code blocks keep Discord’s normal monospace font. Extra token spacing defaults to zero; line height and word spacing follow Discord.
Slack font: DeepSeek V4.1 Flash × Inter
.user.js file.The userscript reads sender labels in the page and styles matching message text, including new messages and threads. It makes no network requests and does not modify message text. Code blocks keep a monospace font. If you compile another font, download and install that font and its newly generated userscript together. Disable an older Token Mono Slack script if it targets the same agent.
This works in web Slack in a browser with a userscript manager. Browser shaping runs and formatting spans can change token boundaries.
The listed presets use tokenizer-specific compiler paths. These include
DeepSeek, OpenAI, Kimi, Qwen, GLM, Llama 3, Trinity and Laguna; Gemma and
Gemini have experimental space-marker/byte-fallback support. ctok uses
a separate minimum-cost backend. Raw ByteLevel BPE is also accepted with
use_regex: false and add_prefix_space: false.
Uploaded pipelines must match a supported profile; arbitrary normalizers,
WordPiece and Unigram are not generally supported. Acceptance does not
imply exact tokenization for every input.
The output is a single TTF with the tokenizer built into its shaping rules. No tokenizer script is needed to display it. It uses your font’s default variation and character coverage. Missing characters may use missing-glyph outlines or system fallback unless you enable fallback fonts, which embeds selected fallback outlines in the same token font. Coverage still depends on the selected sources. Noto Emoji is the default emoji fallback; Mutant Standard is an optional color source with separate license requirements. The precompiled DeepSeek + Inter preview already includes Noto Emoji.
Within a supported shaping run, each emitted token occupies 3 em. Extra token spacing defaults to zero and is capped at 0.5 em. The generated CSS leaves word spacing and line height alone. Browser tab stops, hard line breaks and whitespace processing do not behave like ordinary token cells.
N.B. Browser shaping runs, line breaks, normalization and complex scripts can change the result. Supported horizontal pair kerning is retained, but contextual shaping is not universally preserved. This is a token font, not an exact whole-message token counter.
The latest whitespace audit compared 17,904 BPE checks across six available font binaries and 2,355 ctok cases against local tokenizer references. Browser checks covered 60 widths and 20 wrapping samples. These are targeted tests, not a guarantee for all text; failures and coverage/capacity limits remain in the reports.
[BPE limit] if exceeded. The new directed
whitespace audit reached that limit in 353 GLM and 354 Llama checks
out of 2,984 each; the other checks passed. Browser shaping,
source glyph coverage and formatting boundaries remain limitations.
[limit] on overflow. Long wrapped text can still render
slowly. Invisible characters such as zero-width space, word joiner,
BOM and soft hyphen can suppress word boundaries and add a token.
v3/v4.7 also have quote-framing and leading-space normalization errors.
Of 785 directed cases per version, v3 had 29 count/width and 45
semantic-only failures; v4.7 had 25 and 49; v4.8 had 16 and 8.
Ordinary whitespace and runs through 257 characters passed. Equal
counts alone can hide incorrect normalization. These failures remain
unfixed; passing ctok comparisons does not establish agreement with
Claude, and this audit made no Claude calls.
[NFC limit] beyond that. Browser and native compiler
Unicode versions can also differ for newly assigned characters.
pre-wrap or
break-spaces. At 24px, Hello world measured
216px rather than the whole-run 144px. Of 60 width comparisons, 43
matched, 15 differed because of tab/newline layout, and two exposed
that leading-space boundary. Tested trailing/repeated spaces, NBSP,
narrow NBSP and ideographic space matched whole-run widths.
The earlier duplicated-token wrap example did not repeat in the
checked 180px/320px screenshots, although wrapping can change
tokenization. This does not establish correctness in every browser.
See the whitespace audit, ctok reproductions, and detailed discrepancy tracker for test results, repaired issues and remaining limitations.
Compiled locally with Pyodide and fontTools. Inter license. Noto Emoji license. Optional Mutant Standard emoji by Caius Nocturne: CC BY-NC-SA 4.0.