The Ardennes Offensive, also known as the Battle of the Bulge, was a desperate last-ditch attempt by Hitler to win the war. He felt that a successful campaign that threw the western Allies on their heels would force them to sue for peace. he could then perhaps approach the Allied powers about an alliance against Soviet Russia, and therefore protect Germany in the end on both fronts.
It was a ludicrous idea. So the first reason it failed was because the plan was deeply strategically and tactically flawed.
The second reason was that the offensive relied on the last generation of German soldiers, the old, the young, the infirmed and even the wounded. Their units were seasoned with SS veterans and they were hurriedly given a few weeks of training, but these were by no means front line troops, and their behavior on the battlefield reflected that.
The third reason the offensive failed was for lack of supplies. Fuel was especially the resource the offensive (any offensive) depended on, and as soon as the weather improved (a couple of weeks into the offensive) Allied planes struck German supply depots and storage facilities, convoys and trains at will. Without that fuel, German panzers were sitting ducks for airstrikes.
The fourth reason, to me, was that the tactical success of the offensive depended on the capture of Bastogne and the road junction it controlled. The original plan called for an assault on Antwerp, but without Bastogne this was impossible. So by successfully defending that one point, the Allies unraveled the entire offensive.
Lastly, after the initial advance crushed American replacement units on the front lines, the Germans met up against the 101st Airborne Division, which were elite troops, and later against Patton's 3rd Armored division. So the last reason the offensive failed was because of the skill of American defenders.