Gustafsson, 42 år, flyger tillbaka till Sverige från Afrika, sade Sveriges utrikesminister Margot Wallström i ett uttalande på måndagen.
Han greps av al-Qaida i Islamiska Maghreb (AQIM) tillsammans med två andra män, varav en frigjordes i en gryning räd 2015.
Margot Wallström sade att Gustafsson var "på gott humör", lokal mediarapport.
– Det är med stor glädje jag kan meddela att Johan Gustafsson har släppts, tillade Margot Wallström.
Hon sade att svenskens frigivning var tack vare "extensiva insatser" och samarbete mellan utrikesdepartementet, polisen och "utländska myndigheter".
Margot Wallström sade att hon hade talat med Gustafsson, som hon beskrev som "lycklig" och "överväldigad" vid måndagens evenemang.
"Jag kan inte säga mer i nuläget", tillade hon.
Sveriges f.d. utrikesminister Carl Bildt sade att Gustafssons kidnappning vägde tungt under hans tid i rollen som avslutades 2014.
Han twittrade på måndagen: "Väldigt glädjande att Johan Gustafsson är fri. Inget enskilt fall berörde mig mer som utrikesminister."
Mr Gustafsson kidnappades tillsammans med sydafrikanska Stephen McGown och holländaren Sjaak Rijke.
Mr Rijke frigavs av franska specialstyrkor i april 2015 efter att ha upptäckts av en slump i en gryningsräd i norra Mali.
AQIM tog ett antal västerländska gisslan innan den franska militären sände ut sina styrkor i januari 2013.
I en separat incident i december 2014 frigavs den franske gisslan Serge Lazarevic efter ett byte av fångar.
Gisslan Johan Gustafsson, som innehas av al-Qaida i Mali sedan 2011, har frigivits, säger den svenska regeringen.