Redemption through action, not words
Valjean doesn't just decide to be good. He proves it repeatedly through costly choices: confessing in court, rescuing Cosette, releasing Javert, carrying Marius through the sewer. Hugo argues that moral change has to be demonstrated, not declared.
The cruelty of social judgment
The novel shows how labels stick. Valjean's criminal record follows him no matter what he does. Fantine is destroyed by gossip. The Thénardiers exploit anyone weaker than them and face few real consequences. Society rewards appearances and punishes the wrong people.
Law versus conscience
Javert represents the law as an absolute system. Valjean represents conscience as a personal guide. The novel puts these two in direct conflict and shows that following the law without moral judgment produces injustice.
Love as a force that changes people
Valjean's love for Cosette gives him a reason to keep living morally. Marius's love for Cosette pulls him into the revolution and nearly kills him. Éponine's love for Marius leads her to help him find the woman he loves instead of her. Love in this novel moves people toward sacrifice.
Political idealism and its limits
The 1832 uprising is full of smart, passionate young men who die for a cause that fails immediately. Hugo respects their idealism but doesn't pretend it was enough. The barricade scenes force a question: what does political sacrifice accomplish when the system doesn't change?