A server is not a big laptop: why our value table now derives its own tiers

· 2 min read · updated September 1, 2026

methodologyvalue tableengineering

The value table asks one question per cell: what's the cheapest machine with at least this much memory and at least this much storage. Useful table. It had a bug that produced zero wrong numbers, which is why it survived as long as it did.

The bug

The original grid used one memory ladder for every category: 8, 16, 32, 64 GB. Those are laptop rungs. They also happen to work for desktops and mini PCs, which were the categories we stared at while building the thing, so everything looked fine for weeks.

Then you open servers. Practically every server carries 64 GB or more, so "at least 8," "at least 16," "at least 32" and "at least 64" all resolve to the same cheapest machine, and the grid prints one answer four times. Nothing crashed and every cell was technically correct. Single-board computers had the mirror-image problem. Most never reach 8 GB, so nearly every cell was a dash, and a page of dashes reads like missing data when the actual problem was a mis-scaled axis.

The fix

The ladder now comes from each category's own machines. Before a rung can become a row it has to clear two tests. Enough machines have to meet it, because a row whose winner is one lucky listing will thrash from week to week. And at least one machine has to sit in the band between that rung and the next one up, otherwise two adjacent rows are the same row printed twice, which is the server bug stated precisely. The surviving rungs get picked at percentiles of the category's real distribution, and if there aren't enough, the grid fills from the top down, on the theory that the cheapest machine with an enormous configuration is at least interesting and a fourth entry-level row is not.

One thing deliberately stayed fixed. Rungs still snap to a ladder of powers of two running from 1 GB to 2 TB, so a published tier is always a recognizable size that means the same thing next month. The fully dynamic alternative produces rows like "37 GB or more," which nobody can compare across categories or cite twice.

A side effect we didn't plan for: once adjacent rows are guaranteed to hold different machines, the price gap between rows means something, so each grid now also shows the typical cost of stepping up a tier in that category. Servers answer that question very differently than mini PCs do. That difference is why the categories are separate.

The result is live on the PC Value Table. A constant tuned on the data you look at will be wrong for the data you don't, and nothing will error to tell you.

The data behind this

Every figure we publish comes from the same normalized catalog this post describes: the PC Price Index for medians and price movement, the Value Table for the cheapest machine at each spec tier, and the data hub for everything else. All of it is free to cite and republish with attribution under CC BY 4.0. Link the page the figure came from.

More notes