A computational study of the Voynich Manuscript
Voynich Manuscript (Beinecke MS 408)
Updated 21.09.2026
New here? Start with “In plain words” → Browse all 213 leaves with image filters →
The Voynich Manuscript is a vellum codex radiocarbon-dated to 1404-1438, written in an unattested script and never convincingly read. This project asks a narrower, answerable question: not what the text says, but how it was made.
Principal findings
A workshop cipher
The text is generated, in every measured respect, by a Naibbe-class homophonic table cipher operated with workshop scribal habits (serial reuse, sandhi, anti-repetition, section-level table dialects). The first generative model to reproduce the statics, the homophone layer, the serial clustering, all four boundary signatures and the long-range burstiness at once - and it stays separable from a "gibberish generator" on pre-registered checks.
Read the paper → Paper IIThirty names per sign
The zodiac ring labels are two-letter sigla of closed per-sign name lists. A reproducible pipeline tests any external degree-name list - and rejects seven published classes, including one instructive false positive.
Read the paper →Preprints archived on Zenodo: Paper I - doi:10.5281/zenodo.21761191 · Paper II - doi:10.5281/zenodo.21761982
Where the reading stands
The mechanism is solved with high confidence; the manuscript is a meaningful text in a cipher that is breakable in class but whose key is lost. Reading it is no longer a problem of mechanism - it is a problem of finding one external, order-aligned referent. No word of plaintext is claimed here, and none is read: the guiding rule of the project is that a coincidence is not a decipherment.
What's new
- 27.10.2026 - the Armenian line: the idea that the physician Amirdovlat of Amasia had a part in the manuscript - four checks; no direct link found, one earlier exclusion lifted (#318-#320, #72c-#72d). Amirdovlat of Amasia was a 15th-century Armenian physician (born about 1420, in Constantinople from the late 1450s), author of medical books that name drugs in several languages. Radiocarbon dates the parchment of the manuscript (1404-1438), not the writing, so the idea stands as "not proven". Labels of f78r (#318): both begin alike (o k ch d); the reading "grape / cure" by simple substitution "sign = letter" fails in all 22 languages, and the Armenian key applied to the whole manuscript matches the dictionary no more often than a random permutation (10 vs 12). Doubled syllable (#319): in the manuscript labels words like olol, arar, otarar occur 1.66 times as often as in the text (p 0.0025); in the drug names of Ibn al-Baytar 2.47 times (p 0.0005), in Amirdovlat 1.81, in Latin glossaries inconsistently (1.58 and 0.88). The labels behave like an Eastern list of names - a feature of nomenclature, not a language and not an author. Abbreviations (#320): if Armenian text is written with ordinary scribal abbreviations (8.8 % of words), our key solver loses its power (share of the key recovered 0.43 - 0.21). So the earlier verdict "against Armenian" (#200) does not cover handwritten Armenian with abbreviations. Handwriting: the autograph of Amirdovlat is Matenadaran MS 8871 (1459); according to the critical edition (D. Karapetyan, 2014, open in the Matenadaran digital library) it is written in bolorgir on paper. Comparing sign silhouettes with 15th-century Armenian cursive (#72c) gave "no closer than Latin, Greek, Georgian", but a power control (#72d) showed that the measure does not recognise cursive even against itself and does not separate a Voynich page from Greek minuscule - #72c decides nothing. Bolorgir the measure recognises firmly, and the Voynich signs are no closer to it than the controls. Scans of the autograph have been requested. Still no readings.
- 27.10.2026 - the Zhang and Sheng measure (arXiv 2610.34499) on our model: words in a line of the manuscript are bound more weakly than in any table model - a new open defect (#317); no "article name" even with a shift (#316-b); numbers cannot be found without the key. Zhang and Sheng (25.10.2026) measure whether the same word pairs in a line recur in different parts of the book: 0.139-0.411 for 28 texts in 16 languages, 0.071 for the manuscript. We reimplemented the measure from its description (their line value is reproduced: 0.078) and tested our model under a preregistration: the manuscript 0.082, quimqu gibberish 0.106, our model 0.138 (0.112-0.156 on 20 fresh seeds) - the manuscript lies outside its range. The excess does not depend on the plaintext (shuffled Latin words 0.137, independent letters 0.148) and is not removed by switching off any of the model's five layers or by miscopying words: it comes from the writing "unit - word by tables" itself. So under our mechanism this measure is blind to language, and the manuscript's low value does not by itself argue against language. The recurrence of pairs across pages comes from the section dialect in the model (about zero without it; 0.094 in the manuscript). The herbal "article name": no repeat for the last word of the first line, nor on the other pages of the same bifolium (the test is sensitive to a repeat on 20 % of pages). Numbers: the detector finds Latin numerals only if word boundaries are restored with an F1 of at least 0.8; without the key and with unsupervised segmentation (0.62) it finds none, like the manuscript. Still no readings.
- 27.10.2026 - test #316: the first word of a herbal article does not recur in its text - no "article name" is seen. In 15th-century herbals an article begins with the name of the plant and repeats it in the text. Under a preregistration we checked whether the first word of a Voynich herbal page recurs lower on the same page more often than its frequency on other pages allows (128 pages). The null is 45 gibberish texts with the same page layout (the quimqu generator, open MIT code). There are no such repeats: an excess of -1.7 against +4.8 for gibberish (p 0.98), and +0.6 against +8.7 without the initial gallows (p 0.96). The test is sensitive: a single planted copy of the first word on 10 % of pages is detected in 96 % of cases. The first word is the most solitary word on its page: paragraph openings are written in rare forms. The name may still be written in the text with another spelling variant of the cipher or as an abbreviation - that can be checked only after the text is converted into cipher units. Still no readings.
- 24.10.2026 - a report of negative results is out on Zenodo: "Where the Key Is Not", doi:10.5281/zenodo.23607888; syllabic writing was tested and is not supported (#307). The key solver was checked on an honest bench: the model's noise was matched to the manuscript's rare words (6 % corrupted glyphs), and on that bench the solver recovers the model's Latin key on all four fresh seeds, while the manuscript stays at zero. By the same rule Latin and eight more languages are excluded (Armenian, Coptic in two dialects, Old French, Catalan, Italian, Spanish, Middle High German); Ge'ez and Old Occitan give no verdict, and the rise under the Ge'ez model is produced by other languages too. Other orders of writing are excluded as well: right to left, boustrophedon, by columns of the page. The exclusion is narrow - "letters or letter pairs through table cells" - so syllabic writing was tested (#307): if a word part encodes the onset or the rhyme of a syllable, the letter solver goes blind to the manuscript's level. A new syllabic solver breaks such a cipher on the model (86 % of the key), but on the manuscript it scores less than on a text with no syllables, and syllabic cells would make words longer than the manuscript's - the "word = syllable" version is not supported. Readers' ideas were checked too: a sign working as a space inside words, a sign or a word repeating at equal intervals, repeated phrases of 3-5 words, exact or differing by one sign - nothing beyond the model's mechanism. Something else was found: the same word comes back in neighbouring lines more often than the model can make it - a defect of vocabulary locality, the next edit. The number of cipher tables was tested too (#310): seven or eight tables push the vocabulary away from the manuscript, and so do four; there are six, but the scribe used the last two about half as often as in Greshko's reconstruction (weight 4 instead of 7) - with this edit the model's word variety matches the manuscript (0.319 vs 0.317). The letter to Cryptologia about the corpus correction has been sent; Paper I is under review. Still no readings.
- 22.10.2026 - a scribal rule found: after the gallows p and f the scribe never writes e, and the model now keeps it (#295); Paper I updated on Zenodo (v1.2). In the manuscript p / f + e occurs 6 times in 34 thousand words; the model had about 400: in the cipher tables a prefix ending in p / f joined freely with an ending that starts with e. The rule "e after p / f is written as ch" was checked under pre-registered rules on 30 fresh seeds: what follows p / f came twice as close to the manuscript, no check of the model got worse, and the variety of word cores (c80), which had drifted out of its window over three edits, is back inside it; the same dose of edits after k / t does not do this. A day earlier the line opening was refined: y in place of s / c (#287) and the frequent spelling of the first word (#289). An attempt to give the model its own Currier A language - a separate spelling inventory for A pages (#294) - carried the composition of the A / B difference but broke the repetition windows and was not accepted: in the manuscript the head of the vocabulary is shared by A and B, while the middle and the tail differ. The key solver with the soft-space correction again sees the model's key (7 seeds of 8). Door 2: six more fifteenth-century texts, including the Old Czech "Astronomy of King John" - no match. Paper I on Zenodo - version v1.2 with the corpus correction and the replication package (431 files): doi:10.5281/zenodo.23552487. Still no readings.
- 21.10.2026 - the edge of the manuscript's line follows scribal rules, and the model now reproduces them (#280-#282); there are now 21 open defects. We added five positional rules to the generator: the first word of a paragraph begins with a "gallows" sign (most often p); in the first line of a paragraph p and f stand in place of t and k; at the end of a line a word ending in -ar, -al, -an or -am is more likely; the sign m stands only at the end of a line (mid-line it becomes r or l); a line begins with d, y, s, t, p or f. The check followed pre-registered rules on ten fresh seeds: none of the model's checks got worse, and the line edge came close to the manuscript - p in the first word of a line ×12.6 against ×18.1 in the manuscript (was ×1.2), m in the last word ×13.0 against ×14.4 (was ×1.1). The same edits placed elsewhere in the line create no edge. Defect #275 is closed. The signs p, f and m behave like positional variants - layout, not separate letters of the cipher; this is a hypothesis, its meaning is untested. One more change: in 15 % of cases the scribe picks the spelling at a word junction from four variants instead of three (#280), which brought the agreement of neighbouring word onsets (#190) back within tolerance. Two related axes stay open: the word form at the end of a line (#222) moved almost four times closer but stays below the threshold; the circle of line openings d → q → y (#207) is not carried by the model. Still no readings.
- 20.10.2026 - we found an error in our own corpus and fixed it. The function that reads the manuscript's transliteration (Zandbergen, ZL) dropped a word whenever it stood right next to a transcription mark - paragraph start, a line broken by a drawing, a comment. It lost 3,530 of 38,190 words (9.2 %), almost all of them the first and last words of paragraphs. The working corpus is now 36,997 words. We recomputed the targets of all model checks and re-ran the generator under pre-registered rules (test #277). The statistical windows hold; one axis - word-length autocorrelation (#81) - is now reproduced and closed; one closed axis (#190, agreement of the starts of neighbouring words) sits at the edge of its tolerance. The conclusion about the writing mechanism does not change. Numbers in the first paper shift by a few percent (e.g. twin repeats 1.87 → 1.95, h2 2.17 → 2.20); none of its conclusions changes; a corrected version will be posted on Zenodo. A new model defect (#275): the start and end of a line. In the manuscript the first word of a line contains the sign p 18 times more often, and the last word ends in m 14 times more often; our generator barely does this (×1.3 and ×1.1). This was shown by an external battery of measures (open code thisisntjon/voynich, MIT); our implementations matched the authors' numbers on 15 of 15 values. Two more defects: word endings (#272) and the strength of the dialect across groups of folios (#257). There are now 22 open defects. A lesson for everyone trying key solvers. Rugg's gibberish (a table grille) gives a stronger "decipherment signal" than a cipher with a known key, and neither shuffling blocks of words nor comparing against random keys removes it: the grille has a genuine letter link across word boundaries. A measure of content does not help either: after fitting a key, the solver finds more Latin words in Rugg's gibberish than in a real cipher. The fair benchmark is gibberish of the same size with a key fitted by the same solver; calibrated this way, the manuscript reads no more Latin than gibberish. This does not affect our earlier negative verdicts on the manuscript. Matching the manuscript's sections to period texts by article lengths: 12 more texts of the 13th-15th centuries (Ps.-Dioscorides, Albertus Magnus, Bartholomaeus Anglicus, Thomas of Cantimpré, "Secrés des dames" and others) - no match. Still no readings.
- 08.10.2026 - test #207: the manuscript's lines have an "entry mode". If a line begins with the sign d, the next line of the same paragraph more often begins with q; after q with y; after y with d again. The share of such "forward around the circle" transitions is 63 % against 50 % for a random reordering of the paragraph's lines (z +5.8). The effect is the same in two independent transliterations and for scribes 1 and 2 separately. The observation was made by members of the voynich.ninja forum (DG97EEB, takrobat); we tested it under pre-registered rules. Our generator does not reproduce it, nor does any of 15 other mechanisms, including self-citation with memory of the line above: this is the nineteenth open defect of the model and a constraint on the whole class of known explanations. Could the circle arise from ordinary layout - line breaks? We re-broke each paragraph into lines with shifted breaks (90 % of them moved), and the circle vanished (z −0.7), while genuine word adjacencies remained; a control showed the procedure does catch such an effect. So it is a property of the manuscript's real lines. What the test does not claim: what the line "entry mode" means is unknown; still no readings.
- 07.10.2026 - tests #202 and #204: the model gets a soft space. After test #201 we looked for the exact place where our generator has to change so that neighbouring words also occur joined as often as in the manuscript. A uniform split of words gives the right amount but the wrong composition: in the manuscript the alternating pairs are independent words (both halves are words of the manuscript in their own right), whereas halves produced by a split at a random place are not. The candidate that passed the acceptance under pre-registered rules (ten fresh seeds, guard windows, the Parisel signatures, fourteen defect axes) is this: a word made of two code units is written as two words with probability 0.35 if both halves are forms from the key tables, with probability 0.10 if only the right half is, and is not split otherwise; with probability 0.02 a word is attached to the previous one; the choice of homophone by the neighbour is strengthened. None of the fourteen axes got worse and six moved closer to the manuscript: the autocorrelation of word length (0.051 → 0.098 against a target of 0.113), the link between a word's frequency and its surroundings, adjacent repeats, the agreement of word onsets - and the alternation of #201 itself: 2.97 points against 3.73 in the manuscript, on ten seeds out of ten. The composition of the pairs now matches the manuscript (a discrepancy of 0.8 points against 3.7 for the previous model and 2.3-3.0 for the control variants). This is the fourth change of the model under formal acceptance; defect #201 is closed, eighteen defects remain open. There is a price: for one between-word feature (after a word in ch- the final -y is rarer) the model already erred slightly in sign, and the error is now more visible (on 3 seeds of 10); the autocorrelation of word length came closer but is not yet within the manuscript's range. Test #204 checked the opposite explanation as well: is our solver silent on the manuscript because it cuts words where the space is not? On model text with a soft space it recovers the key with an accuracy of 0.76 (0.84-0.86 on the new model); on the manuscript under the policy "a comma is not a space" there is still no signal (a gain of 0.00-0.03 against a threshold of 0.15). What the tests do not claim: the soft space is a property of our model of writing, not a reading; where it comes from in the manuscript - a scribal habit, the design of the cipher, or the word division of the underlying text - is not distinguished. No readings.
- 06.10.2026 - test #201: the soft space. We measured how often two neighbouring words of the manuscript also occur in it written together as one word - beyond what a random reordering of the words within a line gives. In the manuscript 8.89 % of pairs do so against a chance level of 5.16 %: an excess of 3.73 percentage points. It is present in all five independent transliterations (including the readings of the 1940s and the 1970s), in both Currier "languages", for the three scribes with enough text, and at spaces the transcribers regard as certain. Examples: s aiin and saiin, ol chedy and olchedy. Our generator does not reproduce this at all (an excess of 0.06 points on ten fresh seeds), nor do eight other generators in which a word is one code unit. The effect is partly produced only by models in which the space is an ordinary sign in the stream of writing, and by those that copy real word pairs of the manuscript. Among 105 medical and herbal texts of the 13th-16th centuries the manuscript stands at the 91st-94th percentile: the same order of magnitude is found in 15th-century Spanish manuscripts where the scribe writes now "de la", now "dela". This is the nineteenth open defect of our model and a pointer to where it has to change: in the manuscript a space does not always fall on a code-unit boundary. What the test does not claim: it does not tell where the alternation comes from - a scribal habit, the design of the cipher, or the word division of the underlying text. Still no readings.
- 06.10.2026 - the manuscript tested language by language under the letter model of a candidate (#200, preregistered): Armenian, Coptic (Sahidic and Bohairic), Old French, Catalan, Italian, Old Occitan, Spanish and Middle High German. For each language the stand's power was first confirmed on two fresh seeds of model text (42-63 % of words recovered, lead +0.43 to +1.17 over a shuffle); the manuscript against three of its own shuffles then gave −0.07 to +0.13 against a signal threshold of +0.15. No language gives a signal; with Latin (#199) that is ten. Geez failed the power stand and has no verdict. The test concerns the exact form of our mechanism, not cipher in general. No readings.
- 04.10.2026 - the same solver made robust to the manuscript’s tail of rare forms (signs outside the table cores are masked, not solved): it still recovers the model key when 30 % of the words are corrupted (59-63 % of words, two fresh seeds, clean nulls) and still finds no Latin letter structure in the manuscript (+0.03 to +0.06 bits against a threshold of +0.5). No readings (#199).
- 04.10.2026 - a solver that uses the table structure of the cipher recovers the key of our own model text from scratch (95 % of words, three fresh seeds, clean nulls). Applied to the manuscript under a preregistration, it finds no Latin letter structure: the manuscript is not "our model exactly, over Latin". No readings (#197).
- 04.10.2026 - Schwartz (Harvard, preprint of 01.10) names the coupling between the edge glyphs of adjacent words as a property "no keyless generator" reproduces. Under his measure our mechanism reaches 90 % of the manuscript value on five fresh seeds; it is carried by the neighbour-aware homophone choice (2 % without it), and the published Naibbe ciphertext gives 1 %, as he reports (#198).
- 01.10.2026 - guessing a vocabulary "by meaning" (word-for-word glossing of frequent words checked by blind judges) cannot tell real text from noise even on Latin: the stand has no power, so it gives no verdict on the manuscript (#193-#195).
- 30.09.2026 - exact word repeats at short range: the model overshoots nearly fivefold, and none of 13 rival mechanisms hits the manuscript - an eighteenth open defect and a constraint on the whole class (#192).
- 30.09.2026 - the canon changed a third time: neighbour priming (#191) closes defect #190 and moves three more toward the manuscript.
- 29.09.2026 - neighbouring word onsets agree three times more strongly in the manuscript than in the model: an eighteenth defect, ours (#190).
- 29.09.2026 - the model is twice as predictable on long context as the manuscript (Owens’s axis): a seventeenth open defect, ours (#189).
- 29.09.2026 - order of identical forms within a line: a sixteenth open defect of the model, and it is ours - rival markov2 and coupled carry it (#188); near-repeats of adjacent words are carried.
- 29.09.2026 - of the mechanisms that hold the profile, only our model carries the heterogeneity of text chunks (#187); its glyph character is carried by none.
- 28.09.2026 - the model canon changed: a quire-length section dialect closed the Taylor defect (#186); fifteen open defects, including the new #166, #167, #181, #184.
- 21.09.2026 - Lux's cross-transliteration audit reproduced byte for byte; our numbers survive a change of transcriber but not of alphabet (test #164).
- 09.09.2026 - inter-word claims withdrawn; eleven measured defects instead of seven; a constraint on the whole class in their place (#155).
Full chronology with numbers - on the Publications page; the defects - on Model defects.
Leaves worth a closer look
Nine folios that a century of hypotheses keeps returning to - each with an honest write-up and the image in a filter viewer you can inspect yourself.

Folio f1r - the first page
An erased pharmacist’s signature, 17th-century alphabet columns, and Newbold’s downfall.

Folio f33v - the “sunflower”
The plant used to argue a New-World origin - and why it is a kit of parts.

Folio f67r2 - moon in sectors
12 moon faces, Newbold’s “annular eclipse”, and a fresh planet-label test.

Folio f68r - star charts
Sun, Moon, the “Pleiades” - and the closest thing to an accepted identification.

Folio f71r - Aries in barrels
30 nymphs in a ring, Occitan month names, and our blind light/dark test.

Folio f72r3 - Cancer, thirty names
Nymph rings as lists of abbreviated names - the core of Paper II.

Folio f75r - the bathhouse
Green pools, “pipes”, and 15th-century women’s medicine.

The Rosettes f85v-86r
Nine circles, a swallow-tail castle, and the “map” debate.

Folio f116v - michiton oladabas
The last page: a half-Latin scrawl that has resisted a century of readings.

Folio f2r - the herbal begins
Where the herbarium starts - and why even the first plant resists naming.

Folio f9v - the "violet"
The plant everyone calls identifiable - and why even it is contested.

Folio f57v - the ring of 17 symbols
A cosmic rosette with an ordered symbol sequence repeated four times.

Folio f88r - the apothecary
Rows of albarello jars and name-like labels of ingredients.

Folio f103r - starred recipes
Hundreds of star-marked paragraphs - the text as a list of recipes.

Folio f70v2 - Pisces
The first zodiac sign: two fish, barrels, and an Occitan month.

Folio f25v - the dragon
One of the manuscript's rarest creatures beside a herbal plant.

Folio f78r - the plumbing
Green baths linked by "pipes" - the most hydraulic page of all.

Folio f66r - a figure in the margin
A reclining figure, a column of notes and the puzzling "mus del".

Folio f73v - Sagittarius
A crossbowman at the heart of the zodiac - European iconography.

Folio f68v - three luminaries
A spiral of stars and sun-rosettes; the "galaxy" myth.

Folio f82r - the grand bath
The most crowded scene of the balneological section.
How we work
- Pre-registration. Criteria are fixed before the data are seen.
- Multiplicity control. Every candidate counts against a Bonferroni budget.
- Anachronism control. Any source postdating the manuscript must survive a period test.
- Negatives published. Rejected hypotheses are reported alongside positive ones.
Independent research. Analyses implemented with AI assistance; all hypotheses, criteria and conclusions pre-registered and verified by the author. Prior art is credited in each paper: the Naibbe cipher (Greshko 2025), the boundary signatures (Parisel 2026), the scribal hands (Davis 2020).