ToolActToolAct

Timer de Contagem Regressiva

Crie timers de contagem regressiva com tempo personalizado e lembretes

Definir Tempo

00:05:00

O que é um Timer de Contagem Regressiva?

Um temporizador de contagem regressiva começa em uma duração escolhida e desce até zero. Ele é útil para trabalho focado, cozinha, intervalos de exercício, aulas, reuniões, apresentações e qualquer tarefa em que respeitar um bloco de tempo seja mais importante do que olhar o relógio atual. Diferente de um cronômetro, que mede o tempo decorrido a partir de zero, a contagem regressiva mostra quanto falta e quando a atividade deve terminar. Isso ajuda a controlar o ritmo, encerrar no momento certo e evitar atrasos. Esta página também inclui cronômetro e vários temporizadores, servindo para voltas, etapas e tarefas paralelas. Como tudo roda na aba aberta do navegador, mantenha a página ativa quando o alerta for importante.

Como Usar

Como usar

  1. Selecione uma aba: Contagem Regressiva, Cronômetro ou Múltiplos Temporizadores
  2. Para Contagem Regressiva: insira horas/minutos/segundos ou clique em tempos predefinidos
  3. Clique em 'Iniciar' para começar a contagem e em 'Pausar' para pausar
  4. Um alerta sonoro é emitido quando a contagem regressiva termina

Notas sobre Temporização

  • Os temporizadores do navegador podem pausar ou ficar imprecisos quando a aba fica em segundo plano, o dispositivo entra em repouso ou o modo de economia de energia é ativado.
  • Para reuniões, provas ou trabalho em produção, use um relógio do sistema ou um temporizador dedicado como referência final.

Casos de uso

Executar uma contagem regressiva simples com alerta sonoroDefina horas, minutos e segundos, use predefinições rápidas, inicie ou pause o temporizador e deixe o navegador reproduzir um alarme curto quando a contagem chegar a zero. A duração alvo é mantida apenas no estado local da página, então prazos privados como consultas médicas, janelas de prova ou planejamento de eventos surpresa não são transmitidos a nenhum servidor enquanto o temporizador está em execução.
Usar o cronômetro para voltas e controle de ritmoMude para o modo cronômetro para cronometrar rodadas de prática, apresentações, exercícios ou experimentos, registrando voltas com tempo total e diferenças parciais que destacam as melhores e piores voltas. Isso é útil quando o ritmo importa mais do que um ponto final de contagem regressiva fixo.
Gerenciar vários temporizadores independentes em uma páginaUse o modo multi-timer quando cozinha, workshops, blocos de estudo, provas ou sessões ao vivo precisarem de temporizadores separados que podem ser iniciados, pausados, resetados ou excluídos independentemente. Mantê-los em uma página reduz a confusão quando várias tarefas curtas se sobrepõem, e a página não exige login nem sincronização para manter o estado durante uma única sessão.
Manter a aba ativa para que o alarme realmente dispareNavegadores limitam temporizadores em segundo plano, então deixe a página visível ou em uma aba em primeiro plano durante contagens regressivas longas e teste com uma execução curta de 10 segundos antes de confiar em uma prova real, apresentação ou etapa de cozinha. O setInterval varia dezenas de milissegundos por minuto, enquanto um loop com requestAnimationFrame varia apenas pela oscilação de exibição, então uma contagem curta funciona bem com setInterval, mas um temporizador longo de 60 minutos de prova se beneficia de um loop livre de oscilação em uma aba visível.
Usar predefinições em vez de digitar horas e segundosEscolha a predefinição Pomodoro, prova ou HIIT quando a duração é padrão, para que a configuração do temporizador corresponda ao método que você está executando e evite a variação de 24 minutos vs. 25 minutos que quebra o ritmo do Pomodoro. A limitação de abas no Safari mobile, Chrome Android e Firefox é a razão mais comum de um temporizador em segundo plano disparar tarde ou pular, então para um evento importante, fixe a aba e mantenha o dispositivo acordado, e faça um teste seco de cinco segundos antes da sessão real.

Princípio técnico

