Methodology
Rankings on this site are computed from published specifications by the formula below. Position cannot be bought, and no affiliate offer - its network, its commission rate or its existence - is an input to any score. Scoring model 2026.07-1; chip-load table 2026.07-1.
Independence
This site earns money from affiliate links. That creates an obvious incentive to rank the products that pay best, so the architecture is built to make that impossible rather than merely to promise it. Scores are computed by a pure function of the specification columns in our database. That function does not receive, and cannot read, the offer records: not the network, not the commission rate, not the price we would earn. The only money figure it sees is the manufacturer's published list price, used for the value component, because “is this good for the money” is a real buying question and list price is a published spec like any other.
Separately, we choose which offer to link to by expected commission. Those two decisions are deliberately kept apart: what we rank is decided by specifications, and where we send you once you have chosen is decided by which retailer pays us most for the same product at the same price. If a brand-direct programme pays more than Amazon for an identical item, we will link to the brand - and the machine's score will not move by a single point.
No brand has paid for placement, review or inclusion on this site, and there is no arrangement under which they could.
The ranking score
Every machine is scored 0–100. Components are scored against absolute reference scales rather than percentiles within our current database, which means a machine's score does not change when an unrelated machine is added, and you can reproduce any score from the spec sheet plus these weights.
| Component | Weight | What it measures |
|---|---|---|
| Work area | 22 | Usable cutting envelope. Scored on a logarithmic scale of X x Y area (80%) plus Z travel (20%), because the step from a 150mm bed to a 400mm bed matters far more to what you can make than the step from 800mm to 850mm. |
| Spindle power | 18 | Rated spindle or trim-router power in watts, against a 1,500 W reference. Machines sold without a spindle score NULL here rather than zero - see the null-handling rule below. |
| Motor quality | 16 | Closed-loop steppers and servos detect and correct lost steps; open-loop steppers cannot, and a lost step ruins the part silently. Closed-loop and servo score 100, open-loop 55. |
| Material breadth | 14 | How many material families the manufacturer states the machine handles - wood, plastic, soft metal, hard metal or composite. |
| Rigidity | 15 | Structural signals that determine achievable tolerance: drive type (ball screw over lead screw over belt), guideway type (profile linear rail over supported shaft over V-wheel) and frame material. |
| Value | 15 | The weighted quality of the five components above per dollar of manufacturer list price. A capable machine at a low list price scores well; an expensive machine has to earn it on capability. |
Reference scales
| Work area, log-mapped between | 15,000 – 800,000 mm² |
|---|---|
| Z travel ceiling | 150 mm |
| Spindle power ceiling | 1,500 W |
| Motor quality | closed-loop / servo 100 · open-loop 55 |
| Value gain | quality per $1,000 list × 1.2 |
How we handle a specification a maker does not publish
This is the most consequential decision in the model, so it is worth stating plainly. When a manufacturer does not publish a figure - the FoxAlien XE-Ultra ships without a spindle, so it has no spindle wattage at all; SainSmart states a stepper model for the 4040-PRO MAX but never says whether it is closed-loop - we exclude that component and renormalise across the weights we could actually apply. We do not score it zero. Scoring an unpublished spec as zero would punish a machine for a fact we simply do not know.
Renormalising on its own has a flaw we are not willing to live with. A maker who publishes only their machine's strongest figures gets scored on just those figures, and rescaling that partial result can lift it above a competitor who published everything. That rewards withholding - on a site whose entire argument is that withholding should count against you.
So there is a hard ceiling: a score can never exceed its coverage percentage. A machine scored on 68% of the model cannot score above 68, however well it does on the components it did publish. The unpublished component is still excluded rather than scored zero - we do not invent a number or punish a machine for a fact we do not know - but it can no longer be used to lift the machine above what we were actually able to verify.
The effect is that publishing a specification can raise a score and withholding one can only lower the ceiling. When we introduced the cap the FoxAlien XE-Ultra went from 89 to 68, its coverage figure, and the fully-documented Genmitsu PROVerXL - scored on 100% of the model - moved up beside it. Every machine page and the database table still show coverage next to the score, so you can always see how much of the model a number rests on.
When we withhold the score entirely
The cap fixes one failure and exposes another. Score and coverage are two different axes, and below a point the cap collapses them: a machine scored on 30% of the model would show a number in the twenties, which reads as this machine is bad when the truth is we could not verify enough to say. Publishing that would be stating something false, which is the one thing this site exists not to do.
So below 50% coverage we withhold the number altogether and say which components we could not compute. The page still carries everything else - the full specification with the gaps marked, the components we could score, the price and the buying route - because a machine can be thoroughly covered and unscored at the same time. In rankings those machines appear in a separate band, with the reason stated inline, rather than being dropped: excluding a machine because its maker publishes less would punish the reader for the manufacturer's choice.
Prices in the maker's own currency
Not every manufacturer prices in dollars. Sienci Labs is Canadian and lists in CAD, and more non-US makers will follow. Where that happens we show the figure the manufacturer published, in the currency they published it in — “CA$1,890” rather than a converted number. A conversion moves with the exchange rate and was never a price the maker quoted, so presenting one as the price would be the same error as deriving a cutting area from a machine's name.
The value component still needs something comparable, so we hold a dated exchange-rate snapshot and use it for that calculation and for matching price-band alternatives — internal comparison only, never rendered as the price. The rate is committed in the codebase rather than fetched live, deliberately: a score that silently moved with the currency market would not be reproducible, and reproducibility is the whole promise of this model.
What coverage measures - and what it does not
Coverage is a statement about the manufacturer: how much of the model their published specification could fill. It is not a statement about our processing. That distinction had to be enforced rather than assumed - when we first seeded a CAD-priced machine its coverage fell to 53%, not because Sienci withheld a price but because we had no currency handling. The machine was being marked down for our gap.
A price published in any currency now counts as published. The cap and the sub-50% suppression rule key off manufacturer disclosure alone, so the number on a page reflects what a maker was willing to tell you - which is the only thing it ever claimed to measure. Correcting this moved the LongMill MK3 from 53 to 68.
Why we never derive a cutting area from a machine's name
Several manufacturers name a machine by its nominal size - “4x4”, “2x2” - without publishing the actual travel. It is tempting to convert 4 feet into 1219mm and fill the gap. We do not, and the reason is sharper than it first appears: the difference between nominal size and real travel does not run reliably in either direction. Carbide 3D's own specification sheet shows the Shapeoko 5 Pro 2x2 travelling 24.53″ against a 24″ nominal - the machine travels further than its name suggests.
Because the error is not even predictable in sign, a derived figure would be a guess wearing the clothes of a measurement. We record the maker's designation verbatim, label it as their designation, exclude it from scoring, and let the coverage figure carry the consequence.
Sourcing rules
Machine specifications come from manufacturer official spec sheets only. Every machine page records the exact URL the specs were transcribed from and the date they were verified. Where a manufacturer does not publish a figure, the page shows “Not published”. We do not fill the gap from a marketplace listing title, a spec-aggregator site, or a reviewer's measurement. See how we handle a real unpublished spec →
Marketplace listings are not spec sheets. An Amazon title claiming “ideal for wood, acrylic, MDF” is copywriting, not a manufacturer capability statement, and it is not used to populate a material-breadth score.
Forums and communities are research inputs, never sources of record. r/hobbycnc, r/CNC and vendor forums are invaluable for working out which questions matter and where published claims break down in practice. Nothing from them is ever published here as a fact.
News and aggregator sites are permanently excluded as sources of record.
Chip-load reference values are drawn from published tooling-manufacturer chip-load charts for the corresponding cutter classes - the Onsrud, Amana and GDP class of published data. They are anchored at 1/8″, 1/4″ and 1/2″ per material and interpolated between; see the table below.
The calculator model
Feed rate = RPM × flutes × chip load. The chip load is looked up per material and cutter diameter, then multiplied by a depth factor and a geometry factor. The recommendation targets the midpoint of the adjusted window, because published charts assume rigid industrial machines and a desktop router reaches its own stiffness limit first.
Chip-load anchors (mm per tooth)
| Material | 1/8″ (3.175 mm) | 1/4″ (6.35 mm) | 1/2″ (12.7 mm) | Plunge |
|---|---|---|---|---|
| Softwood | 0.127–0.203 | 0.279–0.406 | 0.483–0.635 | 33% |
| Hardwood | 0.102–0.152 | 0.229–0.330 | 0.381–0.533 | 33% |
| Plywood | 0.127–0.203 | 0.254–0.381 | 0.457–0.610 | 33% |
| MDF | 0.152–0.229 | 0.305–0.457 | 0.508–0.711 | 35% |
| Acrylic | 0.102–0.152 | 0.203–0.305 | 0.330–0.483 | 30% |
| Aluminium | 0.051–0.076 | 0.102–0.152 | 0.152–0.229 | 25% |
| Brass | 0.038–0.064 | 0.076–0.127 | 0.127–0.178 | 25% |
| PCB / FR4 | 0.025–0.051 | 0.051–0.102 | 0.076–0.127 | 20% |
Adjustment factors
| Depth of cut = 1× cutter diameter | ×1.00 |
|---|---|
| Depth of cut = 2× cutter diameter | ×0.75 |
| Depth of cut = 3× cutter diameter | ×0.50 |
| Depth factor floor | ×0.40 |
| Upcut spiral | ×1.00 |
| Downcut spiral | ×0.70 |
| Compression spiral | ×0.90 |
| Straight flute | ×0.85 |
| V-bit | ×0.60 |
| Ball-nose | ×0.80 |
Calculator outputs are estimates derived from published data and the stated formula. They are explicitly not test results, and this site does not claim to have measured them. The calculator cannot see your machine's rigidity, your cutter's sharpness, your work-holding, or whether your spindle holds its commanded RPM under load - which are exactly the variables that decide whether the arithmetic survives the cut. Prove every new setting on scrap.
Prices and availability
Prices are refreshed daily from retailer APIs and stored in our own database; pages read from that database, never from a live API call at render time. Desktop CNC listings rotate faster than almost any other category - models get relisted under new identifiers and go out of stock constantly - so we treat a price as a dated observation rather than a fact.
Any price we have not confirmed in the last 72 hours is labelled “availability unknown” and presented as a last-seen figure rather than a current one. If our refresh job fails, it aborts without writing anything at all rather than risk overwriting good prices with bad ones, and the site degrades to honest uncertainty rather than to confident stale data.
A listing that disappears repeatedly is deactivated rather than deleted, because relisted products come back and the comparison content should survive the gap.
Corrections
If a specification here contradicts a manufacturer's published sheet, the manufacturer is right and we want to know. Every machine page carries the source URL we transcribed from, which makes errors on our side straightforward to demonstrate. See about for contact details and affiliate disclosure for the full commercial statement.