The main difference is scope. Variables declared with var are function-scoped, whereas variables declared with let are block-scoped. This means let variables have a narrower scope, making them preferable in many coding situations for better readability and avoiding potential variable reassignment bugs.