Router cut sprockets based on McMaster cad model do not fit chain. Why?

So I’ve used cad from McMaster to cut a 40t and 19t sprocket for #25 chain out of 6061 aluminum with my CNC router. When I try to put the chain, which is a #25 h chain from vex, on, the first 4 or so pins of the chain go nicely onto the sprocket, and then it appears as through the pitch of the sprocket is greater than the pitch of the chain so the two stop mating . The sprockets were cut with a conservative federate and 1/8” endmill. Any idea what could be causing this?

So, I think I found your issue, or part of it.

The CAD Models do not contain any technical information other than what is readily observable, specified by industry standards or provided to us by our suppliers. The dimensions and other technical specifications of Products may vary from those shown in the CAD Models, due among other reasons to tolerances associated with manufacturing processes. Manufacturing tolerance information is considered proprietary by many of our suppliers and is not always provided to us. Thus tolerance information may not be reflected in the CAD Models.

That would be a section of McMaster’s Terms and Conditions, emphasis mine.

Translation: Their CAD will be close but may not be 100% accurate. There may be a specific reason for this (see elsewhere in said T&C, that’s your homework assignment).

Now, there IS a fairly simple way to see how out of whack it is. Grab a known good 40T sprocket and a known good 19T sprocket, grab a scribe (Sharpie probably won’t be good enough here, and you’ll have a hard time getting calipers in if I’m right in this), put 'em face to face with the CNC’d parts and line up their teeth. Scribe the known good onto the CNC’d part. Now grab the calipers and see how much more you gotta take off. Modify the CAD accordingly.

Incidentally, I may or may not have experience with this… modified some COTS CAD for reasons, didn’t modify the teeth of the belt pulley I was working with, 3D printed the part. Belt didn’t fit right, though it wasn’t this bad. After I went back and added our standard print allowance (in our case, 1 nozzle-width less material) and reprinted, the new parts were just fine and dandy.


You may have just discovered that your Router needs calibration. Also, did you measure the actual diameter of the 1/8" end mill? If all is good then blame the cad.

What gauge/thickness is your material, and have you chamfered the teeth? We (along with many other teams) experienced this issue in 2020 with the GREYt turret. At first we thought the sprocket just had the wrong geometry (likely a wrong pitch as you suggested). So naturally I cut a new one at work (geometry generated by Solidworks). Much to my dismay, the same thing happened. Next step was comparing my CAD model with the WCP model. Identical when layed over top. The concensus that I beileve we came to, was that a combination of material being to thick (cut from 0.125 material, VEX shows their normal #25 sprockets to be 0.110) and not having chamfers on the teeth were causing our problems.

The official suggestion from WCP was to let them “wear in”. Unfortunately though, Covid happened and we never were able to confirm that the thickness and chamfers were indeed the causes of our issues.


This is it right here. It’s a material thickness issue. We did the same and found that 1/8 is too thick. I used our big 10" sander to bring it down to the right thickness around the outer edge where the teeth are.


This may be the key. The chainrings mounted on the cranks of a bicycle and the cogs on the rear wheel hub all have tapered teeth. Some have “twisted” teeth to help with shifting. Even the chainrings and cogs for single-speed bikes that don’t have to shift have shaped teeth to make the chain engage and disengage smoothly.


Here are the relevant design tables from ANSI B29.1-2011. Table 7 gives two recommended shapes for the sprocket tooth chamfering.



I wonder if chamfering on a single edge would be sufficient. It would make cutting sprockets on a router pretty attainable.

You can also just use thinner plate. This is what I hear many teams do because the chamfer angle is so small.

If you wanted to add a chamfer a lathe is probably the best way to do it.


Will 0.09 plate work? I’m wary of going too small and losing chain tightness because it bends down the side.

I just made a 5mm HTD pulley on our teams router. I drilled the 3mm teeth holes with a drill, then contoured it with a -.003” stock to make it a tad bit smaller and to account for some deflection. They work very nice

I would definitely recommend removing a little extra stock to make it fit better. The tolerances are not extremely high, but you’d much rather be slightly undersized than oversized


Yes, we used 0.1" (though I’m sure 3/32" would be the same) plate for our turret in 2019 and in 2020. Neither has had any issues whatsoever. (2019 had 8 events, 2020 had 4 events, and both robots had lots of practice runtime). If you’re worried about chain tension, add a tensioner.


Same, lots of .100” thick chain rings on our turrets and spindexers in 2020 and 2021. @RoboChair would know more.


I have an equation driven Solidworks Sprocket Profile Generator I use for a lot of things, works for any size roller chain out there. Send me a message and I can email it to anyone that wants it.


Got that in onshape?

1 Like

I do not unfortunately. You might be able to make one using my SW file however. I’ve never touched Equation Driven sketches in Onshape before.

I threw one together a while ago (for the infinite recharge turret sprocket). Link here.

EDIT: It’s fixed! (use the same link)

Be aware that the max roller diameter is based on linear interpolation between .250 and .375 pitch from this chart. I figure in this case most people will only be using either .250 or .375 pitch chain, so it doesn’t really matter in the end.

To use, just change the desired pitch and number of teeth and you should get the mathematically correct sprocket. It’s just an extrusion – no chamfers are modeled in. The extrusion thickness can be changed as well.

I’ve tested this from tooth counts between 30 and 200. It doesn’t break! but the generation time increases with increasing tooth count.

The way I used this file was to make a copy of the part studio and reference it in the robot onshape assembly. This way, you offload the calculation into a separate file, saving you some time.

Let me know if you run into issues.


I put together an approximation sprocket model I have been using for years on projects that, “works,” but is not the mathematically correct tooth profile. Working through making an actual tooth profile with this now.

Sprocket Generator (approximation)

Edit: Do not use the approximation one, use the real dimension one.

1 Like

So, I got a bit carried away after modeling the correct geometry because Onshape’s configuration system is so incredibly easy to use compared to many others. Linked here is a very configurable sprocket with the following options:

  • 25 or 35 Chain
  • Tooth Count
  • Three Bore Options: Round, Hex, and TTB Adapter Bore
  • Tooth face offset for fine tuning
  • Optional hub with configurable diameter and height
  • Optional tooth chamfer if you just want the 2D profile of the sprocket teeth



Edit: Part Studio was moved to MKCAD Configurable sprocket and chain document.


This is really awesome Phil! Would it be too hard to add a bolt circle option? Maybe hole size, radius, and number of holes?

1 Like