Rifles, machine guns, grenades, anti-tank systems and armoured vehicles would be sent, German Defence Minister Ursula von der Leyen said.
Correspondents says it is rare for Germany to export weapons into an active conflict zone.
The US, Italy, France and Britain are also arming Kurds in northern Iraq.
"This is in our security interest," Ms von der Leyen said, adding that the shipments would be made in three tranches starting this month.
The weapons will be flown to Irbil in Kurdish-run northern Iraq, via Baghdad.
The equipment has been in German depots for a long time, much of it dating back to the Cold War, German ARD TV reports.
Some German politicians have voiced concern that the weapons could end up in the wrong hands.
"This isn't an easy decision for us, but it's the right decision in a situation that is difficult in every way," said German Foreign Minister Frank-Walter Steinmeier.
The government said Germany had a "humanitarian responsibility... to help those suffering and to stop IS [Islamic State militants]".
Germany has already sent humanitarian aid to the Kurdish region to help refugees displaced by IS, which is persecuting Shia Muslims, Christians, Yazidis and other minorities.
The arms will come from German army depots, and will include 30 Milan anti-tank rocket launchers with 500 rockets, ARD TV reports.
Milan launchers have already been used by combatants in Syria, and IS fighters are believed to have them. The Milan can hit targets at a distance of 2,000m (6,500ft).
Germany will also send 240 armour-piercing bazookas, 8,000 G3 rifles with two million rounds, and 8,000 of the newer G36 rifles, with four million rounds. Forty MG3 machine guns are also on the list, and 8,000 pistols.
More than 100 military vehicles will also be sent - mostly troop transporters.
Germany has decided to send weapons to equip 4,000 Kurdish fighters defending areas of northern Iraq against Islamist militants.