🛝Toolio
Acerca de Contacto

⏱️ Cronómetro Online con Registro de Vueltas

Presiona Iniciar y la herramienta no suma literalmente fragmentos pequeños de tiempo en treinta milisegundos. Registra la lectura exacta de performance.now() en el instante en que inicias, y en cada redibujo resta ese número almacenado del actual para obtener el tiempo transcurrido — recalculado fresco, no acumulado. Esa distinción importa porque los navegadores ralentizan deliberadamente setInterval en pestañas en segundo plano para ahorrar batería, lo cual es la forma clásica en que los cronómetros caseros se desvían o pierden segundos. Debido a que este cronómetro siempre obtiene su número a partir de una diferencia de marca de tiempo en lugar de contar cuántas señales se han disparado, el tiempo mostrado vuelve al valor correcto en el momento en que regresas a la pestaña, incluso después de minutos lejos.

El cronómetro es un temporizador de vueltas gratuito en el navegador que mide el tiempo transcurrido comparando el reloj de tiempo monótono performance.now() contra una marca de tiempo almacenada de inicio, en lugar de contar las señales de setInterval, por lo que el número mostrado permanece preciso incluso cuando el navegador limita las actualizaciones de la pestaña.

00:00.00

Privado por diseño. Esta herramienta funciona por completo en tu navegador: nada de lo que introduces se sube ni se guarda, y funciona sin conexión.

Acerca de

Bajo el capó hay tres piezas de estado: un valor acumulado `elapsed` en milisegundos, una captura `startAt` de `performance.now()` tomada en el momento en que presionas Iniciar, y una bandera booleana `running`. La función que genera el número en pantalla es simplemente `elapsed` más, si está en ejecución, la diferencia entre el momento actual y `startAt`. Un `setInterval` llama a esa función cada 30 milisegundos únicamente para repintar la pantalla — el intervalo en sí no lleva información de tiempo, es solo un disparador de actualización. Esa es la forma correcta de construir un cronómetro, y evita directamente el error común donde un temporizador agrega un incremento fijo en cada señal y lentamente se desvía una vez que las señales se retrasan, se omiten o se agrupan.

Esa elección de diseño es también lo que ocurre cuando cambias a otra pestaña. Los navegadores limitan los temporizadores de pestañas en segundo plano para ahorrar CPU y batería — un `setInterval` configurado para cada 30 ms puede retrasarse hasta una vez por segundo o más lento mientras la pestaña no sea visible. En este cronómetro, eso solo afecta con qué frecuencia se repinta el número en pantalla; la matemática subyacente (marca de tiempo actual menos marca de tiempo de inicio, más lo ya acumulado) no se preocupa por cuántas repintadas se saltaron. Vuelve a la pestaña y la siguiente repintada muestra exactamente el tiempo transcurrido correcto — nada se pierde ni se gana por el limitado, solo la suavidad de ver los segundos avanzar mientras mirabas algo más.

Usar `performance.now()` en lugar de `Date.now()` también es la primitiva correcta para este trabajo, no un detalle incidental. `Date.now()` refleja el reloj de pared de tu sistema, y los relojes de pared pueden saltar — una laptop despertando de la suspensión y sincronizándose con un servidor NTP, un cambio manual de reloj o una ajuste de horario de verano pueden hacer que `Date.now()` avance o incluso retroceda en medio de una sesión. `performance.now()` se define como un reloj monótono: solo cuenta hacia arriba a una tasa constante y no se ve afectado por esas correcciones, lo cual es exactamente la garantía que necesita un cronómetro y algo que un temporizador simple de reloj de pared no tiene.

La limitación honesta es la persistencia, y no hay ninguna. Esta construcción mantiene `elapsed` y el array `laps` como variables JavaScript ordinarias en la memoria de la página — no hay ninguna llamada en el código fuente a localStorage o a la propia `Playground.store()` de este sitio que usan otras herramientas de Toolio para sobrevivir a una recarga. Eso significa que al recargar la página, cerrar la pestaña o hacer clic para ir a otra herramienta, el tiempo en ejecución y cada carrera registrada se borran instantáneamente y permanentemente. No hay "continuar la última sesión", nada se sincroniza entre dispositivos, y nada para respaldar, porque nada se escribe en el almacenamiento desde el principio. Si la historia de las vueltas realmente importa para ti — un registro de entrenamiento, un conjunto de tiempos de presentación — anota los números o toma una captura de pantalla antes de navegar, porque esta página no los recordará por ti.

