Računarski softver ili samo softver je skup podataka ili računarskih instrukcija koje računaru govore kako treba da radi. U računarstvu i softverskom inženjerstvu, računarski softver je sva informacija koju obrađuju računarski sistemi, programi i podaci. Računarski softver uključuje računarske programe, biblioteke i srodne neizvršive podatke, poput digitalnih medija. Računarski hardver i softver usko su povezani, i nije ih moguće koristiti samostalno.
Na najnižem programskom nivou, izvršni kôd se sastoji od instrukcija na mašinskom jeziku kojeg podržava centralna procesorska jedinica (CPU) ili grafička procesorska jedinica (GPU). Mašinski jezik se sastoji od grupe binarnih brojeva koji naznačuje procesorske instrukcije. Na primjer, instrukcija može promijeniti vrijednost pohranjenu na određenoj lokaciji za pohranu u računaru – efekt koji korisnik ne može direktno da vidi. Instrukcija se može pozvati i na jednu od mnogih operacija ulaza/izlaza, na primjer prikazivanje određenog teksta na ekranu računara; promjene stanja koje bi trebale biti vidljive korisniku. Procesor izvršava upute redoslijedom koji mu je dat, osim ako mu je naređeno da "preskoči" na neku drugu instrukciju ili ga operativni sistem prekine. Do 2015, većina ličnih računara, pametnih uređaja i servera imaju procesore sa više izvršnih jedinica (višejezgreni procesori) ili više procesora koji zajedno obavljaju računanje.
Većina softvera napisana u programskom jeziku visokog nivoa. Lakši su i efikasniji programerima jer su bliži prirodnim jezicima nego mašinskom jeziku.[1] Jezici visokog nivoa se prevode na mašinski jezik koristeći kompajler ili interpreter ili s kombinacijom oba. Softver može biti napisan i na asemblerskom jeziku, koji je također jezik niskog nivoa i bliži je mašinskom jeziku, a prevodi se pomoću asemblera.