[THUGS(red)]

Nulltongue

A hacker language hiding in plain UTF-8. Nulltongue is a monospace font and a constructed language that draws ordinary text as an alien syllabary and logograph set — the bytes never change, only what you see.

v0.3.0 live
incoming transmission

if you can read this, you either learned nulltongue or you pressed the button. to everyone else it is noise — and that was the whole idea.

nothing here is encrypted. it is the same plain text as the rest of the page, drawn in a different font. switch the font off and it is right there. most people never think to try.

why it exists

Nulltongue is KawaiiPantsu's. It did not start as a language; it started as an itch. He wanted a new, obfuscated way to read the terminal — a screen full of shell that a stranger glancing over his shoulder could not make sense of — and, from there, a way to talk in public. To post in an open channel, on a shared screen or on a conference slide, and have the message land with his community and his buddies while everybody else in the room saw decoration.

A substitution font would have done that on day one. It did not stay there. Every letter got a sound, the capitals got meanings, the sounds became words, the words needed a grammar, and the grammar needed a textbook to teach it. What came out the other end is a whole font and a whole language, called Nulltongue.

Be honest about what that buys you. Nulltongue is not rare and it is not hard to break — it ships with a dictionary, a course book and reading tests, so anyone who wants to learn it can, and anyone who inspects the underlying bytes reads the plain text immediately. It is visual obfuscation, not cryptography. But the average Joe on the train, on the stream or behind you in the queue will never be able to read it or understand what was said. That is exactly the bar it was built to clear.

how the script works
  • UTF-8 stays ordinary. No letter is remapped to a private-use codepoint; a is still U+0061. Only the drawing changes, so copy, paste, grep and search all keep working.
  • Lowercase is a syllabary. a–y are five sound families of five vowels each, plus z on its own as ZEN.
  • Uppercase is logographic. A–Z are not capital letters but concept signs from hacker vocabulary.
  • Terminal-safe. Every printable ASCII cell keeps one fixed width, and box drawing, arrows and Braille are left alone, so TUIs never shift.

Lowercase syllabary

family A E I O U
Z a · ZA b · ZE c · ZI d · ZO e · ZU
K f · KA g · KE h · KI i · KO j · KU
R k · RA l · RE m · RI n · RO o · RU
T p · TA q · TE r · TI s · TO t · TU
SH u · SHA v · SHE w · SHI x · SHO y · SHU
ZEN z · ZEN a syllable, the root for unknown/hidden, or a marker

Uppercase logographs

  • A · system
  • B · user
  • C · file
  • D · network
  • E · execute
  • F · read
  • G · write
  • H · process
  • I · memory
  • J · machine
  • K · data
  • L · security
  • M · power
  • N · time
  • O · location
  • P · command
  • Q · control
  • R · interface
  • S · logic
  • T · terminal
  • U · virtual
  • V · hardware
  • W · software
  • X · encrypt
  • Y · decrypt
  • Z · unknown
language mode

Written as a language, Nulltongue has its own words and a subject–verb–object grammar: ka is I, ke is you, nul negates, qir? makes a question. This exchange is from the course book:

A
ke tora vekta qir? Do you open the terminal?
B
sai. tal ka tora vekta. Yes. Now I open the terminal.
A
ke shera sek kesh qir? Do you read the private file?
B
nul. ka shera sora vor nara. No. I read data from the network.
visual mode — user@void

As a terminal font it needs no translation at all: ordinary commands, ordinary output, unreadable to anyone reading over your shoulder.

user@void:~$ git status
On branch main
nothing to commit, working tree clean
user@void:~$ sudo systemctl restart ssh
user@void:~$ printf "hello" | less