O motor de contagem regressiva não usa setInterval(callback, 1000) como relógio autoritativo - essa abordagem acumula desvio porque a especificação do event-loop do HTML5 só garante um atraso mínimo, não uma cadência fixa. Em vez disso, a página registra um startTime via Date.now() (ou performance.now() para resolução submilissegundo) e em cada tick calcula remaining = targetDuration - (Date.now() - startTime). A atualização visual é conduzida por requestAnimationFrame, que é limitado pelo navegador à taxa de vsync do display (tipicamente 60 Hz / 16,67 ms, às vezes 120 Hz em laptops e celulares de alta taxa de atualização). Esse design autocorretivo mantém os segundos exibidos alinhados com o relógio real mesmo após a fila de tarefas do JavaScript parar para coleta de lixo ou um layout longo. A limitação em segundo plano é a principal fonte de surpresas com temporizadores. De acordo com o HTML Living Standard, abas ocultas limitam setInterval/setTimeout a um mínimo de 1000 ms (Chrome, Firefox e Safari implementam isso com suas próprias heurísticas; o Chrome adicionalmente congela abas inativas após cerca de 5 minutos em bateria). A Page Visibility API (document.visibilityState, document.hidden, o evento visibilitychange) permite que o temporizador detecte uma troca de aba e reconcile seu relógio interno com Date.now() quando a aba volta a ficar visível. O som de fim de contagem é reproduzido pela Web Audio API (AudioContext + OscillatorNode ou um AudioBuffer pré-carregado), que requer ativação prévia por gesto do usuário no iOS Safari e no Chrome moderno para satisfazer a política de autoplay. Um alerta visual de melhor esforço também é renderizado e, se o usuário tiver concedido permissão anteriormente, um toast em nível do sistema operacional pode ser exibido através da Notification API. O modo multi-timer mantém cada temporizador em seu próprio objeto de estado com um startTime independente; um único loop de requestAnimationFrame itera sobre o array a cada quadro em vez de girar um intervalo separado por temporizador, o que mantém o trabalho de CPU constante conforme o número cresce. A persistência entre recarregamentos usa localStorage com um endTime serializado, para que a página possa recomputar o tempo restante ao montar. Esteja ciente de que correções de relógio pelo sistema operacional (alteração manual de hora, salto NTP ou transição de horário de verão) deslocam Date.now() instantaneamente e podem fazer um temporizador recuperado parecer saltar - performance.now() é monotônico e é preferido quando apenas o tempo decorrido importa dentro de uma única carga de página.

  • Use Date.now() ou performance.now() como fonte de verdade; nunca confie em ticks acumulados de setInterval.
  • requestAnimationFrame limita a repintura à vsync do display (60 Hz = ~16,67 ms; 120 Hz = ~8,33 ms).
  • Abas ocultas limitam setInterval a um mínimo de 1000 ms conforme a especificação HTML; o Chrome pode congelar a página após ~5 min em bateria.
  • A Page Visibility API (evento visibilitychange) é o gancho para reconciliar o temporizador quando a aba volta ao primeiro plano.
  • A Web Audio API requer ativação prévia por gesto do usuário no iOS Safari e Chrome para satisfazer a política de autoplay.
  • A Notification API requer Notification.requestPermission() e um contexto seguro (HTTPS ou localhost).
  • performance.now() é monotônico entre saltos NTP e mudanças de horário de verão; Date.now() não é - escolha adequadamente.

Exemplos

Bloco de trabalho Pomodoro (25 min de foco + 5 min de pausa)

Modo       : Contagem regressiva
Duração    : 00 : 25 : 00
Início em  : 14:00:00
Término em : 14:25:00 (alarme toca)
Próximo    : timer de pausa de 5 minutos (predefinido)

Cozinha - ovo mole (6 min 30 s)

Modo    : Contagem regressiva
Definir : 00 : 06 : 30
Em 1:00 -> aviso visual destaca o tempo restante
Em 0:00 -> alarme + banner na página: Contagem Regressiva Concluída!

Cronômetro com voltas (treino de 1 km)

Início -> 00:00.00
Volta 1 -> 04:12.80   (parcial 04:12.80)
Volta 2 -> 08:31.45   (parcial 04:18.65)
Volta 3 -> 12:48.10   (parcial 04:16.65)
Final   -> 16:55.30   (parcial 04:07.20  mais rápida)

Múltiplos timers para HIIT (30s trabalho / 15s descanso x 4)

Timer A: 00:30 (trabalho)  ->  alarme
Timer B: 00:15 (descanso)  ->  alarme
Timer C: 00:30 (trabalho)  ->  alarme
Timer D: 00:15 (descanso)  ->  alarme
Sessão total: 3 minutos, mantenha a aba visível para que os alarmes disparem na hora.

Fiscalização de prova - bloco de escrita de 45 minutos

Duração : 00 : 45 : 00
Início  : 09:15:00
Fim     : 10:00:00
Dica: deixe a aba em primeiro plano - abas em segundo plano podem limitar o setInterval e atrasar vários segundos ao longo de 45 minutos.

Perguntas frequentes

A contagem regressiva continua se eu trocar de aba?

Os navegadores modernos limitam abas em segundo plano a cerca de 1 atualização por segundo para economizar bateria, então o valor exibido pode atrasar um pouco quando você voltar — mas o cálculo subjacente é baseado em tempo absoluto, então o total decorrido fica correto. A contagem regressiva exibida pula para o valor certo assim que a aba ganha foco.

O alarme dispara quando a aba está em segundo plano?

A reprodução de áudio em abas em segundo plano é restrita por alguns navegadores e por configurações de economia de energia do sistema operacional. O alarme é tocado pela Web Audio API e exige uma interação prévia do usuário. Mantenha a aba em foco ou visível se o alerta for importante.

O que acontece se o computador entrar em modo de suspensão?

A matemática de tempo da contagem regressiva é baseada em Date.now() (relógio do sistema), então ela continua correta enquanto o sistema dormiu. A exibição se ajusta ao despertar. O alarme sonoro, no entanto, não toca enquanto o sistema está suspenso.

Qual a precisão do cronômetro?

A exibição é atualizada a cada segundo, mas internamente a página usa timestamps com precisão de milissegundos. A precisão real é limitada pelo throttling do navegador (abas em segundo plano perdem precisão) e pela latência de saída de áudio do som do alarme (geralmente <100 ms). Para precisão de física ou engenharia de áudio, use hardware especializado.

Posso salvar durações predefinidas?

Botões de presets rápidos (5 min, 10 min, 25 min, 45 min, 1 hora) são oferecidos para durações comuns. São atalhos embutidos, não presets personalizáveis pelo usuário. Fechar a aba perde o estado atual do cronômetro.

E o horário de verão?

A contagem regressiva usa segundos decorridos, não datas do relógio, então transições de horário de verão não a afetam. Uma contagem regressiva de 2 horas iniciada 30 minutos antes da mudança 'spring forward' ainda termina 90 minutos depois, corretamente.

Algo é enviado para algum servidor?

Não. O cronômetro roda inteiramente no seu navegador. Presets personalizados e histórico são armazenados localmente se você optar por isso.