Instead of using `UnitConvert`, you can just divide the output by the relevant output unit. Here's one implementation of the idea, based on the OP's version: ClearAll @ NoUnits; SetAttributes[NoUnits, HoldAll]; NoUnits[fun_, quants : {__Quantity}, output : Quantity[1, out_]] := fun/output /. Thread[quants[[All, 1]] -> quants] /. Quantity[x_, _] :> x Usage: LFullNU[l_, T_, a_, b_] = NoUnits2[Lfull[l, T, a, b], {Quantity[l, "Micrometers"], Quantity[T, "Kelvins"]}, Quantity[1, "Microflicks"]]; Seems to work. I have as inputs the full `Quantity`s to make the replacements easier. As a check, you can try BBNU[l_, T_] = NoUnits2[BB[l, T], {Quantity[l, "Micrometers"], Quantity[T, "Kelvins"]}, Quantity[1, "Microflicks"]]; which yields the same result as in the OP.