* easier/quicker for humans to write and understand
* easier/quicker to maintain/debug/spot errors
* code is closer to English
* less code to write - one HLL instruction represents many assembly instructions
* portable between processors
* will work with different types of computer
* less memory efficient
* can be slower to execute if not optimised for the particular processor