Ender 3 Calibration Cube Fail + Can't Print Circles After noticing that my ender 3 couldn't print a 'perfect' circle I decided to use a calibration cube to see if that could be the issue. These were my results:

I did have some successful prints before noticing these problems but it would be great if anyone could help/find a solution.
I think it may be because of the belts tension as I had accidentally over stretched it by putting it over the wheels instead of under: is it worth getting a new belt then?
I use 20% infill, with triangle pattern in cura, using the standard 0.4mm nozzle.
Edit
After doing a different testprint and measuring, it revealed that both had an accurate 20mm Y and Z, but only an 18.5mm X. Might I have destroyed my belt when I mounted it overstrained?
Edit2:
After purchasing a new X belt, the calibration cube was much closer at 19 x 20 x 20. But still not at a good enough tolerance for my liking. Additionally, when printing a cylinder, two relatively flat edges were printed with it either side (perpendicular to the x-axis).
First, check that the calibration part you have is actually a cube. Maybe you downloaded a trick 'calibration cube' model. Cura will show he overall dimensions of any model which it is slicing.

Ignore any print quality issues first off. A hollow calibration cube is mainly used to check the X/Y/Z motion and so long as you print at a sensible (slow) speed), the other parameters shouldn't have much effect (so long as the first layer is OK, and you get within 30% of the right extrusion).

If the calibration cube is within +/- 0.5mm on each side, it's probably good. Under/over extrusion, caliper technique, etc, can explain this sort of variation, and you might want to use a bigger test part like this star on my thingiverse account once you think you're close.

The 'steps per mm' setting is determined within the firmware, it is part of how your printer consumes G-code. For a delta printer, for example, there is some fancy maths to combine X/Y/Z into the motor movements. This means that you can't change steps/mm in Cura, you need to either change the firmware defaults and 'reset to factory settings', or modify the parameters in EEPROM by sending G-code.

Seeing too small a calibration part (for a Cartesian printer) can easily be explained by problems in the printer's motion system:


Stepper missing steps due to jerk or acceleration too high
Stepper missing steps due to binding/friction in the bearings (Send M84 to idle the stepper motor, and move X by hand)
Teeth missing on the drive belt (may show up on a diagonal 'bar' print)
Loose drive pinion (maybe backlash on the flat on the spindle means the problem is greater on small parts) - see below
Flex in the drive mechanism (e.g. belt mount to traveller is loose)


An annoying feature of a lot of these problems is that for any particular repetitive sequence of steps, you might see a very consistent result. Even thought to problem is something being badly adjusted, it gives the impression that the problem is calibration.

The drive wheel is held in place with a grub screw, see this diagram from the Anet-A8 assembly diagram.