Authentic is the only style built against a shot-by-shot reading of the film rather than a memory of it.
The original effect came from Simon Whiteley at Animal Logic. He scanned characters out of his Japanese wife's cookbooks. His line about it has been quoted for twenty five years: the code in The Matrix is made out of sushi recipes.
You cannot buy those scans. So this style was built the other direction, by reading the characters back off the film.
The 53 characters
Carl Newton published a frame-by-frame analysis of the opening sequence, isolating individual strings and tracking what each cell did. The inventory in Authentic was transcribed from that work and rebuilt in standard Unicode.
Thirty half-width katakana, all flipped horizontally. The kanji 日. Ten numerals, of which 2, 5 and 9 are flipped horizontally and 3 and 6 are flipped vertically. One Latin letter, Z. Eleven punctuation marks.
One detail in there is the tell. The vertical bar is the fullwidth character U+FF5C, not the ASCII pipe on your keyboard. It is a different width and it sits differently in the cell. Every knockoff uses the ASCII one.
The glyphs do not fall
This is the mechanic almost everything gets wrong.
Not falling. Not scrolling. Not a texture sliding down behind a mask.
New glyphs appearing below the ones already there.
Each character sits in a fixed cell and stays there. The illusion of descent comes entirely from where the next character lights up. Once you have seen it you cannot unsee it, and you will spot a fake Matrix wallpaper in about two seconds.
Authentic reproduces the rest of that behavior too. Strings begin with invisible characters above the top of the screen, so a string can arrive mid-flow instead of always starting at the first row. Deletion strings write invisible characters over existing ones and erase them. Roughly one in five strings carries a highlighted leader. All the cursors stammer together at random intervals, which is why the rain sometimes seems to catch its breath.
In the film, glyphs hold for three source frames at 25 fps, then cross dissolve over one frame, both old and new at half opacity. Authentic keeps that one-frame dissolve; each cell changes on its own clock, about every 2.2 seconds at the default cycle speed, instead of the film's lockstep bursts.
The numbers, if you want to check them
Every value below is the shipped default for this style. You can change all of them.
| Setting | Value | What it does |
|---|---|---|
| Rain model | authentic1999 | The film's lattice on the shared rain structure: full-column trails, three depth planes |
| Screen traversal | 6.7 s | One display height for the midground at the default speed, on any grid |
| Columns | 90 | Grid width at 1920 points; scales with display width |
| Animation speed | 0.75 | Global rate multiplier |
| Fall speed | 0.30 | Row advance multiplier |
| Raindrop length | 0.75 | Trail length, scaled to your screen height |
| Cycle speed | 0.01 | How often a settled glyph mutates: about every 2.2 seconds per cell |
| Bloom | 0.70 | Glow strength, with a 0.10 high pass so only bright cells glow |
| Cursor fraction | 0.20 | Share of strings with a highlighted leader |
| Cursor color | #E0FCD9 | Near-white leader, independent of the body palette |
| Dither | 0.03 | Breaks up banding in the dark greens |
| Scanlines | 0 | Off. The 1999 rain does not have them |
The palette
Four stops, mapped across cell brightness rather than applied as a flat tint. The hue drifts warmer as it brightens, the way the leaders in the title sequence go yellow-white. Most of the screen is the black end, which is why the bright cells read as bright.
The glyph file
The character set ships as a generated coverage resource, not a font. Each of the 53 characters gets an isolated 128 by 128 slice with its own eight level mip chain, so no character can bleed into its neighbor when the image scales down. Both numbers below are checked at build time.
Bytes 868,352
SHA-256 849f70891abb6d9b9b599277235df27152c7e2be40945319f1c9b14c5b6d9a2b
Rebuild swift scripts/generate-glyph-coverage.swift
On your display
Authentic renders natively at 3840 by 2160 and 5120 by 2880. It is not an upscaled 1080p layer, and the glyph atlas picks its mip level from the real backing scale, so the characters stay sharp on a 5K panel instead of going soft.
Refresh rate is handled separately from simulation rate, and that distinction matters. The rain advances on its own fixed schedule. Each frame the shader interpolates between the current simulation state and the one before it, so a 120 Hz display gets 120 smooth frames without the rain running twice as fast. Seeded output is byte identical at 15, 30, 60 and 120 fps.
On battery or under thermal pressure the app drops to 30 or 15 fps and turns bloom off. That is a deliberate backoff, not a bug, and you can watch it happen.
Common questions
How many characters are in the Matrix digital rain?
Authentic draws 53. That is 30 mirrored half-width katakana, the kanji 日, ten numerals, the letter Z, and eleven punctuation marks. Other styles in this app use different families, from 27 up to 135.
Do the glyphs actually fall?
No, and they never did. Each glyph stays in its cell while new ones appear below it. Anything that scrolls a texture downward is doing it wrong.
Is Authentic the same as Classic?
No. Classic runs the layered three-plane model with the 57 character Trilogy family and reads as the general franchise look. Authentic runs the same three depth planes on the film's own lattice with the 53 character 1999 family. If you want the specific opening sequence, this is the one.
Where the recipes went
Simon Whiteley's cookbook scans are not in this app, and they should not be. Nobody gets to license a photograph of someone's wife's recipe books.
What is here is his character list, read back off the film one frame at a time, then redrawn from two fonts that ship with macOS.
The recipes are still in there. Somebody just had to transcribe them first.