Un Shack-Hartmann est composé d'une matrice de micro-lentilles, placée devant un capteur sensible à la lumière (le plus souvent une caméra CCD). Ces deux composants sont situés dans des plans parallèles.
À l'arrivée d'un faisceau, chaque micro-lentille génère sur le capteur un point de focalisation, dont la position varie, en fonction de la déformation locale du front d'onde, autour de sa position de référence, correspondant à un front d'onde non déformé.
L'image donnée par le capteur est ainsi une matrice de taches dont le nombre correspond au nombre de micro-lentilles. La déviation de chaque tache par rapport à sa référence donnant la pente (ou dérivée) locale du front d'onde, l'ensemble des déviations donne directement le gradient du front d'onde. Des algorithmes permettent alors de remonter au front d'onde.
Si un front d'onde est plan ou sphérique (c’est-à-dire issu d'une source lumineuse ponctuelle), les micro-lentilles génèrent une matrice de taches dont l'espacement est parfaitement régulier. Cet espacement est directement relié à la courbure du front d'onde (qui est directement reliée à la distance de la source) : plus celui-ci est courbé, plus les taches seront espacées.
Le capteur permet d'effectuer la mesure de front d'onde en temps réel. Celui-ci étant relié à un ordinateur, un programme informatique recherche sur l'image la position des taches, calcule leur déviation par rapport à leur tache de référence respective, puis remonte au front d'onde.