Tekst als PNG renderen om LLM-tokens te besparen

Plak markdown (of gewone tekst). Je krijgt een gepakte zwart-op-wit PNG terug — 5×8-cellen, oorspronkelijke newlines als ↵ zodat er geen lege rijen overblijven. Vision-modellen rekenen per image-tile, niet via de tokenizer, dus een pagina tool-output of een system prompt kost vaak minder tokens dan dezelfde bytes als tekst. Het canvas krimt tot de glyphs; de grote winst zit in lange, dichte blokken.

Ik schreef een take over waarom dit slim en dom tegelijk is.

De proxy die dit bekend maakte is pxpipe. Deze pagina is alleen de renderer, zodat je de truc kunt proberen zonder er een te installeren.

Voorbeeld

De PNG verschijnt hier.

Limieten: 28080 tekens, max 1568×728 px, 15 / 10 min per IP. Er wordt niets opgeslagen.

Het eerlijke deel

Dit is een prijshack, geen beter medium. Het model reconstrueert intentie vanaf een bitmap. Korte instructies gaan meestal goed. Nested API-schema's, hex-IDs van 12 tekens, en alles wat byte-exact moet blijven, hoort tekst te blijven. Anthropic kan het maas dichtdraaien. De pagina is hetzelfde gepakt als het Claude-profiel van pxpipe: 5×8 Spleen-cellen, 312 kolommen, oorspronkelijke newlines als ↵ zodat er geen lege rijen overblijven. pxpipe blijft de proxy — deze pagina is alleen de renderer.

API

POST markdown of JSON. De response is de PNG, met tokenschattingen in de headers.

curl -sS -X POST https://ninokroesen.nl/api/render-text-as-png \
  -H 'Content-Type: text/markdown' \
  --data-binary @notes.md \
  -o notes.png \
  -D -

JSON-body

curl -sS -X POST https://ninokroesen.nl/api/render-text-as-png \
  -H 'Content-Type: application/json' \
  -d '{"text":"# hello"}' \
  -o hello.png

Veelgestelde vragen

Scheelt dit echt tokens?

Alleen bij dichte blokken. Vision-modellen rekenen per image-tile, dus een pagina tool-output of een lang system prompt kost vaak minder tokens dan dezelfde bytes als tekst. Een korte alinea kost juist meer, want één tile heeft een minimumprijs. De pagina zet beide schattingen naast elkaar voor wat je plakt, dus je ziet het vooraf.

Kan ik het als API gebruiken?

Ja: POST markdown of JSON naar /api/render-text-as-png en de PNG komt terug, met tokenschattingen in de headers. De limiet is 28080 tekens, canvas tot 1568×728 px, 15 / 10 min per IP.

Waarom ziet de PNG eruit als een terminal?

Het is een 5×8-bitmapfont (Spleen) dat cel voor cel wordt getekend. Dichte glyphs betekenen minder image-tiles, en minder tiles is precies waar de truc winst oplevert.

Blijft de tekst in de PNG exact?

Nee. Het model leest een bitmap en reconstrueert wat het denkt dat er staat. Nested schema's, hex-IDs en alles wat byte-exact moet blijven, horen tekst te blijven — daarom staat die waarschuwing hierboven.

Meer uit het lab

Alle experimenten