Most of the time the mil-dot is used for downrange zeroing, tho it was designed as a rangefinding reticle.
All reticle-rangefinding is based off a modification of the mil-dot mil-ranging formula and can be accomplished with any reticle really (simple plex, ballistic, custom, whatever). Here's the formula in it's most basic form (inches to yds.)--
tgt. size (") x range of reticle subtension measurement (usually 100 yds.) / subtension measurement (") / quantity of "gap" the tgt. occupies (decimal equivalent) = range (yds.)
...looks complicated, super simple to apply. Here's the formula with the 12X values substituted for that optic at the correct power for the mil-dot milliradian (3.6"/100yds.)--
tgt. size = say 12"
range of RSM= 100 yds.
subtension = 3.6" (std. milliradian)
now fill in the variables--
12 x 100 / 3.6 / 1.0 (tgt. occupies 1 complete dot to dot "subtension unit") = 333 yds.
now recognizing that 12x100/3.6 is going to be a constant of 333.3 we can enter that into our calculator's memory to finish the ranging chart--
333.3/0.9=370
0.8=415
0.7=475
etc.
If u want to use the optic at it's highest power (24) then the dot to dot subtension will be 1/2 what it is @ 12X (as power INCREASES reticle subtension DECREASES). So here's the new equation--
12x100/1.8/1.0=666
etc.
all this looks complicated but once it's practiced it'll be understood and easier to see how it all comes together.
Reticle-rangefinding will always be a poor substitute for the laser tho.