Perangkat lunak (bahasa Inggris: software) adalah istilah khusus untuk data yang diformat dan disimpan secara digital, termasuk program komputer, dokumentasinya, dan berbagai informasi yang bisa dibaca, dan ditulis oleh komputer. Dengan kata lain, bagian sistem komputer yang tidak berwujud. Istilah ini menonjolkan perbedaan dengan perangkat keras komputer.[1] Perangkat lunak juga termasuk dokumen desain dan spesifikasi.
Sejarah perangkat lunak terkait erat dengan pengembangan komputer digital pada pertengahan abad ke-20. Program awal ditulis dalam bahasa mesin khusus perangkat kerasnya. Munculnya bahasa pemrograman tingkat tinggi pada 1958 memungkinkan instruksi yang lebih mudah dipahami manusia, yang membuat pengembangan perangkat lunak lebih mudah dan portabel antar arsitektur komputer yang berbeda. Perangkat lunak yang ditulis dalam bahasa pemrograman dijalankan melalui compiler atau interpreter untuk dieksekusi pada perangkat keras arsitektur tersebut. Seiring waktu, perangkat lunak menjadi semakin kompleks, terutama karena perkembangan dalam bidang jaringan, sistem operasi, dan basis data.
Perangkat lunak secara umum dapat dijeniskan menjadi dua jenis utama:
sistem operasi, yang mengelola sumber daya perangkat keras dan memberikan layanan untuk aplikasi
aplikasi, yang melakukan pekerjaan tertentu untuk pengguna
Pengendali perangkat keras (device driver) yaitu penghubung antara perangkat perangkat keras pembantu, dan komputer adalah perangkat lunak yang banyak dipakai di swalayan, dan juga sekolah, yaitu penggunaan pemindahan kode batang pada aplikasi basis data lainnya.