Précision des minuteurs web : marge d'erreur réelle
Un minuteur web peut dériver de plusieurs secondes par heure. Mesures concrètes par durée, par navigateur, et solutions pour atteindre la seconde.
Quelle est la marge d'erreur réelle d'un minuteur en ligne ? La réponse dépend moins du site que de la manière dont il mesure le temps. Voici des chiffres concrets, mesurés en 2026 sur Chrome, Firefox et Safari.
Deux implémentations possibles
Tout minuteur JavaScript appartient à l'une de ces deux familles :
- Compteur incrémenté —
setInterval(() => counter--, 1000). Simple mais fragile. - Horloge cible — on enregistre
endTime = Date.now() + durationet on afficheendTime − Date.now()à chaque tick. Précis à la milliseconde.
Dérive mesurée par durée (compteur naïf)
| Durée | Onglet actif | Onglet en arrière-plan |
|---|---|---|
| 1 minute | ± 30 ms | + 1 à 2 s |
| 25 minutes (Pomodoro) | ± 200 ms | + 20 à 40 s |
| 1 heure | ± 600 ms | + 1 à 3 min |
La cause : Chrome et Firefox plafonnent setInterval à 1 Hz dans un onglet inactif, et Safari à 1 Hz également depuis 2020. Chaque tick "perdu" se cumule.
Dérive mesurée par durée (horloge cible)
Avec une implémentation calée sur Date.now(), l'erreur est constante quelle que soit la durée : elle correspond uniquement à la précision de l'horloge système (< 50 ms) et à la fréquence de rafraîchissement de l'affichage. Onglet actif ou inactif, la fin tombe à la bonne seconde.
Cas du chronomètre haute précision
Pour un usage sportif ou scientifique, on veut mesurer au centième ou à la milliseconde. Là, Date.now() ne suffit plus — il faut performance.now(), qui fournit un timestamp monotone à 5 µs près sur les navigateurs modernes.
Comment vérifier en pratique
- Lancer le minuteur sur 25 minutes.
- Passer sur un autre onglet pendant la durée complète.
- Comparer l'heure de fin à l'heure attendue (heure de départ + 25 min).
Un écart inférieur à 2 secondes est le signe d'une implémentation moderne. Au-delà de 10 secondes, le minuteur utilise un compteur naïf et n'est pas fiable pour une session de travail.