Voynich StudiesBeinecke MS 408

Anchors and the key hunt

The anchor threshold: how much known text it takes to break the manuscript's cipher

We computed it on a model with a known key. A full key would read 96.9 percent of the text. To recover it one needs an aligned sample of roughly six hundred Latin words. Every known hint - the lines on the last leaf, the month names, a ring of labels - is two to three orders of magnitude smaller.

Status ESTABLISHED 18.10.2026

The anchor threshold: how much known text it takes to break the manuscript's cipher
Folio f1r. Beinecke Library, Yale (public domain)

Everyone who sits down with the Voynich manuscript sooner or later looks for an anchor: a place where it is known what is written. The last leaf f116v with its almost Latin lines. The month names written into the zodiac by a later hand. The captions beside the plants. A ring of thirty labels. Catch hold of one, it seems, and the rest will follow.

In September 2026 we computed how much is actually needed. The answer changed the project's strategy.

An experiment with a known key

We have a model of the mechanism, and on it one can run experiments impossible on the manuscript: encipher Latin with a known key, then "forget" the key and try to recover it from an anchor of a given size. Five seeds, controls passed.

The first thing that emerged: homophony - several spellings for one letter - is not a barrier. A full key reads 96.9 % of the tokens; the average ambiguity of the parse is only 1.5. If the key were in hand, the text would read almost entirely.

The barrier is the size of the anchor. To recover half the key one needs 2 500 perfectly aligned words of the manuscript. To recover 80 % - twenty thousand. A hundred words give 20 % of the key - under ideal conditions, without a single alignment error.

In Latin words, allowing for the cipher inflating a word by 1.24-1.53 times, the threshold of 2 500 tokens is 530-660 words of source text. The whole plaintext of the manuscript, by the same estimate, is 8-10 thousand Latin words. One identified passage of half a thousand words in its proper place would read 60 % of the book.

101001 00010 000Anchor size: perfectly aligned words of the manuscript (log scale)20%50%80%100%key recoveredhalf the key: 2,500 words ≈ 530-660 Latinf116v ~8months ~10ring ~25everything we have
The anchor threshold. A known-key experiment on the model: how much of the key is recovered from an aligned passage of a given size (100 words - 20 %, 2,500 - 50 %, 20,000 - 80 %). All known anchor candidates - the lines of f116v, the month names, a ring of labels - are two to three orders of magnitude below the threshold. Test #152.
Numbers behind the chart
10020%
250050%
2000080%

What is on hand

anchor candidatesizeshare of the threshold
the lines of f116vabout 8 words0.3 %
the month names on the zodiacabout 10 words0.4 %
one ring of labelsabout 30 labels of 2 letters1 %
the column of letters on f1r (seventeenth century)tens of signsunder 1 %

Every known candidate falls short of the threshold by two to three orders of magnitude. Hunting for a crib of realistic size is useless - and this is an upper estimate, under ideal alignment.

The first leaf f1r: on the right, columns of letters - the trace of a seventeenth-century attempt at reading
The first leaf f1r: on the right, columns of letters - the trace of a seventeenth-century attempt at reading

Breaking in from inside

If there is no anchor, what remains is breaking in without one: fit the key so that the text starts to look like a language. That is how simple ciphers are broken. The first attempt, back in the summer, came out negative: the letter sequence of the plaintext does not survive at the level of word parts - the real manuscript gave a worse likelihood than a shuffled one (−2.95 bits per letter against −1.81).

In the autumn we built a smarter solver - constrained by the design of the key: six tables, three positions, a language model of the candidate. On synthetic text of the same design it recovers the key from scratch with an accuracy of 0.95, three times out of three. This matters: the tool works. On the manuscript - a likelihood gain of 0.04-0.07 against a threshold of 0.5. Silence.

We repeated this with a mask on the tail of rare forms (so that 30 % of corrupted words would not get in the way) - silence. And under ten languages: Latin, Armenian, two dialects of Coptic, Old French, Catalan, Italian, Old Occitan, Spanish, Middle High German. With the bench's power at two out of two, the manuscript gives from −0.07 to +0.13 against a threshold of +0.15. Against "the canon's mechanism exactly, plus a language" for all ten.

What blinds the solver

Here it is important not to overrate the conclusion. "The solver is silent" means one of two things: either the language is not on the list, or the key is not built exactly like the model. We checked how tolerant the solver is of deviations, and the answer is sobering.

One scribal error in a table per section - accuracy drops to 0.20. Nine tables instead of six - 0.09. Homophones for 30 % of the letters - 0.08. Writing without vowels, a mixture of languages, abbreviations - the solver goes blind. Even mild deliberate corruption of the plaintext - confusing similar vowels in 20 % of cases, nulls in 10 % - drops it to 0.11-0.20. The only thing it withstands is a change of tables at the half-leaf (0.51).

So the verdict "against" holds for a careful scribe with six tables. For a careless one - and medieval encipherers were exactly that - a tolerant solver is needed. We are building it: on synthetic text with nulls the tolerant version already has power (accuracy 0.561), with an error in a table - two seeds out of three. The next step is a solver over the words of a genre rather than over letters; it is being computed now.

What this changes

The anchor threshold closed a whole direction - the search for short hints - and opened three others.

The key as artefact. Six tables are one or two leaves of parchment, 414 lines of correspondences. Such documents survive: from Mantua in 1401 to the book of 287 keys of the Milan chancery. The manuscript's trail runs through the letters to Kircher, and two lost items are documented there. On this, see Hunt for the key.

The passage. Not a word and not a line but a whole source text, identified by the order of entry lengths - a quantity that survives the cipher. The tool is ready and has been tested on 182 texts; on this, see Door number two.

The right model. Not a limit of computation but a limit of the model: a short text in a verbose cipher admits many equally plausible keys, and the right one can be chosen only if the model of the key is right in its details. The search for those details is the open defects of the model and the tolerant solver.

For understanding: everything above concerns the cipher class to which the manuscript belongs by ten statistics. Success would be any of three things: the document with the tables, an identified passage, or a model under which the solver gives on the manuscript what it gives on synthetic text.

FAQ

What is an anchor in cryptanalysis?

A piece of text for which both the enciphered and the original spelling are known. The classic example is a signature or a date. With an anchor one recovers part of the key and extends the reading from there.

Why do the lines on the last leaf f116v not help?

They are about eight words. The threshold at which a six-table key is recovered even by half is about 2 500 aligned words of the manuscript. Even under ideal conditions a hundred words give only 20 percent of the key.

Can one not simply search through the keys by computer?

We did. A solver constrained to six tables cracks synthetic text of the same design from scratch, with an accuracy of 0.95. On the manuscript it stays silent under ten languages. This is a limit not of computation but of information and of the model.

What, then, could change the situation?

Three things. The document with the tables itself - a physical key. One identified source text of half a thousand words in its proper place. Or a correct model of the key, under which the solver works again - that is what we are working on.

← All findings