Since I lack domain expertise with fonts, this may be slop1

Token-space font compiler

font + tokenizer → distinguish tokens with equal widths or colors

Try it!

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.

Compile your own


TTF, OTF, WOFF or WOFF2



Lite mode produces a smaller font and sometimes compiles faster, but may make text slower to render.


Color modes use natural letter widths and colors embedded in the font. Alternating mode restarts at shaping-run boundaries. Consistent mode gives each token a stable color from a small palette; different tokens can share colors. Currently available for BPE text fonts; ctok and joined emoji are not supported in this variant. Try both color fonts.

Advanced mode


Noto supplies missing text characters and, by default, monochrome emoji. Your base font stays primary. Downloads only needed faces and compiles their artwork into the font. Coverage varies; complex-script shaping remains limited. Sources and licenses.



Applied when Use fallback fonts is enabled.

Font weights
Available weights are read from the selected font.
Font styles
Available styles are read from the selected font. Closing advanced mode keeps your selections.

Download font · CSS · Build report

Your files stay in this browser. Large tokenizers can take several minutes.

Use it in Discord with Vesktop

Theme font: DeepSeek V4.1 Flash × Inter


Leave blank to apply to all messages. We strongly recommend entering a specific em’s ID so only its messages use the token font.

Setup instructions
  1. To use gg sans, select gg sans (Discord) above, choose a tokenizer preset or upload, and click Compile font. The theme download always matches the font currently in the preview.
  2. Download the font and open the TTF in Font Book. Click Install. Install the compiled font, even if you already have ordinary gg sans.
  3. We strongly recommend entering a specific em’s Discord ID above; leaving it blank applies to all messages. Download the .theme.css file. To find an ID, enable Discord’s Settings → Advanced → Developer Mode, then right-click the user and choose Copy User ID.
  4. If you entered an ID, open Vesktop’s Settings → Vencord → Plugins and enable ThemeAttributes. Restart if prompted.
  5. Open Settings → Vencord → Themes → Local Themes → Open Themes Folder. Move the downloaded .theme.css file into that folder. Return to Themes, click Load Missing Themes if needed, and enable the theme.
  6. Fully quit Vesktop with ⌘Q and reopen it so it sees the installed font.

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.

Use it in Slack

Slack font: DeepSeek V4.1 Flash × Inter



Use the exact display name shown above each agent’s messages, or a Slack member ID such as U012345678. One per line. Only matching messages change.

Setup instructions
  1. Download the font above and install its TTF on the device where you read Slack.
  2. Enter the agents’ Slack display names or member IDs, then download the .user.js file.
  3. Import the file into a userscript manager in your browser, enable it, and reload web Slack.

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.

What works?

The listed presets use tokenizer-specific compiler paths. These include DeepSeek, OpenAI, Kimi, Qwen, GLM, Llama 3, Trinity and Laguna; Gemma and Gemini have tested 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.

In spacing mode, 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.

Color modes keep natural character widths and embed alternating or stable per-token colors in the font. They currently support BPE text; ctok and joined emoji are not supported in color mode. Color behavior and validation.

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.

Known discrepancies and experimental features

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.

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.

1 If you have more expertise in how fonts work, I encourage you to implement this project properly.