Introduction

In 2006, the AI researcher Marcus Hutter put up prize money for something that sounds almost too narrow to matter: shrink a fixed file a little more than anyone has before. The file is enwik9, the first 10910^9 bytes of an English Wikipedia dump, frozen forever as the benchmark. The prize pays 5,000 euros for every 1% improvement over the current record, out of a total pot of 500,000 euros.

Why would anyone fund something that sounds like a file-compression contest? Because Hutter's real claim is bigger than zip files: to compress a piece of text losslessly, an algorithm has to predict what comes next better than chance. Push that idea far enough and you arrive at a provocative equation — better compression is better prediction, and better prediction of the world is what we mean by understanding it.

So underneath a leaderboard of file sizes sits a genuine wager about the nature of intelligence, and a prize that, as of late 2025, still has roughly 470,000 euros waiting to be claimed.

Try It: Squeeze the Text

Below is a short repetitive text. Pick a compression strategy and watch how many bits per character it needs to store the whole thing losslessly — smaller is better.

<p class="hint">{{hint_para}}</p>
<div class="textbox" id="textbox"></div>
<div class="btns">
  <button id="raw" type="button">{{btn_raw}}</button>
  <button id="freq" type="button">{{btn_freq}}</button>
  <button id="ctx" type="button">{{btn_ctx}}</button>
  <button id="reset" type="button" class="ghost">{{btn_reset}}</button>
</div>
<div class="meter">
  <div class="meter-row">
    <span class="meter-label">{{label_bpc}}</span>
    <span class="meter-value" id="bpc">8.000</span>
  </div>
  <div class="bar-track"><div class="bar-fill" id="barFill"></div></div>
  <div class="meter-row small">
    <span>{{label_total}} <b id="totalBits">448</b> {{label_bits}}</span>
    <span>{{label_floor}} <b id="floorVal">–</b></span>
  </div>
</div>
<div class="status" id="status">{{status_start}}</div>
* { box-sizing: border-box; }
body { font-family: system-ui, sans-serif; color: #222; margin: 0; }
.hint { font-size: .9rem; color: #444; margin: 0 0 .7rem; line-height: 1.45; }
.textbox { font: 600 15px ui-monospace, monospace; background: #f3f4f6; border: 1px solid #d9dce1;
           border-radius: 8px; padding: .6rem .7rem; line-height: 1.6; word-break: break-word;
           margin-bottom: .6rem; }
.textbox .ch { padding: 0 1px; border-radius: 2px; transition: background .25s, color .25s; }
.btns { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .7rem; }
button { font: 600 14px system-ui, sans-serif; padding: .45rem .9rem; border: 1px solid #6d28d9;
         background: #6d28d9; color: #fff; border-radius: 8px; cursor: pointer; }
button.ghost { background: #fff; color: #6d28d9; }
.meter { background: #fafafa; border: 1px solid #e5e7eb; border-radius: 8px; padding: .6rem .7rem; }
.meter-row { display: flex; justify-content: space-between; font-size: .9rem; margin-bottom: .3rem; }
.meter-row.small { font-size: .78rem; color: #555; margin-top: .35rem; margin-bottom: 0; }
.meter-label { font-weight: 600; }
.meter-value { font: 700 1.1rem ui-monospace, monospace; color: #6d28d9; }
.bar-track { height: 14px; background: #e5e7eb; border-radius: 7px; overflow: hidden; }
.bar-fill { height: 100%; width: 100%; background: linear-gradient(90deg,#6d28d9,#a855f7);
            border-radius: 7px; transition: width .5s ease; }
.status { font-size: .9rem; font-weight: 600; margin: .6rem 0 0; min-height: 1.3em; color: #444; }
.status.ok { color: #0a7d33; }
// Code not found

Raw spends a fixed 8 bits per character, no matter what. Frequency-based notices that some letters are far more common than others and spends fewer bits on them — that is the classic Huffman/Shannon move. Order-1 model goes further: it predicts each character from the one before it, the same trick modern language models use at enormous scale. Watch the bits-per-character drop toward the text's own entropy floor — the theoretical limit below which no lossless compressor can go without knowing more about the source.

The Real Complexity

The Hutter Prize is unusual among the puzzles on this site: it is not asking "is X in P or NP?" It's an open, ongoing contest, and its real difficulty comes from two different limits stacked on top of each other.

  • Shannon entropy sets a practical floor. Claude Shannon showed that any source of symbols has an entropy HH measured in bits per symbol, and no lossless code can beat that average in the long run. Guess the true statistics of English text and you can approach HH, but never cross it.
  • Kolmogorov complexity sets a deeper, uncomputable floor. The true shortest description of enwik9 is the length of the shortest program that outputs it exactly — its Kolmogorov complexity K(enwik9)K(\text{enwik9}). That number exists, but there is no algorithm that can compute it in general: proving a given program is the shortest one possible runs straight into the halting problem.
  • So the contest is a search, not a solved problem. Nobody can certify "this is the optimal compressor" the way a proof certifies a theorem. Competitors instead build ever-better statistical models of English — mixing context models, neural predictors and arithmetic coding — and the prize simply pays out whenever someone pushes the record down.
  • The rules enforce the real cost. Entries must run in about 50 hours on a single CPU core with bounded memory, and the total size counted includes the decompressor program itself — you cannot cheat by hard-coding Wikipedia into the code. That constraint ties the contest to genuine algorithmic information content, in the spirit of Kolmogorov complexity.

That is the punchline: there is no finish line computable in advance, only a moving frontier between "how predictable is human writing" and "how good is our best model of it" — and the gap that is left over is arguably a decent proxy for how far we are from generally intelligent prediction.

Where It Matters

"A good model of the data is a short description of the data" is one of the most productive ideas in computing, and the Hutter Prize is its most literal test:

  • Language models: modern large language models are, at their core, extremely good next-symbol predictors — exactly the skill the prize rewards, just aimed at chat instead of file size.
  • Minimum description length (MDL): a statistical principle that picks the model minimizing total description length (model plus data given the model), turning "which theory is best" into a compression question.
  • Universal prediction: Hutter's own theoretical AIXI framework formalizes an idealized, maximally intelligent agent in terms of Kolmogorov complexity and optimal prediction — the Prize is the empirical, computable little cousin of that idea.
  • Data compression practice: the arithmetic coders and context-mixing techniques built to chase the prize have fed back into real-world compressors used far beyond the contest.

Understand why squeezing enwik9 is hard and you've met the same information-theoretic core that shapes Kolmogorov complexity and every attempt to formalize what "understanding" a body of text even means.

Conclusion

The Hutter Prize looks, on the surface, like a file-compression contest with an oddly specific rule book. Underneath, it is a long-running experiment testing whether "predict text well" and "understand the world the text describes" are really the same ability wearing different clothes.

Nearly two decades in, roughly 470,000 euros are still unclaimed, the record keeps inching down, and the gap between the best compressor and the Shannon entropy floor keeps shrinking without ever quite reaching zero — a small, stubborn reminder that turning prediction into genuine understanding is still an open problem.

Share this article

Pick a channel — or use your device's native share sheet.

Comments

Loading comments...

https://www.kipuhub.com/en/article/hutter-prize/Content licensed under CC BY-NC 4.0.