Beinecke MS 408 · unknown script · early 15th century · working notes, September–October 2026
The Voynich manuscript: tests of the language, cipher and meaningless-text hypotheses
A genuine early-15th-century book. No text was obtained, and no published decipherment survives blind testing. Statistical tests on the transliteration exclude plaintext and simple substitution, transposition or abjad renderings of eleven European languages. Real ciphers used in 15th-century Italy, measured the same way, look nothing like it. What remains is an encoding of rigid glyph groups (a verbose cipher) or structured meaningless text; the evidence leans slightly to meaningless text.
Beinecke MS 408: a genuine early-15th-century codex, vellum radiocarbon-dated 1404–1438, with provenance from Prague c.1600. Modern forgery is excluded.
How it was tried
Not a decipherment: five literature sweeps and six computational tests on the ZL transliteration against natural-language corpora and hoax generators, each re-run by a separate agent.
Ruled out
Plaintext, one-to-one substitution, transposition, abjad and null-padded renderings of eleven European languages. Character entropy sits at least 1.0 bit below the natural-language floor in raw EVA.
Still live
A verbose or slot-template encoding versus meaningless generation by copy-and-modify; every statistic that separates Voynichese from language is reproduced by a member of each class.
Judgement
Roughly even, about 45:50, the remainder on an unenciphered exotic language.
01 The question and the method
This is not a decipherment. The question was whether the text is meaningless, enciphered or a language, and how far public data can push that in one session. Five literature sweeps, one per hypothesis or evidence class, produced SOURCES.md. Six computational tests, a1 to a6, ran on the ZL transliteration against natural-language corpora and implemented hoax generators. A separate agent re-ran every test adversarially (v_a1 to v_a6) and corrected several; corrected figures are quoted. Two baseline scripts written before the agents ran reproduce the a1 and a2 headlines: h2 of 2.32 bits in raw EVA without spaces, Zipf slope −1.04, adjacent repeats 0.81%.
October 2026 update. Four follow-up analyses written in September but never folded into this page are now in it, each re-run and checked: v_b1 to v_b3 by separate agents, v_b4 by its September checking script, which had never been run: b1 re-segmentation (section 02), b2 long-range and page-level structure (section 08), b3 a fixed battery of 37 items run on every candidate generator (section 06), b4 higher-order entropies and intervals (section 03). Three new analyses answer points raised by RBA’s post “Not deciphering the Voynich manuscript” (22 September 2026) and a reader’s note on it: c1 adds constructed languages, the lowest-entropy natural languages and Markov chains (sections 03, 04, 06); c3 measures real 15th-century ciphertexts from this project’s own targets (section 07); c2 draws the charts. Every September number was reproduced from fresh downloads of the same corpora; the Italian control had to be re-anchored, since its source file had been rebuilt in a different order (section 13).
(S) marks a number computed this session by a named script; (L) one quoted from the literature, with source and year. Judgement carries an asterisk.
Data (S). ZL3b-n, the Zandbergen–Landini EVA transliteration (voynich.nu, 13 May 2025), paragraph text only: 34,116 tokens after dropping words with unread or extended-EVA glyphs, about 10,750 in Currier A and 22,900 in B, 7,236 word types. Cross-checked on RF1b-er, IT2a, GC2a (v101) and CD2a (Currier). The 2,463 uncertain spaces were treated as breaks; joining them changes nothing material (v_a2). Language controls are single Gutenberg books and an OCR’d 16th-century Italian corpus; since October also Bibles in low-entropy languages, Tatoeba sentences in constructed languages, and real 15th-century ciphertexts (sections 03 and 07). Entropies are plug-in; Miller–Madow moves h2 by at most 0.007.
02 Strongest counterargument first
Every character statistic assumes the transliteration, and that EVA spaces mark plaintext units. Latin re-segmented after every e, s and m moves 60% of the way to Voynichese slot rigidity, and Latin cut into vowel-final syllables is more rigid than Voynichese at equal length (S: v_a3). The exclusion therefore covers word-boundary-preserving encodings of eleven languages in modern orthography.
Tested since (S: b1, v_b1). Joining the 2,458 uncertain spaces lengthens words by 0.4 glyph and leaves h2 unchanged to the third decimal. Latin and Italian written one syllable per token do not reproduce Voynichese: ordinary syllables give h2 of 2.83 to 2.99 with the space counted, against 2.11, and at every token length from two to five glyphs they are 1.6 to 8 times less rigid than merged Voynichese. Syllables trimmed to consonant plus vowel do hit h2 2.05 to 2.12, but that is the shape of the token, not the language: a random generator of C, V and CV tokens gives 2.10 to 2.16, and such texts have about 100 word types and 1–6% hapax. What stays open is glyph groups spelling syllables inside word-sized tokens, which is hypothesis (a) in section 10, not a segmentation artefact.
Second, the verbose control that matches raw EVA on h1, h2 and their ratio at once produces words 2.3 times too long, 11.52 symbols against 5.07, while carrying Latin word entropy (S: v_a1). That refutes a letter-level verbose cipher of whole Latin words. Both points narrow the verdict. Neither overturns it.
03 Character level
The firmest result is conditional character entropy h2, the uncertainty of a glyph given the one before it. Bennett (1976) put Voynichese at 2.22 bits against 3.01 to 3.37 for European languages (L); Lindemann & Bowern (2021) found it below all 311 language samples in their Wikipedia corpus (L). The gap survives glyph merging and the Currier and v101 alphabets. All rows (S), no spaces, a1, v_a1 and v_a5.
text
h1
h2
h1−h2
h2/h1
mean word length
ZL raw EVA, Currier A
3.832
2.353
1.479
0.614
4.98
ZL raw EVA, Currier B
3.859
2.182
1.677
0.565
5.12
ZL raw EVA, all
3.865
2.311
1.554
0.598
5.07
ZL merged (benches, i/e groups, aiin, qo)
4.039
2.870
1.170
0.710
3.7–3.9
GC v101 (68 symbols)
4.144
2.893
1.25
0.698
3.7–4.0
Currier CD2a (35 symbols)
3.857
2.660
1.197
0.690
Latin, Aeneid
4.025
3.510
0.515
0.872
5.77
German (diacritics folded 3.335)
4.160
3.391
0.769
0.815
4.88
Range of 11 languages (floor 3.32 folded)
3.94–4.52
3.32–3.88
0.49–0.77
0.82–0.88
4.2–6.6
Latin, vowels removed
3.659
3.515
0.144
0.961
3.11
Verbose cipher of Latin, every letter 2–3 symbols, 24 symbols
3.901
2.325
1.576
0.596
11.52
Verbose cipher, 8 letters kept single
4.102
2.916
1.186
0.711
7.64
Raw EVA gives 2.18 to 2.35 bits; ZL merged, v101 and Currier give 2.66 to 2.89; the eleven-language floor is 3.32 with diacritics folded. Any transposition of Latin gives at least 3.44. Vowel deletion leaves Latin at 3.52 with h2/h1 of 0.961, the wrong direction for an abjad.
Two conventions, and the lowest languages anywhere
The table leaves the space out. Lindemann & Bowern (2021) count it as a character, which lowers every h2. Measured their way, the ZL text gives 2.117 in raw EVA and 2.509 with merged glyphs, against their 2.114 for EVA (“Full Maximal”) and 2.475 for their Currier-style merge (“Minimal”) (S: c1; L). The two sets of figures agree once the convention is matched; they must not be mixed. Their appendix gives h2 and alphabet size for 311 Wikipedia samples, the lowest being Hawaiian at 2.765, then Venda, Tswana, Min Dong and Tahitian (L). To test the low end directly, c1 measured the same way six transliterations of the manuscript, the eleven European languages, public-domain Bibles in Hawaiian (1868), Tongan, Māori, Setswana and Swahili, the Latin Vulgate as a same-genre control, and four constructed languages: Esperanto, Volapük, Lojban and Toki Pona. Every text was cut to the Voynich token count (S: c1).
Conditional character entropy, space counted, against alphabet size. Grey: Lindemann & Bowern’s Wikipedia samples with up to 80 characters (L). Coloured: measured here (S: c1). Hover a point for its values; the table below has the same numbers.
text (34,116 tokens each)
h2, space counted
alphabet
h2, no space
h2/h1, no space
Voynich, EVA: ZL / RF1b / Takahashi
2.117 / 2.137 / 2.129
26 / 25 / 22
2.311 / 2.333 / 2.329
0.598 / 0.603 / 0.603
Voynich, Currier CD2a
2.351
36
2.660
0.690
Voynich, ZL merged glyphs
2.509
40
2.870
0.710
Voynich, v101 GC2a
2.533
71
2.897
0.698
Toki Pona (Tatoeba)
2.334
15
2.675
0.751
Hawaiian, Bible 1868 spelling
2.589
21
2.850
0.853
Setswana / Māori / Tongan (Bible)
2.652 / 2.656 / 2.705
23 / 20 / 22
2.954 / 2.984 / 2.964
0.753 / 0.795 / 0.785
Hawaiian, Wikipedia (Lindemann & Bowern)
2.765
31
Lojban / Swahili / Volapük / Esperanto
2.977 / 2.980 / 3.091 / 3.108
25 / 25 / 28 / 29
3.475 / 3.103 / 3.359 / 3.441
0.828 / 0.786 / 0.818 / 0.834
Eleven European languages (Gutenberg; Italian from OCR’d letters)
3.164–3.489
22–41
3.392–3.870
0.815–0.876
Latin, Vulgate / Gutenberg
3.331 / 3.364
28 / 25
3.544 / 3.509
0.866 / 0.872
What changes. Raw EVA stays far outside: 0.47 bit below the lowest natural language measured (Hawaiian in its 1868 spelling, which, as Stallings noted against Bennett’s comparison, leaves out the glottal stop and vowel length) and 0.65 bit below Lindemann & Bowern’s floor. The merged transliterations do not. Currier, merged ZL and v101 sit 0.06 to 0.24 bit below Hawaiian 1868 with the space counted, and without it Hawaiian 1868 (2.850) is lower than merged ZL (2.870) and v101 (2.897). Toki Pona, a constructed language with fourteen letters and strict consonant–vowel syllables, is lower than every Voynich transliteration except the three EVA ones. The absolute h2 of Voynichese is therefore reachable by a meaningful text with a small alphabet and rigid syllables; it is an outlier in raw EVA, not in every transliteration (S: c1).
What does not change. At its own alphabet size Voynichese has no neighbour: among the natural and constructed languages whose alphabets are within a fifth of the transliteration’s size, the lowest is 0.47 bit above EVA, 0.41 above Currier, 0.33 above merged ZL and 0.54 above v101. On h2/h1 every Voynich transliteration (0.60 to 0.71 without the space) is below every natural language (0.75 and up). Toki Pona comes closest, 0.04 above merged ZL. The redundancy in Voynichese comes from a large alphabet used in a rigid order, not from a small alphabet (S: c1). And the languages that approach its h2 fail its word statistics outright: the Polynesian and Setswana texts have words of 3.1 to 3.8 letters against 5.07, a fifth to a half of its vocabulary growth (type–token ratio 0.04–0.09 against 0.21) and next-word predictability seven to nine times higher; Toki Pona has about 120 words in all (S: c1). Esperanto, Volapük and Lojban fall among the European languages, as RBA’s post found for Esperanto (h2 3.21 there, 3.11 here; section 06).
Higher orders and intervals (S: b4, v_b4). Resampling folios puts h2 at ±0.03 bit (raw EVA 2.28–2.34). The raw gap persists one order up: h3 is 2.07 against 2.89 to 3.04 for languages. The merged-glyph gap does not. It shrinks from 0.52 bit at h2 to 0.20 at h3, and by h4 the merged text (2.46) sits inside the language range (2.27–2.51), though h4 is poorly estimated at this length for every text. The redundancy is short-range, as rigid two- or three-glyph groups predict, so merged h2 should not be quoted as if the deficit held at every order. A and B differ in h2 well beyond folio sampling (permutation p = 0.0005). Across a word space, the last glyph of a word tells more about the first glyph of the next (0.17 bit above a shuffle) than in any language tested (0.03 to 0.07; French 0.13, from elided one-letter words). In Voynichese the space acts less like a word boundary than it does in those languages.
Where the redundancy sits. Inside words. Within-word h2 is 1.92 to 2.13 bits raw against 2.94 to 3.41 for languages. Mutual information between glyph and word position is 0.69 to 0.73 bits across ZL, Currier and v101 against 0.17 to 0.27; 21% to 31% of glyphs are locked to one word position against 0% to 8% of letters (S: a5, v_a5).
Pair merging. Greedy merging of frequent glyph pairs closes the h1−h2 gap only after about 40 merges, so an encoding of two- to three-glyph units drawn from 50 to 60 unit types is compatible with the character statistics and a plain letter cipher is not (S: a5). Greedy merging tests one heuristic, not the whole verbose class (S: v_a5).
Information budget. The word stream carries 425,468 bits, 12.47 bits per token, 0.82 times a Latin prose text of equal length under the same model (S: a5, v_a5).
04 Word level
At word level Voynichese looks like a language, as Landini (2001) and Reddy & Knight (2011) reported (L). Table (S), a2 and v_a2, 34,116 tokens.
corpus
Zipf slope, ranks 1–1000
hapax % of types
Heaps beta
top-word share
Voynich all
−1.040
69.7
0.710
2.25%
Voynich A / B
−0.994 / −1.068
72.2 / 68.6
0.743 / 0.679
4.27% / 2.13%
Latin (Aeneid)
−0.820
67.0
0.749
4.9%
German
−1.045
65.1
0.779
3.46%
English
−1.056
55.1
0.675
4.68%
Word-type entropy is 9.8 to 10.3 bits against 10.3 to 10.8 for Latin prose and 9.4 to 9.8 for Italian, French and German (S: v_a1). The low pooled top-word share is an A+B mixture effect (S: v_a2); against single-book samples the hapax rate is above every language (S: v_a5), though with the parsing defect of section 13 corrected it falls to 67.7%, inside that range (S: v_b1).
None of this discriminates, and the reason is mechanical. A Zipf-like rank–frequency curve appears whenever words are strings cut from a stream of characters with a boundary symbol (Miller 1957, the typing monkey; L). At equal size, 10,053 tokens, Voynichese has a slope of −0.99 and 72.5% hapax types. Glyphs drawn at random with the Voynich frequencies give −0.87; an order-1 character Markov chain trained on Latin gives −0.92; English and Italian give −1.07 and −0.94. An order-3 chain trained on Voynichese matches both numbers (−1.03, 72.2%) without containing a single word (S: c1, b3). The chart shows which corpora land within the bake-off’s tolerance of Voynichese (section 06).
Zipf slope (ranks 1–1000) and hapax share of word types, every corpus cut to 10,053 tokens, the size of the human-gibberish sample. Filled: within the bake-off tolerance of Voynichese (shaded band); hollow: outside it (S: c1, b3).
A correction. Until October this page said that Zipf and hapax “are reproduced by human gibberish (Gaskell & Bowern 2022)”. Measured here on their published sample, pooled from 38 writers, that is not so: slope −0.63 and 85% hapax types, because 38 people invent 38 vocabularies (S: b3). What Gaskell & Bowern showed is that individual gibberish samples fall close to Voynichese on most of their own metrics, character bias excepted (L). Generators (Rugg & Taylor 2016; Timm & Schinner 2020) and a hand cipher from Latin (Greshko 2025) do produce language-like Zipf (L), and so, at full length, does the Naibbe ciphertext run here (−0.92; S: b3).
Word length
Merged EVA word lengths (S: a2, v_a2):
corpus
mean
variance
variance / mean of (length−1)
Voynich all (raw EVA 5.07 / 3.73 / 0.92)
4.11
2.48
0.80
Voynich A
3.93
2.89
0.99
Voynich B
4.20
2.27
0.71
Aeneid alone / Confessions alone
4.97 /
1.04 / 1.74
Italian / German / English / Danish
4.53 / 4.99 / 4.23 / 4.67
6.52 / 7.04 / 5.41 / 7.40
1.85 / 1.77 / 1.67 / 2.02
The famous under-dispersion, “binomial word lengths”, is a Currier-B property. B has variance-to-mean 0.71, A has 0.99 and single-text Latin verse 1.04, so Currier A matches Latin verse and the binomial-fit contrast in a2 was a search-cap artefact. B and the pooled text stay far from the 1.67 to 2.02 of modern prose.
Word length is where the simplest generators fail. An order-1 Markov chain, which knows only the previous glyph, ends words at a constant rate and so gives a geometric length distribution (standard deviation 3.47 letters against 1.93); an order-3 chain trained on Voynichese reproduces the peaked shape (2.08), because the word grammar is short-range (S: c1).
Word-length distributions in EVA letters, 34,116 tokens each (S: c1). The Markov chains are trained on the ZL text; Latin is the Gutenberg sample.
05 Word grammar and repetition
Tiltman (1951), Stolfi (2000) and Zattera (2022) described a rigid positional grammar inside Voynichese words (L). Measured here as the fraction of glyph pairs whose order violates the single best glyph ordering, length-matched; a shuffle null gives 0.49. All rows (S): a3, a2, v_a2.
statistic
Voynich
Latin
Italian
German
English
Pair-order violations against the best glyph order, length-matched (shuffle null 0.49)
0.160 (v101 0.140)
0.363
0.318
0.278
0.308
Adjacent identical tokens within a line, % and observed:shuffled (0.82% counting pairs across line breaks)
Voynichese is 1.7 to 2.3 times more rigid than any tested language. The glyph order derived from the data with no assumptions, q, then p f sh, then ch, then o t k, then e ee, then d s a, then l r y, then g n iin m, is the Stolfi and Zandbergen layout recovered blind (S: a3).
Line position matters, as Currier (1976) said (L). The line-initial effect exceeds hexameter verse and is an order of magnitude above pseudo-lined prose; the line-final effect a2 reported collapses to V 0.07 to 0.16 once the final m and g allographs are removed (S: v_a2).
06 Self-citation and the generator bake-off
Timm (2014, 2016) argued that similar words cluster on the page, the fingerprint of copying an earlier word and modifying it; Timm & Schinner (2020) published an algorithm that does this (L). The test finds, for each token, the nearest earlier token on the same page within edit distance 1, with every corpus poured into the identical page and line skeleton. Two Rugg-style generators and a re-implemented autocopist ran through the same code. All rows (S), a4 and v_a4.
corpus
median distance
within 10 tokens
within-page shuffle
global shuffle
long tokens (5+) within 10
Voynich ZL
14
0.269
0.238
0.167
0.225
Latin (Aeneid)
41
0.035
0.034
0.030
0.006
English (Italian, German similar)
17
0.176
0.177
0.164
0.019
Danish (verse)
15
0.196
0.172
0.138
0.035
Autocopist (Timm–Schinner re-implementation)
13
0.329
0.275
0.079
0.257
Rugg grille
36
0.067
0.249
0.066
0.033
Rugg sorted table
34
0.329
0.162
0.112
0.341
Order-3 character Markov model trained on Voynichese
19
0.194
0.194
0.194
0.119
Sequential excess, real minus within-page shuffle, measures copying order: Voynich +0.031, Danish verse +0.024, autocopist +0.054, prose about zero. Page-vocabulary excess, real minus global shuffle: Voynich +0.102, languages at most +0.058, autocopist +0.250. For tokens of five or more glyphs the language baselines collapse to 0.035 or less while Voynichese stays at 0.225, but an order-3 character Markov model that copies nothing reaches 0.119: about half the long-token density is word-internal structure, not copying (S: v_a4).
The bake-off: one battery for every candidate
The first comparison (S: a4) used seven columns. The September follow-up b3 fixed a battery of 37 one-number items before scoring: character entropies, word length, vocabulary growth, adjacent repetition, self-citation, slot grammar, line position, long-range keyword information, word predictability and drift across the book. Every candidate was poured into the manuscript’s own pages and lines. An item counts as a match when it falls within 10% of the Voynich value, or within the spread between two runs of the autocopist where that is wider (S: b3). The October check reproduced every value and recomputed 20 items with independent code to within 0.2% (S: v_b3). It also corrected the wording. The battery cannot be called pre-registered: it and its results entered the repository together. The autocopist and the Naibbe cipher both fail Zipf, which b3 had said they matched. And the autocopist’s excess glyph entropy is 0.4 to 0.6 bit, not 1 bit. The October comparators from c1 went through the same code (S: c1).
Which of the 37 items each corpus matches (filled) at full length, 34,116 tokens; the letters are the battery’s item groups a–k. Hover a cell for the item. Gibberish is cycled four times to reach full length, so its vocabulary items are void here; the text compares it at equal size (S: b3, c1).
Results. As a calibration, the manuscript’s own Currier B pages, scored against the whole, match 34 of 37 items; the Currier A pages match 27. The best outside scores, 17, 22 and 25, belong to character Markov chains of order 1, 2 and 3 trained on Voynichese itself. Those are fits, not hypotheses. The order-3 chain reproduces every character and vocabulary item and fails everything above the word: adjacent repetition, self-citation, line-initial gallows, long-range keyword information, word predictability and drift (S: c1). Among real hypotheses the three Naibbe ciphertexts score best, 16 to 17. The Rugg sorted table and the Italian control score 14, Swahili and Esperanto 13, the Latin Vulgate 12, and every other language, conlang, generator and the human gibberish 6 to 10 (S: b3, c1).
What fails, by family (S: b3, v_b3, c1).
European languages: h2 and h3 are 0.7 to 1.3 bits too high, and positional lock is 0.26–0.35 against 0.64.
The low-entropy languages (Hawaiian, Tongan, Māori, Setswana) match positional lock, because every word ends in one of five vowels. But their words are 3.1 to 3.8 letters long, their vocabulary grows a fifth to half as fast, and the next word is predictable seven to nine times as often.
The autocopist has 0.4 to 0.6 bit too much glyph entropy and vocabulary growth too fast (type–token ratio 0.34–0.38 against 0.21). Its Zipf slope is too shallow, its gallows fall mid-line, and its long-range keyword peak overshoots (0.47 against 0.29).
The Rugg grille has an almost hapax-free vocabulary; the sorted table has 9% adjacent repeats.
The Naibbe cipher matches glyph entropy, word length, positional lock and glyph predictability. It fails Zipf (−0.92), hapax (41% against 70%), self-citation (0.96–0.98 against 1.13) and the line-initial gallows, and it has no long-range structure at all (0.003 bit against 0.29). The check traced that loss to the cipher, not the layout: Pliny’s plaintext carries 0.10 bit, the decrypted one- and two-letter units 0.02, the ciphertext 0.004 (S: v_b3).
Human gibberish has h2 of 3.9 bits and no slot grammar (lock 0.14). Writer by writer at equal size it is still out: h2 3.07 against 1.92, lock 0.32 against 0.68 (S: v_b3).
Caveats. On six items the 10% tolerance is tighter than Voynichese’s own sampling noise, though every candidate still misses them by 7 to 18 standard errors. Two items, the drift between the two halves of the book and the height of the long-range peak, reward the A+B mixture, which no single-regime generator could have: the Currier A and B pages each fail them alone. The battery’s gallows and merged-glyph items are defined on EVA and mean nothing for other alphabets (S: v_b3). The reading that survives is this. No family as built reproduces Voynichese. The glyph-level items favour a verbose cipher. Local repetition favours copy-and-modify. Long-range drift needs topical structure plus a change of regime between A and B, which neither supplies. A Naibbe ciphertext that switches plaintext halfway, Pliny then Dante, still drifts only 0.003 against 0.063, so a cipher account needs the tables themselves to change between A and B (S: v_b3).
RBA’s post
RBA’s post reaches the same character-level result from the same transliteration: h2 2.07 for Voynichese and 3.36 for Augustine’s Latin, against 2.12 and 3.33 to 3.36 here with the space counted (the post does not say which convention it uses; its values match this one). Three points differ.
Markov chains. The post’s order-1 and order-3 chains match Voynichese h2, which it reads as Voynichese behaving like a Markov chain. A chain trained on Voynichese reproduces its h2 by construction (2.114 to 2.117 here), so that comparison cannot discriminate; what does is the list above of items such a chain fails.
Zipf. The post’s exponent of 1.854 is reported as new. It appears to be the exponent of the word-frequency distribution (about 2 for languages) rather than the rank slope given here and by Landini (2001).
The neural network. Its recurrent network (GRU) finds that hiding an earlier look-alike word hurts prediction more in Voynichese (0.0055 nats per glyph) than in Latin or a Markov chain, and slightly less than in Timm’s copy generator. That is the self-citation signal of the table above, measured another way. The table shows that most of it survives shuffling the words within each page (0.238 of 0.269), and that the part depending on order (+0.031) is the size of Danish verse (+0.024). The post’s controls were prose Latin and Esperanto. A within-page shuffle of Voynichese, verse, and a formulaic genre such as recipes or herbals would separate copying from page vocabulary. That test is not run here (section 12).
Two generators built to pass, scored on items they never saw (b5, 28 October 2026)
The rules came first: b5_PREREG.md was committed before any generator code, and the tuned parameters were committed before scoring. Each candidate has five free parameters, tuned only on 17 fit items (character entropies, word length, vocabulary, glyph slots). It is then scored once on the other 20 held-out items (adjacent repeats, self-citation, line position, long range, predictability, page level, drift), with five seeds. Neither generator reads Voynich word types or counts. The bar is the real text disagreeing with itself: the Currier A pages alone match 15 of the 20 held-out items when scored against the whole text. Every analysis was first re-run on a corrected transliteration parse (drawing-interruption marks read as word breaks, ligature groups kept; 34,774 tokens). Headline values moved by less than 0.01 bit (S: b5).
candidate
fit items (of 17)
held-out, full text (of 20)
held-out, 10,053 tokens
C: verbose slot cipher of Pliny’s Latin (books in section order, one table per Currier language, nomenclator)
15–16
10.8 (9–13)
8.2
G: copy-and-modify with section-local sources and per-scribe habits
5–6
8.4 (6–11)
9.6
Timm & Schinner’s autocopist, as published
5–8
5–6
4–5
Voynich, Currier A pages alone (the bar)
15
15
19
Neither reproduces the held-out structure. The cipher fits the character and vocabulary statistics with a handful of parameters; the copy-and-modify family cannot, because its character entropy and word-length spread come from the inherited modification rules. Both fail, on every seed, the same three things: adjacent repeats; vocabulary shared by neighbouring pages (excess Jaccard 0.037 real, 0.011 cipher, 0.007 copy); and the drift between the first and second halves of the book (JSD 0.062 real, 0.003 cipher, 0.013 copy). Enciphering a topic-ordered Latin text also wipes out the long-range peak (0.045 bit against 0.31). This favours neither meaning nor nonsense. What it does is name the target: any account, cipher or hoax, has to produce those three page-level patterns. Results in results/b5.md.
07 Real ciphers of the period
The cipher hypotheses are usually argued from what 15th-century cryptography could have done: Alberti’s polyalphabet of 1467, nomenclators, Naibbe-style tables. This project has transcribed actual ciphertexts of the period, so c3 measures them directly. It takes every cipher passage of 250 signs or more transcribed sign by sign from the manuscript: Mantua 1428–30 (R1854), Siena’s file of letters in cipher (Concistoro 2308), the Sforza ciphers of 1446 (BnF italien 1583) and Buda 1490 (Sforzesco, Ungheria). Most write no word division, so h2 is measured without spaces. Plug-in h2 falls with sample length and rises with alphabet size, so each text is set against random stretches of Voynichese and of Latin of exactly its own length (S: c3).
Conditional entropy of real 15th-century ciphertexts (diamonds), of their plaintexts where read (squares), and of random stretches of Voynichese and Latin of the same length (dots: mean; bars: 5–95% of 300 stretches). Benedict XIII’s 1400 cipher is left out: its signs were re-created from the printed plaintext, not transcribed (S: c3).
ciphertext
date
system
signs / kinds
h2 cipher
h2 plaintext
Voynich, same length
Latin, same length
Siena no. 14
c. 1409–29
substitution, a few homophones
1,453 / 56
3.53
3.06
2.05
3.33
Mantua R1854, 9 Aug 1428
1428
homophonic, 13 nulls
1,802 / 53
3.89
3.27
2.07
3.36
Mantua R1854, 6 Nov 1428
1428
homophonic, nulls, name codes
893 / 55
3.51
2.99
2.00
3.24
Mantua R1854, Feb 1430
1430
homophonic, up to 4 signs a letter
1,736 / 47
3.80
3.31
2.09
3.36
Mantua R1854, 22 Apr 1428
1428
unread
261 / 28
2.85
1.77
2.79
Sforza, BnF it. 1583 ff. 68, 70
1446
signs with syllable signs, unread
404, 390 / 26, 31
3.01, 3.10
1.87, 1.86
2.99, 2.98
Siena nos. 7, 11
c. 1454, 1478
homophonic-looking, unread
363, 409 / 45, 44
2.78, 2.83
1.85, 1.89
2.95, 2.99
Buda, to Milan
1490
homophonic, syllable signs, nulls
690 / 75
3.25
3.01
1.97
3.18
Siena nos. 6 and 24
15th-century hand
unidentified, crossed signs
3,694 / 73
4.37
2.15
3.43
Siena nos. 20–23
undated
unidentified, superscript signs
4,931 / 86
3.87
2.16
3.45
Siena no. 25
undated
simple substitution
496 / 21
2.76
2.74
1.91
3.08
Every one of them sits 0.85 to 2.2 bits above Voynichese of the same length, and between 0.3 bit below and 0.9 bit above Latin of the same length. The ones below Latin are the short Siena pieces, which are Italian and of a few hundred signs only. Simple substitution keeps the plaintext’s h2 (Siena no. 25: 2.76 against 2.74). Homophones and nulls raise it, by 0.24 to 0.62 bit over the plaintext in the four read homophonic letters, because they are there to flatten frequencies. The texts with the most unusual systems, Siena nos. 6, 24 and 20–23, are the furthest from Voynichese. No cipher actually in use in Italy between 1409 and 1490 produces Voynich-like statistics. Hypothesis (a) therefore needs a system unlike anything the chanceries used: a verbose design such as Naibbe, which reproduces the glyph statistics but is a modern construction (S: c3, b3). The texts under 250 signs (Florence 1425, María 1435, Siena no. 4) are too short for a stable h2 and are listed in results/c3.md only.
08 Long-range structure, pages and pictures
The literature’s strongest case for meaning has been structure above the word: keywords that cluster over hundreds of words (Montemurro & Zanette 2013), neighbouring pages that resemble each other, and vocabulary that follows the pictures (L). b2 recomputed all three with scribe and quire held fixed, against Latin, English and Italian poured into the manuscript’s pages (S: b2, v_b2).
Long-range keyword information: how much more unevenly the words are spread over blocks of a given size than in the same text shuffled. This is the simplified form of Montemurro & Zanette’s measure used in the bake-off battery; the figures quoted in the text are b2’s full estimator, which gives the same ordering. Every text is 34,116 tokens in the manuscript’s layout (S: b3, c1).
Long-range information. Voynichese carries 0.27 bit per token, flat between about 400 and 800 tokens (two to five pages). Latin and English carry 0.11, the Italian letters 0.06, and shuffled Voynichese nothing. The words carrying it are five of the six Montemurro & Zanette listed (shedy, qokain, qokeedy, qokedy, daiin), all among the commonest words. The height measures heterogeneity, not language-likeness: a stretch of the same Latin book that runs from its last chapter into the editor’s notes gives 0.31, above Voynichese. Currier A alone (0.11) is inside the range of Latin stretches of its length; B alone (0.20) is above every one. The Naibbe cipher and the Markov chains have none; the autocopist has too much (S: b2, v_b2, b3).
Neighbouring pages. Adjacent pages are more alike than random pairs (ratio of mean distances 0.81), but a model with no page-to-page continuity at all, only the same mix of scribes, sections and page lengths, already gives 0.84. Against that baseline, Voynichese continuity across the book is smaller than in the Latin and English pours (0.025 against 0.07–0.09). Within one scribe and one section it is within the books’ range (0.06 against 0.04–0.08). Within a quire every text shows it. At each change of scribe it breaks completely (S: v_b2, correcting b2).
Pictures. Within a scribe, the illustration type predicts the frequent words: an excess of 0.088 bit per token (z about 15). That is 3.4 to 6 times what one book shows when cut into sections. But it is only 1.3 to 1.5 times what a compilation shows when each section is filled from a different work, and that compilation is the fair control for an illustrated compendium. The signal follows the gathering, not the drawing. Hand 1’s herbal pages bound inside the pharmaceutical quires read like the pharmaceutical pages around them (8 of 10). In the one quire where the same scribe drew six of each, the drawing type carries nothing (z 0.4), where a text that changed with the drawing would give z 4. With scribe and gathering both fixed, the section adds 0.003 bit (S: v_b2, correcting b2).
Clustering. Folios cluster by Currier language first, scribe second, section third. The section structure is as sharp as the change between different works, far sharper than drift inside one book (S: b2, v_b2).
None of the four separates meaningful text from generated text. What they show is variation by production campaign. The frequent words drift page by page within a scribe’s run, break at every change of scribe, and change between gatherings, while the drawing on a page adds nothing once its gathering is known. A text compiled or copied gathering by gathering would do that, and so would a generator re-set for each batch. They rule out a generator that draws every page independently from one distribution, or one that never changes regime. The “section-conditioned production” that b2 read into the picture result does not survive the check (S: v_b2).
09 Currier A and B
Currier (1976) found two statistical languages in the manuscript (L). What separates them (S: a6, v_a6):
statistic
A
B
Tokens ending -edy / containing ed
0.20% / 0.29%
17.34% / 20.84%
Containing cho / starting qo- / ending -ol
16.1 / 10.0 / 14.5%
2.7 / 17.7 / 7.1%
Glyph after ch: e / o
24.5 / 46.1%
60.1 / 10.1%
daiin per thousand tokens
42.5
13.0
Unsupervised clustering of 197 folios recovers Currier’s labels at 95.4% to 99.5%. A single -edy threshold separates them at 99.5% leave-one-out: A a spike, 112 of 114 folios below 2%, B a continuum from 3% to 42%; the same in IT2a. Parisel’s 2026 preprint reaches the same single-switch description independently (L).
Hand determines language. With Davis’s (2020) five hands from the IVTFF headers, H(language | hand) is 0.09 bits and 98.2% of lines are predicted from hand alone; the only mixed cell is hand 3 in the stars section. The scribe, not the subject matter, sets the language.
Vocabulary sharing, calibrated. Size-matched A against B gives Jaccard 0.147 and top-100 overlap 0.95, against 0.207 and 1.00 for two halves of A, 0.172 and 0.91 for two English novels, 0.116 and 0.67 for Danish against Norwegian. A word-final pattern moving from 0.2% to 17% has no parallel between books in one language but does between languages: French against Italian, final -o, 0.19% to 17.5% (S: v_a6).
Section words. Section-specific vocabulary exists, mean chi-square per token 0.654 against 0.121 shuffled and 0.40 for Italian, and persists within one scribe and one language. But the section words belong to the same sub-word families, qokain, qol, qokeedy, okeol, not to anything resembling content vocabulary (S: v_a6).
10 Hypothesis status
excluded
Plaintext or monoalphabetic substitution of the eleven tested languages: h2 gap at least 1.0 bit raw, at least 0.4 bit merged (S: a1, v_a1; L: Bennett 1976, Zandbergen, Lindemann & Bowern 2021).
Homophonic substitution with nulls and a nomenclator, the system of the Italian chanceries in 1409–1490: every real example measured sits 0.85 to 2.2 bits above Voynichese at the same length, and the homophonic ones above their own plaintext (S: c3).
Substitution plus vowel removal or conventional abbreviation (S: a1, a5; L: Lindemann & Bowern 2021).
Letter-level transposition of a real plaintext, including grille rearrangement (S: v_a5; L: Parisel 2026).
Single-glyph nulls as the source of the redundancy (S: a5).
Named decipherments: Cheshire 2019 (refuted by its reviewers), Hauer & Kondrak 2016 read as a decipherment (the authors’ own caveat), Bax 2014, Gibbs 2017, Ardic, Gladyseva 2023, Schechter 2025 and the 2025–2026 LLM-assisted readings: no reproducible key, none survives blind application (L).
Modern forgery (L: radiocarbon, ink, provenance).
disfavoured*
An unenciphered exotic language. The closest languages on h2 are Hawaiian in its 1868 spelling, Setswana and Māori, at 2.59 to 2.66 with the space counted. They come within 0.08 to 0.15 bit of the merged transliteration and match its positional lock. But at equal alphabet size the gap is 0.33 to 0.54 bit, and none reproduces its vocabulary growth, hapax rate or near-zero word predictability, which a one-to-one substitution would leave unchanged (S: c1). The texts are Bibles, a repetitive genre; that caveat cuts against the hapax and vocabulary comparisons, not the entropy ones.
A constructed language with meaning written word by word. Esperanto, Volapük and Lojban fall among the European languages. Toki Pona goes below merged Voynichese on h2, but with about 120 words in all (S: c1). A designed language of the a priori kind, Friedman’s guess, was not tested; none of that age survives as running text of usable length.
A real language under a non-word segmentation, for Latin and Italian: syllable-per-token writing reaches Voynich h2 only when trimmed to bare consonant–vowel units, which a random generator does as well, and fails every word statistic (S: b1, v_b1). Glyph groups spelling syllables inside word-sized tokens remain part of (a).
Rugg’s table-and-grille as the mechanism: Cardan grilles date from about 1550 against 1404–1438 vellum, the special roles of f and p cannot arise from the table (L: Zandbergen 2021), and the session’s grilles fail Zipf and hapax (S: a4).
Free-edit self-citation as implemented here: it over-produces locality and vocabulary and under-produces character redundancy, and matches 9 of the 37 battery items (S: a4, v_a4, b3; section 06).
Dee and Kelly glossolalia (L: Daruka 2020), which conflicts with the vellum date.
live
(a) A verbose or slot-template cipher of short units, or a nomenclator built that way. Compatible with sections 03, 05 and 09 and with a hand-executable design that reproduces the glyph statistics (L: Greshko 2025, the Naibbe cipher; Bowern & Gaskell 2022). It must also meet the word-length constraint (verbose controls give 7.6 to 11.5 symbols; S: v_a1), the near-zero token-to-token predictability (L: Rozanova & Temerev 2026, preprint) and the line-initial effect (S: v_a2). The one worked example, Naibbe, matches 17 of 37 battery items. It fails Zipf, hapax and self-citation and has no long-range structure; it would need its tables to change between A and B (S: b3, v_b3). Nothing like it is attested among the period’s real ciphers (section 07).
(b) Slot-preserving copy-and-modify generation (L: Timm & Schinner 2020, 2023; Timm 2026). The slot grammar is an input to that model, not a product (S: a3). The one implementation run at manuscript length, a re-implementation of the autocopist, matches 9 of 37 items: too much glyph entropy, too fast a vocabulary, too shallow a Zipf slope, too high a long-range peak. The family survives only with a tighter glyph grammar and a source that drifts page by page and changes regime between A and B (S: b3, v_b3, b2).
Judgement*: the October additions narrow both live hypotheses without separating them, and the September balance, about 45:50, stands.
11 What the physical evidence adds
All (L). Radiocarbon on four folios: 1404–1438 (Hodgins, University of Arizona, 2009). Iron-gall ink and period pigments throughout (McCrone 2009; Yale 2014). Five hands, three writing 188 of the 227 pages, share one writing system (Davis 2020). Romance-dialect month names and a German-hand note on f116v put it in German- and French/Occitan-speaking hands within decades. Multispectral images of ten folios (taken 2014, released 2024) recovered an erased alphabet trial on f1r and Tepenecz’s ex libris, not new Voynichese. Provenance runs from Prague c.1600 through Baresch (1639), Marci (1665) and Kircher to 1912.
The consequence is symmetric. A meaningless-text account must be a 1420s production on fresh calfskin by several collaborating scribes who kept one slot grammar and one A/B switch consistent across 200-plus pages, a cost no statistic addresses. A cipher account must explain why the scribe rather than the subject matter sets the language (section 09).
12 What would settle the rest
Done since September: the battery bake-off (section 06, b3 and c1), the pre-registered generator round b5 (section 06), illustration-to-text information and page adjacency (section 08, b2), re-tokenisation and syllabic Latin and Italian (section 02, b1), and real period ciphers (section 07, c3). Still open:
A generator that produces the page-level patterns. Attempted on 28 October (b5, section 06): a verbose cipher of Latin and a drifting copy-and-modify generator, each tuned on 17 items, scored 10.8 and 8.4 of 20 held-out items, against a bar of 15. Both fail adjacent repeats, neighbouring-page vocabulary overlap and the A-to-B drift. The next round should pre-register mechanisms for exactly those three, with the same fit/held-out split.
Manuscript-length human gibberish written over weeks with illustrations and sections, the open test named by Gaskell & Bowern (2022) (L).
RBA’s masking test with the missing controls: Voynichese shuffled within each page, verse, a formulaic Latin herbal or recipe text, and the Naibbe ciphertext. This would show whether the look-alike effect is copying order or page vocabulary.
The f and p rules and the line-initial effect as battery items, defined so that they apply to any alphabet.
For any claimed key: blind application by a third party to five A and five B folios, with a shuffled-glyph control.
13 Checked, not checked, must verify
Checked. Every headline number in a1 to a6 was reproduced by an independent re-implementation, v_a1 to v_a6, including the Levenshtein code, entropy formulas, estimator bias, corpus contents and Gutenberg boilerplate. Robustness across ZL, RF1b, IT2a, GC2a and CD2a. Corrections applied: single-book samples; Latin word entropy from prose, not verse; a folded floor of 3.32; the rigidity ratio at 1.7 to 2.3; under-dispersion as a Currier-B property; the line-final effect as the m/g allograph; the A/B rule at 99.5% leave-one-out.
Checked in October. All corpora were downloaded again from the same sources (Project Gutenberg ids recorded in the results; voynich.nu ZL version of 13 May 2025, which parses to the committed file line for line), and b1 to b4 were re-run. Every value reproduced. The exception was the Italian control: its OCR source had been rebuilt with the documents in another order, so the September sample was re-anchored at its first words, after which every Italian value reproduced too. Separate agents re-implemented b1, b2 and b3 (v_b1 to v_b3, reports in results/), and v_b4 re-checked b4’s entropies, intervals and tests. Their corrections are in the text above: the bake-off was not pre-registered; the autocopist and Naibbe fail Zipf; the consonant–vowel syllable match is an artefact of token shape.
Resolved. Merged h2 appears as 2.870 and as 2.646 because two merge lists were used (a1’s, which also merges aiin, ain and qo, against a4’s shorter one); both leave out the space. The adjacent-repeat rate is 0.907% for pairs within a line and 0.82% for all consecutive pairs across line breaks (S: c1 reconciliation).
Known defect, not yet propagated. The parser behind every figure deletes the IVTFF <-> marks (a word interrupted by a drawing) without leaving a break, gluing 655 false compounds. It also drops 394 {..} ligature groups with their glyphs. Re-parsed with both fixed, h2 is unchanged (merged 2.635 to 2.646). Pair violation falls from 0.160 to 0.145, merged word-length variance from 2.48 to 2.12, and hapax from 69.5% to 67.7%. That last figure is inside the single-book language range, so the claim that Voynich hapax exceeds every language should not be relied on (S: v_b1). A full re-run on the corrected parse is the next step.
Not checked. Paywalled Cryptologia full texts (Rugg 2004, Schinner 2007, Timm & Schinner 2020 and 2023, Daruka 2020, Greshko 2025) were characterised from abstracts and secondary summaries. Davis’s hand assignments were taken from the IVTFF headers. RBA’s network was not re-run. Physical evidence beyond radiocarbon, ink, hands and the 1639 letter, including ink layering, pigment order and quire order, was not examined.
User must verify before quoting. The corpus choices: single Gutenberg books; an OCR Italian corpus with Latin passages; Bibles for the low-entropy languages; Tatoeba sentences, not running text, for Toki Pona, Lojban and Volapük. Also the glyph merge lists, the design of the 24-symbol verbose controls, the period-cipher transcriptions (several unread, two undated), and the labels excluded, disfavoured and live. All output is unvalidated until review.
14 Files and reproduction
Everything lives in targets/voynich/. fetch_corpora.py downloads every comparison text and transliteration into git-ignored folders (Gutenberg, eBible.org, Tatoeba, voynich.nu, which refuses plain requests without browser headers). It also freezes the Italian sample. parse_ivtff.py converts IVTFF to TSV; data/ZL3b-n.words.tsv is the parsed main transliteration. baseline.py and baseline2.py are the independent baselines. Tests: a1_charstats.py to a6_structure.py with re-runs v_a1.py to v_a6.py; b1_segmentation.py, b2_longrange.py, b3_bakeoff.py, b4_robustness.py with v_b1.py to v_b4.py; c1_comparators.py, c3_period.py (period data in data/period/, built by its _extract.py from this project’s target folders) and c2_charts.py, which writes the charts into this page. data/lb2021_wikipedia_h2.tsv is Lindemann & Bowern’s appendix table. results/ holds per-script JSON and Markdown. NOTES.md is the adjudication this page condenses; SOURCES.md the five literature sweeps.