카운트다운 타이머
카운트다운을 생성하며, 사용자 정의 시간과 알림을 지원합니다
시간 설정
카운트다운 타이머란?
카운트다운 타이머는 정한 시간에서 시작해 0까지 줄어드는 시간 관리 도구입니다. 집중 작업, 요리, 운동 인터벌, 수업 활동, 회의 진행, 발표 연습처럼 정해진 시간 안에 끝내야 하는 상황에 유용합니다. 스톱워치가 0부터 지난 시간을 재는 도구라면, 카운트다운은 남은 시간과 종료 지점을 분명히 보여 줍니다. 남은 시간이 보이면 속도를 조절하고 마무리 시점을 판단하기 쉽습니다. 이 페이지는 스톱워치와 여러 개의 작은 타이머도 함께 제공하므로 랩 기록이나 병렬 작업 관리에도 사용할 수 있습니다. 중요한 알림이 필요할 때는 브라우저 탭을 열린 상태로 유지해야 합니다.
사용 방법
사용 방법
- 탭을 선택하세요: 카운트다운, 스톱워치 또는 멀티 타이머 모드
- 카운트다운: 시/분/초를 입력하거나 프리셋 시간을 클릭하세요
- '시작'을 클릭하여 타이머를 시작하고, '일시정지'를 클릭하여 일시정지합니다
- 카운트다운 종료 시 소리 알림이 재생됩니다
타이밍 참고사항
- 브라우저 타이머는 탭이 백그라운드에 있거나, 기기가 절전 모드이거나, 절전 기능이 활성화된 경우 일시정지되거나 시간이 밀릴 수 있습니다.
- 회의, 시험 또는 프로덕션 작업의 경우, 시스템 시계 또는 전용 타이머를 최종 기준으로 사용하세요.
활용 사례
기술 원리
카운트다운 엔진은 권위 있는 시계로 setInterval(callback, 1000)을 사용하지 않습니다. HTML5 이벤트 루프 명세는 최소 지연만 보장할 뿐 고정 주기를 보장하지 않기 때문에, 이 접근 방식은 드리프트가 누적됩니다. 대신 페이지는 Date.now()(또는 서브밀리초 해상도를 위한 performance.now())로 startTime을 기록하고, 각 틱에서 remaining = targetDuration - (Date.now() - startTime)을 계산합니다. 표시 갱신은 requestAnimationFrame으로 구동되며, 브라우저가 디스플레이 vsync 속도(일반적으로 60Hz/16.67ms, 고주사율 노트북과 폰에서는 때때로 120Hz)로 스로틀링합니다. 이 자기 교정 설계는 JavaScript 태스크 큐가 가비지 컬렉션이나 긴 레이아웃으로 지연된 후에도 표시되는 초가 실제 시계와 정렬되도록 유지합니다. 백그라운드 스로틀링은 타이머 예상치 못한 동작의 주요 원인입니다. HTML Living Standard에 따르면 숨겨진 탭은 setInterval/setTimeout을 최소 1000ms로 제한합니다(Chrome, Firefox, Safari는 각자의 휴리스틱으로 이를 구현하며, Chrome은 배터리 사용 시 약 5분 후 비활성 탭을 추가로 동결합니다). Page Visibility API(document.visibilityState, document.hidden, visibilitychange 이벤트)는 타이머가 탭 전환을 감지하고 탭이 다시 보일 때 Date.now()에 대해 내부 시계를 조정할 수 있게 합니다. 카운트다운 종료 사운드는 Web Audio API(AudioContext + OscillatorNode 또는 사전 로드된 AudioBuffer)를 통해 재생되며, iOS Safari와 최신 Chrome에서는 자동 재생 정책을 충족하기 위해 사전 사용자 제스처 활성화가 필요합니다. 시각적 알림도 렌더링되며, 사용자가 이전에 권한을 부여한 경우 Notification API를 통해 OS 수준 토스트를 게시할 수 있습니다. 다중 타이머 모드는 각 타이머를 독립적인 startTime을 가진 자체 상태 객체로 유지하며, 단일 requestAnimationFrame 루프가 프레임마다 배열을 반복하여 타이머 수가 늘어나도 CPU 작업을 일정하게 유지합니다. 새로 고침 간 영속성은 직렬화된 endTime을 사용하는 localStorage를 사용하므로, 페이지는 마운트 시 남은 시간을 재계산할 수 있습니다. OS의 시계 보정(수동 시간 변경, NTP 스텝 또는 일광 절약 시간 전환)은 Date.now()를 즉시 이동시키고 복구된 타이머가 점프하는 것처럼 보이게 할 수 있다는 점에 유의하세요. performance.now()는 단조증가하며 단일 페이지 로드 내에서 경과 시간만 중요한 경우에 선호됩니다.
- 진실의 소스로 Date.now() 또는 performance.now()를 사용하고, 누적된 setInterval 틱을 신뢰하지 마세요.
- requestAnimationFrame은 디스플레이 vsync에서 리페인트를 제한합니다(60Hz = 약 16.67ms, 120Hz = 약 8.33ms).
- 숨겨진 탭에서는 HTML 명세에 따라 setInterval이 최소 1000ms로 스로틀링되며, Chrome은 배터리 사용 시 약 5분 후 페이지를 동결할 수 있습니다.
- Page Visibility API(visibilitychange 이벤트)는 탭이 포그라운드로 돌아올 때 타이머를 조정하기 위한 훅입니다.
- Web Audio API는 iOS Safari와 Chrome에서 자동 재생 정책을 충족하기 위해 사전 사용자 제스처 활성화가 필요합니다.
- Notification API는 Notification.requestPermission()과 보안 컨텍스트(HTTPS 또는 localhost)가 필요합니다.
- performance.now()는 NTP 스텝과 DST 점프 전반에 걸쳐 단조증가하지만, Date.now()는 그렇지 않습니다. 용도에 맞게 선택하세요.
예시
포모도로 작업 블록 (25분 집중 + 5분 휴식)
모드 : 카운트다운
시간 : 00 : 25 : 00
시작 시각 : 14:00:00
종료 시각 : 14:25:00 (알람 재생)
다음 : 5분 휴식 타이머 (프리셋)요리 - 반숙 달걀 (6분 30초)
모드 : 카운트다운
설정 : 00 : 06 : 30
1:00에 -> 남은 시간을 시각적 경고로 강조
0:00에 -> 알람 + 페이지 배너: Countdown Complete!랩 타임 스톱워치 (1km 연습 주행)
시작 -> 00:00.00
랩 1 -> 04:12.80 (구간 04:12.80)
랩 2 -> 08:31.45 (구간 04:18.65)
랩 3 -> 12:48.10 (구간 04:16.65)
종료 -> 16:55.30 (구간 04:07.20 최단)HIIT용 다중 타이머 (30초 운동 / 15초 휴식 x 4)
타이머 A: 00:30 (운동) -> 알람
타이머 B: 00:15 (휴식) -> 알람
타이머 C: 00:30 (운동) -> 알람
타이머 D: 00:15 (휴식) -> 알람
총 세션: 3분, 알람이 정확한 시점에 울리도록 탭을 활성 상태로 유지.시험 감독 - 45분 작문 시간
시간 : 00 : 45 : 00
시작 : 09:15:00
종료 : 10:00:00
팁: 탭을 포그라운드에 두기 - 백그라운드 탭에서는 setInterval이 스로틀링되어 45분간 수 초의 오차가 누적될 수 있음.자주 묻는 질문
탭을 전환해도 카운트다운이 계속 작동하나요?
최신 브라우저는 배터리 절약을 위해 백그라운드 탭의 업데이트를 초당 1회 정도로 제한하기 때문에, 탭으로 돌아왔을 때 표시 값이 잠시 지연된 것처럼 보일 수 있습니다. 하지만 내부 계산은 절대 시간 기준이므로 누적된 경과 시간은 정확합니다. 탭에 다시 포커스가 가면 표시값이 즉시 올바른 값으로 갱신됩니다.
탭이 백그라운드에 있을 때도 알람이 울리나요?
백그라운드 탭의 오디오 재생은 일부 브라우저와 운영체제 절전 설정에 의해 제한됩니다. 알람은 Web Audio API를 통해 재생되며 사전 사용자 인터랙션이 필요합니다. 알림이 중요하다면 탭을 활성 상태나 보이는 상태로 유지하세요.
컴퓨터가 절전 모드로 들어가면 어떻게 되나요?
카운트다운의 시간 계산은 Date.now()(벽시계 시간)를 기반으로 하므로, 시스템이 잠자기 상태였더라도 시간을 정확히 추적합니다. 깨어나면 표시값이 따라잡습니다. 다만 시스템이 일시 중단된 동안에는 알람 소리가 울리지 않습니다.
타이머는 얼마나 정확한가요?
표시값은 매초 업데이트되지만, 내부적으로는 밀리초 단위 타임스탬프를 사용합니다. 실제 정확도는 브라우저 탭 스로틀링(백그라운드 탭은 정확도가 떨어짐)과 알람 소리의 오디오 출력 지연(보통 100ms 미만)에 의해 제한됩니다. 물리 실험이나 음향 엔지니어링 수준의 정확도가 필요하다면 전용 하드웨어를 사용하세요.
프리셋 시간을 저장할 수 있나요?
자주 사용하는 시간을 위해 빠른 프리셋 버튼(5분, 10분, 25분, 45분, 1시간)을 제공합니다. 이는 내장된 단축 버튼이며 사용자가 직접 커스텀할 수는 없습니다. 탭을 닫으면 현재 타이머 상태가 사라집니다.
서머타임(DST)에 영향을 받나요?
카운트다운은 벽시계 날짜가 아닌 경과 초를 사용하므로 서머타임 전환에 영향을 받지 않습니다. 서머타임 시작('spring forward') 30분 전에 시작한 2시간 카운트다운은 정확히 90분 뒤에 종료됩니다.
어떤 데이터가 서버로 전송되나요?
아니요. 타이머는 전적으로 브라우저에서 실행됩니다. 사용자가 동의하는 경우에 한해 커스텀 프리셋과 기록이 로컬에 저장됩니다.