Chronomètre en ligne
Chronomètre en ligne gratuit avec précision à la milliseconde et chronométrage par tours
Qu'est-ce qu'un Chronomètre en Ligne ?
Un chronomètre en ligne est un outil de chronométrage de précision qui mesure le temps écoulé depuis zéro, généralement avec une résolution à la milliseconde. Contrairement à un minuteur de compte à rebours, un chronomètre répond à « combien de temps cela a-t-il pris ? », ce qui le rend idéal pour l'entraînement sportif, les expériences de laboratoire, les présentations, la cuisine, les sprints de codage et toute activité où vous devez suivre une durée. Cet outil s'exécute entièrement dans votre navigateur en utilisant requestAnimationFrame pour des mises à jour fluides et performance.now() pour une mesure du temps monotone, restant ainsi précis même lorsque l'horloge système est ajustée. L'enregistrement des tours permet de capturer les temps intermédiaires avec mise en évidence du meilleur/pire tour, et toutes les données restent locales — rien n'est téléchargé.
Comment utiliser
Démarrage rapide
- Cliquez sur 'Démarrer' pour commencer — l'affichage montre heures:minutes:secondes.millisecondes
- Cliquez sur 'Tour' pour enregistrer un temps intermédiaire pendant que le chronomètre continue
- Cliquez sur 'Pause' pour figer l'affichage, puis 'Démarrer' pour reprendre
- Cliquez sur 'Réinitialiser' pour effacer le chronomètre et tous les enregistrements de tours
Conseils
- Le chronomètre utilise requestAnimationFrame pour des mises à jour d'affichage d'environ 16ms et performance.now() pour un chronométrage précis.
- Gardez l'onglet visible pour l'affichage le plus fluide. Les onglets en arrière-plan peuvent limiter les trames d'animation.
- Les temps de tour sont codés par couleur : vert pour le tour le plus rapide, rouge pour le plus lent.
Cas d'utilisation
Principe technique
Le moteur du chronomètre évite complètement le modèle setInterval sujet à la dérive. Au lieu de cela, il utilise requestAnimationFrame (rAF) pour les mises à jour d'affichage et performance.now() comme source de temps de référence. Lorsque l'utilisateur clique sur Démarrer, le moteur enregistre le timestamp performance.now() actuel comme startTime. À chaque trame d'animation, il calcule elapsed = accumulated + (performance.now() - startTime), où accumulated conserve le temps total écoulé avant la dernière pause. Ce modèle à deux variables (temps accumulé + delta d'exécution) gère correctement les cycles pause/reprise sans perte de précision inférieure à la milliseconde. performance.now() est choisi plutôt que Date.now() car il est monotone — il ne recule jamais en raison de corrections NTP, de changements manuels d'horloge ou de transitions d'heure d'été. Il offre également une résolution inférieure à la milliseconde (généralement une granularité de 5 µs dans les navigateurs modernes), ce qui en fait la bonne horloge pour le chronométrage de courte durée et de haute précision. Le rappel rAF est limité au taux de rafraîchissement de l'écran (généralement 60 Hz = ~16,67 ms, jusqu'à 120 Hz sur les écrans à haut taux de rafraîchissement), de sorte que la mise à jour visuelle est fluide mais n'est pas la la référence — le temps écoulé réel provient du calcul performance.now(), qui est continuellement correct. L'enregistrement des tours capture le elapsedMs actuel au moment où le bouton Tour est cliqué, en calculant la différence de fraction par rapport au total du tour précédent. Les tours les plus rapides et les plus lents sont déterminés en comparant toutes les différences de tour avec Math.min/Math.max, et l'affichage les met en évidence avec des styles vert et rouge respectivement. Tout l'état réside dans les hooks useState de React au sein du composant client, et aucune donnée n'est persistée ou transmise — le chronomètre est éphémère par conception, se réinitialisant complètement à la fermeture de la page ou à l'appui sur le bouton Réinitialiser.
- performance.now() fournit des timestamps monotones de précision inférieure à la milliseconde — insensibles aux changements d'horloge système.
- requestAnimationFrame pilote les mises à jour d'affichage au taux de rafraîchissement (60–120 Hz) pour un rendu fluide.
- Le modèle temps accumulé + delta d'exécution gère pause/reprise sans perte de précision.
- Les différences de tour sont calculées comme currentTotal - previousTotal pour un chronométrage fractionné précis.
- Tous les calculs s'exécutent localement dans le navigateur ; aucun aller-retour serveur ni téléchargement de données.
Exemples
Piste d'athlétisme — fractions de 400m
Tour 1 -> 01:12.450 (+01:12.450)
Tour 2 -> 02:26.180 (+01:13.730)
Tour 3 -> 03:38.910 (+01:12.730)
Tour 4 -> 04:50.320 (+01:11.410 le plus rapide)Répétition de présentation — chronométrage par diapositive
Intro -> 00:45.200 (+00:45.200)
Problème -> 02:10.850 (+01:25.650)
Solution -> 04:35.120 (+02:24.270)
Démo -> 07:10.430 (+02:35.310)
Conclusion -> 08:25.610 (+01:15.180)
Total : 8 min 25 s — sous l'objectif de 10 minEntraînement HIIT — suivi d'intervalles
Manche 1 -> 00:30.150 (+00:30.150)
Repos 1 -> 00:45.320 (+00:15.170)
Manche 2 -> 01:15.480 (+00:30.160)
Repos 2 -> 01:30.510 (+00:15.030)
Manche 3 -> 02:00.670 (+00:30.160 le plus lent)
Manche 4 -> 02:30.520 (+00:29.850 le plus rapide)Questions fréquentes
Quelle est la précision du chronomètre ?
Le chronomètre utilise performance.now() qui offre une précision inférieure à la milliseconde (généralement une granularité de 5 microsecondes). L'affichage se met à jour environ 60 fois par seconde via requestAnimationFrame, donc la mise à jour visuelle est à moins de 16ms de la valeur réelle. Pour la plupart des usages pratiques — sports, cuisine, présentations — c'est plus que suffisant.
Le chronomètre continue-t-il si je change d'onglet ?
Oui. Le temps écoulé est calculé à partir du timestamp performance.now() absolu, pas à partir de ticks cumulatifs. Lorsque vous revenez à l'onglet, l'affichage montre immédiatement le temps écoulé correct. Cependant, requestAnimationFrame est limité dans les onglets en arrière-plan, donc la mise à jour visuelle peut s'interrompre jusqu'à votre retour.
Que se passe-t-il si mon ordinateur se met en veille ?
performance.now() est monotone mais ne progresse pas pendant que le système est suspendu. Au réveil de l'ordinateur, l'affichage du chronomètre montrera le temps écoulé comme si le système n'avait jamais dormi — il n'inclura PAS la durée de veille. C'est le comportement correct pour la plupart des cas d'utilisation de chronométrage.
Puis-je exporter ou sauvegarder mes temps de tour ?
Le chronomètre ne prend actuellement pas en charge la sauvegarde ou l'exportation des données de tour. Tous les enregistrements de tour sont conservés en mémoire et effacés lors de la réinitialisation ou de la fermeture de la page. Pour un enregistrement persistant, copiez manuellement les temps affichés ou utilisez un tracker de fitness dédié.
Pourquoi utiliser performance.now() plutôt que Date.now() ?
performance.now() est monotone — il ne recule jamais. Date.now() peut sauter de plusieurs secondes ou minutes lorsque l'horloge système est ajustée (synchronisation NTP, changement manuel, heure d'été). Pour le chronométrage de courte durée, performance.now() est le bon choix. Il offre également une résolution inférieure à la milliseconde, contrairement à la résolution en millisecondes de Date.now().
Des données sont-elles téléchargées vers un serveur ?
Non. Le chronomètre s'exécute entièrement dans votre navigateur. Aucune donnée de chronométrage, enregistrement de tour ou information d'utilisation n'est envoyée à un serveur. La page fonctionne hors ligne une fois chargée.
Quelle est la différence entre un chronomètre et un minuteur de compte à rebours ?
Un chronomètre mesure le temps écoulé vers le haut depuis zéro — il répond à « combien de temps cela a-t-il pris ? ». Un minuteur de compte à rebours part d'une durée définie et compte à rebours jusqu'à zéro — il répond à « combien de temps reste-t-il ? ». Cet outil est un chronomètre ; pour une fonctionnalité de compte à rebours, utilisez l'outil Minuteur de Compte à Rebours.