CoreXY is a 2D parallel-kinematic motion system that moves a toolhead in the X-Y plane using two stationary motors and a pair of crossed belts arranged so each motor contributes to both axes simultaneously. Unlike the H-bot layout it replaced in most builds, CoreXY routes the belts on two stacked planes, which eliminates the frame-racking torque H-bots suffer from. The toolhead carries no motors, so moving mass drops dramatically and acceleration climbs. Machines like the Voron 2.4 and Bambu Lab X1 use this to print at 300–500 mm/s without losing positional accuracy.
CoreXY Interactive Calculator
Vary Motor A and Motor B belt travel to see the resulting CoreXY toolhead X-Y move, path length, and direction.
Equation Used
The CoreXY firmware converts the two motor belt travels into Cartesian motion with dx = 0.5(da + db) and dy = 0.5(da - db). Equal or opposite motor movements combine differently, letting two stationary motors position the moving toolhead in X and Y.
- Motor inputs are already converted to linear belt travel.
- Positive da and db follow the sign convention of the displayed equation.
- Belt stretch, backlash, pulley runout, and frame flex are ignored.
How the Corexy Works
The trick to CoreXY is that neither motor alone moves the toolhead in a single axis. Both motors drive together, and the geometry of the crossed belts decodes their combined rotation into X and Y. Spin both motors the same direction and the toolhead moves diagonally one way. Spin them opposite and it moves diagonally the other way. Pure X or pure Y motion happens when one motor spins and the other stays locked. This is parallel kinematics — the firmware does the math (Δx = ½(Δa + Δb), Δy = ½(Δa − Δb)) and you get a Cartesian-feeling machine with stationary motors.
The belts run on two stacked planes, typically 8–12 mm apart vertically. That separation is what kills the racking problem H-bots have. In an H-bot, both belts share one plane, so when the toolhead pulls, the gantry tries to twist diagonally and you get parallelogram skew that shows up as rounded corners and ringing. CoreXY's stacked belts apply force symmetrically about the gantry's centre, so the gantry stays square. If you build a CoreXY and you still see racking, your belt tension is mismatched between the two loops — even 5 N difference between left and right belt tension will skew the gantry visibly under acceleration.
Belt tension matters more here than on most machines. We aim for 110 ± 5 Hz on a 150 mm free belt span using a phone tuner app — that puts you around 8–10 kg-f tension on standard 6 mm GT2 fibreglass-cored belt. Below that, the belt skips teeth at high acceleration. Above it, you crush the pulley bearings and the motor shafts deflect. If you notice the toolhead misses position only on one diagonal, you have a tension mismatch. If it misses on both diagonals, you have a frame flex problem — usually the rear idler mounts not being co-planar with the front motor mounts within 0.2 mm.
Key Components
- Stationary stepper motors (A and B): Two NEMA 17 motors mounted to the frame, typically with 1.8° step angle and 16T GT2 pulleys. They never move — that's the whole point. Both motors must be torque-matched within 10% or one will lose steps before the other under shared load.
- Crossed GT2 belts on stacked planes: Two closed or open-ended belts route through the system on two parallel planes separated by 8–12 mm vertically. We use 6 mm fibreglass-cored GT2 belt for moving-mass-critical builds and 9 mm for high-load builds. The crossing geometry is what mixes motor rotation into X and Y components.
- Idler pulleys: Smooth idlers (no teeth) on the inside of the belt path and toothed idlers where the belt wraps the toolhead carriage. Bore tolerance must be ±0.01 mm — sloppy idler bores cause belt wander, which shows up as a 0.05–0.1 mm wave in straight Y-axis lines.
- Toolhead carriage: Rides on linear rails, typically MGN9 or MGN12, and carries only the hotend and part-cooling fans on a 3D printer build. Moving mass on a Voron 2.4 toolhead sits around 380 g, which is why it can hit 20,000 mm/s² acceleration without ghosting.
- Linear rails or rods (X and Y): Hiwin-pattern MGN linear rails are standard for tight builds. Rail straightness must be within 0.02 mm/m or the gantry will bind at one end of travel. Rods with bushings work but cost you 30–40% more moving mass.
- Frame: Aluminium 2020 or 3030 extrusion, typically bolted with cast corner brackets. The frame must be square within 0.3 mm across the diagonal — this is non-negotiable. CoreXY amplifies frame errors because the gantry rides on parallel rails that depend on parallelism.
Industries That Rely on the Corexy
CoreXY took over the high-performance desktop 3D printer space because it solves the speed-vs-accuracy tradeoff better than bedslinger Cartesian or delta layouts. But the kinematic concept shows up wherever you need fast, accurate planar motion with low moving mass and stationary actuators — pen plotters, pick-and-place heads, laser engravers, and small CNC routers all benefit from the same trick.
- Desktop 3D printing: Voron 2.4 and Voron Trident open-source printers — the reference designs that pushed CoreXY into the mainstream maker scene. The 2.4 uses a moving gantry; the Trident uses a moving bed with a fixed gantry, both running CoreXY belts.
- Consumer 3D printing: Bambu Lab X1 Carbon and P1S — production machines hitting 500 mm/s travel and 20,000 mm/s² acceleration in a sealed enclosure, with vibration compensation tuned specifically for CoreXY belt resonance modes.
- Pen plotters and drawing machines: AxiDraw-style plotters and the CoreXY-based pen-plotter community on hackaday — stationary servos, lightweight pen carriage, sub-0.1 mm repeatability across an A3 sheet.
- Laser engraving: xTool and Atomstack diode laser engravers using CoreXY frames to keep the laser module light and the motors away from heat. Engraving speeds of 600 mm/s with 0.05 mm line spacing are routine.
- Pick-and-place machines: OpenPnP and LumenPnP open-source SMT placement machines — CoreXY gives them the speed for 0402 and 0201 part placement at over 3,000 components per hour while keeping the head light enough for fast nozzle changes.
- Lightweight CNC and PCB milling: Bantam Tools and similar desktop PCB mills use CoreXY-derived layouts where spindle weight is low enough that the parallel-kinematic stiffness penalty doesn't matter.
The Formula Behind the Corexy
The core CoreXY equation converts motor rotation into toolhead position. You need this whenever you set firmware steps-per-mm, debug a missed-step problem, or work out maximum theoretical speed for a given motor RPM. At the low end of typical operating range — say a 100 mm/s print on a budget build — the motors barely break a sweat at around 200 RPM. At nominal high-speed printing around 300 mm/s the motors run near 600 RPM where torque starts dropping on a typical NEMA 17. Push to 500 mm/s like Bambu does and you're at 1,000+ RPM where you absolutely need geared steppers, larger pulleys, or low-inductance motors driven at 48 V to keep torque up.
Δy = ½ × (Δa − Δb)
vtoolhead = π × Dpulley × Nmotor / 60
Variables
| Symbol | Meaning | Unit (SI) | Unit (Imperial) |
|---|---|---|---|
| Δx, Δy | Toolhead displacement in X and Y | mm | in |
| Δa, Δb | Belt travel from motors A and B (positive in the wind-up direction) | mm | in |
| Dpulley | Pitch diameter of the motor pulley | mm | in |
| Nmotor | Motor rotational speed | RPM | RPM |
| vtoolhead | Resulting toolhead linear speed along one axis | mm/s | in/s |
Worked Example: Corexy in a Voron 2.4 350 mm build
A maker in Wellington is finalising the motion budget on a Voron 2.4 350 mm build using LDO-42STH48-2504AC motors and 16-tooth GT2 pulleys (pitch diameter 10.19 mm). They want to know the achievable toolhead speed at three operating points: a conservative tuning pass at 200 RPM, a nominal print speed at 600 RPM, and an aggressive input-shaper test at 1,200 RPM. They're running 24 V drivers with 1/32 microstepping and 6 mm GT2 fibreglass-cored belt tensioned to 110 Hz on a 150 mm span.
Given
- Dpulley = 10.19 mm
- Nlow = 200 RPM
- Nnom = 600 RPM
- Nhigh = 1200 RPM
- Belt tension = 110 Hz on 150 mm span
Solution
Step 1 — at the low end of typical operating range (200 RPM, conservative tuning), compute toolhead speed along one axis:
This is the speed where you tune Pressure Advance and check first-layer adhesion. Slow enough that the toolhead moves smoothly with no audible belt resonance, fast enough to print a benchy in 35 minutes.
Step 2 — at nominal print speed (600 RPM), the same calculation:
This is the sweet spot for a tuned Voron 2.4 with input shaping enabled. The LDO 2504 motors hold around 0.5 N·m at this RPM on 24 V, which is enough to push 20,000 mm/s² acceleration on a 380 g toolhead. You'll see ringing artefacts vanish under input shaping but feel the gantry working.
Step 3 — at the high end (1,200 RPM, aggressive testing):
In theory you hit 640 mm/s. In practice on 24 V, motor torque has collapsed to roughly 0.15 N·m at 1,200 RPM because back-EMF is choking current rise during each step. You'll lose steps the first time you try to corner. To actually hit this speed you need 48 V drivers, low-inductance motors (under 1.0 mH), and 20T or larger pulleys to drop motor RPM for the same toolhead speed.
Result
At nominal 600 RPM, the toolhead reaches 320 mm/s along a single axis — solid mid-range performance for a tuned CoreXY printer. The low-end 200 RPM gives you 107 mm/s for safe tuning passes; the high-end 1,200 RPM theoretically reaches 640 mm/s but only if you've moved to 48 V and low-inductance steppers, otherwise torque collapse from back-EMF will cause skipped steps before you ever see that speed on the toolhead. If you measure significantly below the predicted speed, the most likely culprits are: (1) belt skipping at the motor pulley due to under-tension below 95 Hz, (2) printer firmware acceleration limit clipping the move before peak velocity is reached on short travel segments, or (3) idler pulley friction from a binding 625ZZ bearing dragging effective torque. Check belt frequency with a tuner app first, then issue a long-travel G-code move and watch for the firmware to actually reach commanded velocity.
Corexy vs Alternatives
CoreXY isn't always the right answer. The decision depends on speed targets, frame budget, and whether you can build the frame square enough to take advantage of it. Here's how it stacks up against the two most common alternatives — H-bot and bedslinger Cartesian.
| Property | CoreXY | H-bot | Bedslinger Cartesian |
|---|---|---|---|
| Max practical toolhead speed | 500 mm/s (Bambu X1) | 300 mm/s (frame-racking limited) | 150 mm/s (bed inertia limited) |
| Moving mass on toolhead | 300–400 g typical | 300–400 g typical | 350 g toolhead + 1–3 kg bed |
| Positional accuracy under acceleration | ±0.05 mm at 10,000 mm/s² | ±0.2 mm (racking error) | ±0.1 mm (bed wobble) |
| Frame squareness requirement | ≤0.3 mm across diagonal | ≤0.5 mm across diagonal | ≤1.0 mm across diagonal |
| Belt routing complexity | High — two crossed loops on stacked planes | Medium — single plane H-loop | Low — two independent belts |
| Build cost (frame + motion) | $300–600 | $250–500 | $150–300 |
| Best application fit | High-speed printing, plotting, PnP | Medium-speed laser engraving | Beginner printers, large-format |
Frequently Asked Questions About Corexy
This is dynamic racking, and on a properly built CoreXY it almost always traces back to belt tension mismatch between the A and B loops. At rest, even mismatched belts hold the gantry square because both loops are anchored. Under acceleration, the belt with lower tension stretches more, and the gantry skews toward the stiffer side.
Pluck both belts at the same free span length and measure with a phone tuner app. They should match within 5 Hz. If one reads 105 Hz and the other 95 Hz, you've found it. Tighten the slack one in 1/4-turn increments on the tensioner and re-measure.
Diagonal-axis distortion on a CoreXY is the signature of unequal step-per-mm calibration between the A and B motors, or unequal pulley pitch diameters. Because both motors contribute to both X and Y, any mismatch shows up as a 45° skew rather than an X-only or Y-only error.
Check that both pulleys are the same tooth count and brand — mixing a 16T from one supplier with a 16T from another can give you a 0.05 mm pitch diameter difference. Also verify both motors have identical microstep settings in firmware. A single Klipper config typo on one motor will produce exactly this oval pattern.
For 600 mm travel at engraving speeds (typically 200–600 mm/s with low cutting force), H-bot is genuinely fine and saves you the cost and complexity of stacked belt planes. The racking problem in H-bot scales with toolhead force, not size — and a laser exerts essentially zero reaction force on the carriage.
Pick CoreXY only if you're planning to upgrade the same frame to a router or pen-plotter where toolhead reaction loads matter. For a pure laser, H-bot saves you about $80 in idlers and removes the belt-plane alignment headache.
Yes, single-belt CoreXY layouts exist (the original Ilan Moyer design used one continuous belt). They reduce part count and eliminate tension-mismatch problems because there's only one tension to set. The downside is that one belt is roughly twice as long, which doubles the total belt stretch under load and lowers system stiffness by about 40% compared to a properly tensioned dual-belt setup.
For builds under 250 mm travel and moderate speeds, single-belt is fine. Above that, the stretch-induced positioning error becomes visible as ringing on long, fast moves, and dual-belt is worth the extra alignment work.
Pure X motion in CoreXY requires both motors to spin in the same direction at the same speed. If one motor is closer to its torque limit than the other — say because of a slightly higher current setting on the other driver, or one motor running hotter — that weaker motor stalls first, and the geometry means it stalls only when it's working in the same direction as its partner.
Diagonal moves only use one motor at a time, so the weak motor is unloaded half the time and survives. Check driver current settings (TMC2209 run_current) and motor case temperature after a 10-minute print. A 15°C delta between the two motors usually means one is undercurrent or has a fan flow problem.
Target 110 ± 5 Hz on a 150 mm free span with 6 mm GT2 fibreglass belt — that's roughly 8–10 kg-f. Below 95 Hz the belt skips teeth on the motor pulley during hard cornering, which prints as a permanent layer shift you can feel with a fingernail.
Above 125 Hz you start side-loading the motor shaft bearings. The symptoms are subtle: increased motor noise at idle, reduced step accuracy at low microstep counts, and accelerated wear on the pulley grub screws backing out of the flat. Long-term you'll wear oval bores in the motor's NEMA 17 shaft bearings. If the belt sounds like a guitar string when you flick it, back off the tensioner half a turn.
The XY kinematics are independent of how Z is driven. Most CoreXY printers use lead screws or ball screws for Z because Z motion is slow and infrequent — a screw's self-locking property keeps the bed or gantry parked without holding current. Belt-driven Z (like the Voron 2.4's belted Z towers) only makes sense if you need fast Z hops or sub-micron-resolution Z probing where screw backlash matters.
For a first CoreXY build, stick with TR8x8 lead screws on three or four Z motors with independent levelling (Z_TILT_ADJUST in Klipper). It's simpler, quieter, and accurate enough for 0.1 mm layers.
References & Further Reading
- Wikipedia contributors. CoreXY. Wikipedia
Building or designing a mechanism like this?
Explore the precision-engineered motion control hardware used by mechanical engineers, makers, and product designers.