Cómo usar

  1. Haz clic en "Iniciar" — el botón se etiqueta inmediatamente como "Pausar" y el reloj en pantalla comienza a aumentar en tiempo real, repintándose cada 30 milisegundos.
  2. Haz clic en "Vueltas" en cualquier momento mientras esté en ejecución para capturar el tiempo transcurrido actual; la nueva entrada se fija en la parte superior de la lista de vueltas y muestra tanto su tiempo parcial (tiempo desde la última vuelta) como su total acumulado.
  3. Haz clic en el mismo botón, ahora etiquetado como "Pausar", para congelar la visualización — el tiempo transcurrido se mantiene internamente, nada se pierde, y el botón vuelve a "Iniciar".
  4. Haz clic en "Iniciar" nuevamente para reanudar el conteo desde exactamente donde lo dejaste, no desde cero.
  5. Haz clic en "Restablecer" para reiniciar la visualización, borrar cada vuelta registrada y restaurar ambos botones a sus etiquetas iniciales — esto también es la única manera de comenzar una nueva sesión, ya que no hay una función de guardado para proteger la anterior primero.

Preguntas frecuentes

¿Cómo mide realmente este cronómetro el tiempo bajo el capó?
Lee `performance.now()` una vez, en el instante en que presionas Iniciar, y almacena ese número. Desde entonces, el valor en pantalla es simplemente "tiempo ya acumulado" más "tiempo actual de performance.now() menos esa marca de tiempo de inicio almacenada" — recalculado fresco en cada repaint de 30 ms. Nunca simplemente agrega un +30 ms fijo a un total en ejecución en cada tick, lo cual es el atajo que hace que muchos cronómetros caseros se desvien lentamente del sincronismo.
¿Qué le pasa al tiempo si cambio a otra pestaña del navegador mientras está en ejecución?
Las pestañas en segundo plano se limitan — el navegador puede retrasar un `setInterval` de 30 ms hasta una vez por segundo o más lento para ahorrar CPU y batería, por lo que el número en pantalla puede parecer congelado o saltar mientras estás lejos. Pero porque este cronómetro siempre calcula el tiempo transcurrido como una diferencia de marca de tiempo en lugar de contar cuántas señales se dispararon, al regresar a la pestaña, la siguiente repintada muestra exactamente el tiempo transcurrido correcto. No pierdes ni ganas tiempo por el limitado — solo la suavidad visual sufre mientras no estás mirando.
¿Por qué performance.now() en lugar de Date.now() — ¿realmente importa?
Sí. `Date.now()` refleja el reloj de pared de tu sistema, el cual puede saltar hacia adelante o atrás — por ejemplo, justo después de que una laptop despierte de la suspensión y se sincronice con un servidor NTP, o si el reloj del sistema se cambia manualmente. `performance.now()` es un reloj monótono que solo aumenta a una tasa constante y es inmune a esas correcciones, lo cual es exactamente la propiedad que necesita un cronómetro y esta construcción usa el correcto para ello.
¿Guarda mi tiempo transcurrido o historia de vueltas en algún lugar?
No — y a diferencia de otras herramientas de Toolio, no usa en absoluto el localStorage del navegador para este dato. Todo lo que ves existe solo en la memoria de la página mientras esta pestaña específica esté abierta. Recarga la página, cierra la pestaña o navega a otra herramienta, y tu tiempo transcurrido y cada vuelta se van para siempre; no hay deshacer ni guardado automático, porque nada se escribe en el almacenamiento desde el principio. Anota los números o toma una captura de pantalla antes de irte si necesitas un registro.
¿Hay un límite en las vueltas, y qué significan los dos números en cada fila de vueltas?
No hay límite — la lista simplemente crece, con la última vuelta fijada en la parte superior. Cada fila muestra dos números: el tiempo parcial, en el color de énfasis, que es el tiempo transcurrido desde tu última vuelta; y el total, en gris, que es el tiempo acumulado desde que presionaste Iniciar. Esa combinación te permite juzgar un segmento individual — un intervalo de entrenamiento, una sección de una charla — sin perder de vista el tiempo total.
¿Esta herramienta sube mis datos?
No. Todo se ejecuta en tu navegador, así que tus datos nunca salen de tu dispositivo e incluso funciona sin conexión una vez cargada la página.