here is a function based on [WolframAlpha[]](http://reference.wolfram.com/mathematica/ref/WolframAlpha.html?q=WolframAlpha&lang=en) ShowSteps[exp_] := WolframAlpha[ ToString@HoldForm@InputForm@exp, {{"Input", 2}, "Content"}, PodStates -> {"Input__Show steps"}] SetAttributes[ShowSteps, HoldAllComplete] for limits use PodStates -> {"Limit__Show steps"} for integration PodStates -> {"IndefiniteIntegral__Show steps"} **Update:** WolframAlpha [changed output][1]. Now ShowSteps should work with: ShowSteps[exp_] := WolframAlpha[ToString@HoldForm@InputForm@exp, {{"Input", 1}, "Content"}, PodStates -> {"Input__Step-by-step solution","Input__Show all steps"}] SetAttributes[ShowSteps, HoldAll] ![enter image description here][2] **Update - Nov 2014** ShowSteps[exp_] := WolframAlpha[ToString@HoldForm@InputForm@exp, {{"Input", 2}, "Content"}, PodStates -> {"Input__Step-by-step solution"}] SetAttributes[ShowSteps, HoldAll] [1]: http://blog.wolframalpha.com/2012/09/26/introducing-expanded-step-by-step-math-solutions/ [2]: https://i.sstatic.net/Rz7x4.png