ToolActToolAct

뽀모도로 타이머

집중하고 효율적으로 휴식하며, 과학적으로 시간을 관리하세요

25:00
집중
라운드 1/4

뽀모도로 타이머란?

뽀모도로 기법(Pomodoro Technique)은 1980년대 프란체스코 시릴로가 창시한 시간 관리 방법입니다. 핵심 아이디어는 작업을 25분의 집중 시간('뽀모도로' 하나)으로 나누고, 각 뽀모도로 사이에는 5분 휴식을, 매 4개의 뽀모도로 후에는 15-30분 휴식을 취하는 것입니다. 이 방법은 집중력 향상, 피로 감소, 작업 리듬감 강화에 도움이 됩니다.

사용 방법

기본 조작

  1. 작업 모드 선택: 집중, 짧은 휴식, 또는 긴 휴식
  2. '시작' 버튼을 클릭하여 타이머를 시작합니다
  3. 타이머가 끝날 때까지 작업에 집중한 후, 알림을 듣고 휴식합니다
  4. 매 4개의 포모도로를 완료한 후 긴 휴식을 즐기세요

사용자 설정

집중 시간기본 25분, 개인 습관에 따라 15-45분 조정 가능
짧은 휴식 시간기본 5분, 10분을 초과하지 않는 것이 좋습니다
긴 휴식 시간기본 15분, 4개의 포모도로 후 충분한 휴식 가능
긴 휴식 전 라운드 수기본 4라운드, 3-6라운드 조정 가능

집중 팁

  • 각 집중 세션에는 하나의 명확한 작업을 정하고, 멀티태스킹을 위한 백그라운드 시계로 만들지 마세요.
  • 작업에 맞게 시간을 조정하세요: 짧은 세션은 마찰이 높은 작업에 도움이 되고, 긴 세션은 깊은 독서나 코딩에 적합합니다.

활용 사례

집중과 휴식 사이클 실행기본 25분 집중, 5분 짧은 휴식, 15분 긴 휴식, 4라운드마다 긴 휴식 패턴으로 시작합니다. 원형 진행 표시, 단계 탭, 라운드 카운터, 건너뛰기/초기화 버튼으로 현재 상태를 한눈에 파악할 수 있습니다. 25/5 리듬은 시릴로가 처음 제안한 방식이고, 준비 시간이 긴 깊은 작업에는 50/10 변형이 더 적합할 수 있습니다. 설정 패널에서 둘 다 지원하므로 빠른 정리 작업과 긴 독서 세션 모두에 같은 타이머를 활용할 수 있습니다.
나만의 뽀모도로 리듬 커스터마이징설정에서 집중 시간, 짧은/긴 휴식 시간, 긴 휴식 전 라운드 수, 자동 시작 동작, 소리 알림을 조정할 수 있습니다. 설정은 localStorage에 저장되어 다음에 페이지를 열 때도 내 타이머 스타일이 복원됩니다. 세션 기록은 브라우저를 벗어나지 않으므로 분석 전송, 계정 동기화, 원격 저장이 없어 학습, 집중이 필요한 작업 등 주의 패턴이 민감한 상황에도 적합합니다.
다른 작업 중에도 시간 확인 유지페이지 제목에 남은 시간과 현재 단계가 업데이트되고, 단계 완료 시 Web Audio 비프음을 재생할 수 있습니다. 덕분에 타이머를 브라우저 탭에 둔 채 다른 창에서 작업하는 것이 실용적입니다. 브라우저 탭 스로링으로 탭이 숨겨지면 setInterval이 약 1Hz로 제한될 수 있으므로, 가시성 변경 시 Date.now()와 대조하여 표시되는 카운트다운을 보정합니다.
저장된 프리셋을 작업 유형별로 재사용긴 세션의 깊은 작업 프리셋과 짧은 세션의 학습 프리셋을 저장해 두고, 설정 패널에서 전환할 수 있습니다. 자동 시작 옵션을 켜면 시작 버튼을 누르지 않아도 다음 단계가 자동으로 진행됩니다.
긴 회의나 몰입 상태에서 타이머 함정 피하기협업 회의, 창작 글쓰기, 실습 작업처럼 엄격한 25/5 경계가 방해가 되는 상황에서는 자동 시작을 끄고 볼륨을 낮추세요. 단계 탭을 이용하면 라운드 카운터를 깨지 않고 일시 정지하거나 건너뛸 수 있습니다.

기술 원리

뽀모도로 기법은 1980년대 후반 프란체스코 시릴로가 발표한 시간 관리 방법으로, 4단계 사이클을 체계화한 것이다. 25분 집중 구간(뽀모도로 1개), 5분 짧은 휴식, 4라운드 반복 후 15~30분 긴 휴식으로 구성된다. 이 일정은 4개 상태(`work`, `shortBreak`, `longBreak`, `idle`)를 갖는 유한 상태 머신(FSM)이며, 단일 카운트다운 타이머에 의해 전환이 이루어진다. `work -> break` 전환마다 라운드 카운터가 증가하고, `round % roundsBeforeLong === 0`일 때 긴 휴식 분기가 실행된다. 50/10(깊은 작업), 52/17(Draugiem Group 생산성 연구) 같은 변형도 동일 FSM을 매개변수화하여 노출한다. 단순한 타이밍 방식은 `setInterval(tick, 1000)`을 사용하고 카운터를 감소시키지만, JavaScript 타이머 드리프트가 누적된다. 메인 스레드 경합 시 각 콜백은 1003~1020ms 늦게 실행될 수 있으며, HTML5 Page Visibility API와 브라우저 정책이 결합되어 Chrome/Firefox/Safari에서 숨겨진 탭의 타이머를 약 1Hz로 제한한다(Safari는 분당 1회까지 낮아질 수 있다). 드리프트 방지 패턴은 시작 시 `endTimestamp = performance.now() + remainingMs`를 저장한 뒤, 매 틱마다 `remainingMs = Math.max(0, endTimestamp - performance.now())`를 재계산한다. 이렇게 하면 10분간 백그라운드에 있던 탭이 복원될 때 허구의 10초를 세는 대신 즉시 따라잡는다. `performance.now()`는 NTP, 수동 시간 변경 등 벽시계 조정에 영향을 받지 않는 고해상도 단조 시계이다. `Date.now()`는 페이지 새로고침 후 마감시간을 유지할 때만 사용한다. 4가지 브라우저 API가 사용자가 다른 작업을 하는 동안 타이머를 유용하게 만든다. Web Audio API는 에셋 비용 없이 단계 완료 비프음을 생성한다: `new AudioContext()` -> 800Hz `createOscillator()` -> 200ms에 걸쳐 감쇠하는 `createGain()` -> `start()` 후 `stop(currentTime + 0.2)`. Notifications API는 `Notification.requestPermission()`으로 일회성 동의를 받은 뒤 `new Notification('집중 완료', { body, icon, tag: 'pomodoro' })`로 시스템 수준 알림을 표시한다(`tag`로 빠른 연속 발생 시 중복을 제거한다). Wake Lock API는 `navigator.wakeLock.request('screen')`으로 집중 세션 동안 화면 꺼짐을 억제하고 휴식에는 해제한다. `document.title`은 매 틱마다 `mm:ss - 집중`으로 갱신되어 탭 스트립에 시간이 계속 표시된다. 설정(시간, 자동 시작, 소리)은 `localStorage`(동기, ~5MB 오리진 할당량)로 영속화된다. 원형 진행률은 `stroke-dasharray = 2 * pi * r`인 SVG `<circle>`이며, `stroke-dashoffset = dasharray * (1 - elapsed/total)`로 캔버스 오버헤드 없이 링을 애니메이션한다. 주의력에 관한 배경 연구 - 시릴로의 25분 경계뿐만 아니라 ADHD의 시간 인식, 문맥 전환 비용에 관한 연구 - 가 왜 부드러운 '5분만 더'보다 강제 중단이 효과적인지 설명한다.

  • 4개 상태(work/shortBreak/longBreak/idle) 기반 FSM. `round % roundsBeforeLong === 0`일 때 긴 휴식 실행. 기본 25/5/15분, 4라운드. 변형: 50/10/30(깊은 작업), 52/17(Draugiem 연구).
  • 드리프트 방지 타이밍: `endTimestamp = performance.now() + remainingMs`를 저장하고 매 틱마다 `remainingMs = endTimestamp - performance.now()`를 재계산. `setInterval` 슬립과 숨겨진 탭 스로틀링 제한에 면역.
  • `performance.now()`는 고해상도 단조 시계(NTP 또는 수동 벽시계 변경에 영향 없음). `Date.now()`는 페이지 리로드 시 마감시간 유지에만 사용.
  • Web Audio API로 단계 완료 비프 생성: `new AudioContext()` -> `createOscillator()`(800Hz 사인파) -> 200ms에 걸쳐 0으로 선형 감쇠하는 `createGain()` -> `start()`/`stop()`. 오디오 에셋 전송 불필요.
  • Notifications API로 시스템 알림: `Notification.requestPermission()` 일회 호출, 이후 `new Notification(title, { body, tag: 'pomodoro' })`. 탭이 숨겨진 상태에서 여러 단계가 끝나면 `tag`로 중복 제거.
  • Screen Wake Lock API: 집중 중 `navigator.wakeLock.request('screen')`으로 화면 절전 억제, 휴식 시 해제. 탭 가시성 상실 시 웨이크 록은 자동 해제되며 `visibilitychange`에서 재획득 필요.
  • 영속화 및 UI: `localStorage`(~5MB 할당량)로 시간/자동 시작/소리 저장. SVG 링은 `stroke-dasharray = 2*pi*r` 사용, `stroke-dashoffset` 애니메이션. `document.title`을 `mm:ss - 단계`로 갱신하여 탭 스트립 가시성 확보.

예시

클래식 뽀모도로 (Francesco Cirillo)

집중:           25분
짧은 휴식:       5분
긴 휴식:        15분 (4라운드마다)
용도:           사무 업무, 학습, 코딩 세션의 기본 설정; 한 사이클 = 2시간

딥 워크 모드

집중:           50분
짧은 휴식:      10분
긴 휴식:        30분 (3라운드마다)
용도:           글쓰기, 디자인, 난이도 높은 문제 풀이 세션; 긴 집중 블록으로 컨텍스트 전환을 줄임

빠른 반복 모드

집중:           15분
짧은 휴식:       3분
긴 휴식:        10분 (5라운드마다)
용도:           스탠드업, 코드 리뷰, 짧은 피드백 루프; 집중 시간이 짧아 시작이 쉬움

자주 묻는 질문

뽀모도로 기법이 무엇인가요?

1980년대에 Francesco Cirillo가 개발했습니다. 고전적인 패턴은 25분 집중 작업, 5분 휴식을 반복하는 것이고, 4번의 ‘뽀모도로’(작업 구간) 후에는 15~30분의 긴 휴식을 취합니다. 구조가 시작을 강제하고(타이머가 카운트다운) 짧은 휴식으로 지속을 보상하면서 탈진을 막아줍니다.

작업과 휴식 시간을 사용자 정의할 수 있나요?

네. 기본값은 25/5/15(작업/짧은 휴식/긴 휴식)이며, 4 뽀모도로 후에 긴 휴식이 옵니다. 작업에 맞춰 어떤 길이든 선택하세요. 50/10 ‘울트라디안’ 리듬은 깊은 코딩 작업에 어울리고, 90/30은 학습에, 15/3은 순수 실행 모드에 어울립니다. 기본값은 출발점일 뿐 유일한 정답은 아닙니다.

뽀모도로 도중에 방해를 받으면 어떻게 하나요?

Cirillo의 원래 규칙에 따르면, 방해가 짧으면 무시하고 뽀모도로를 마칩니다. 멈춰야 한다면 그 뽀모도로는 카운트되지 않고 다시 시작합니다. 엄격한 규칙은 집중 시간을 지키도록 훈련시킵니다. 현대적인 변형은 더 유연해서, 필요하면 일시 정지하되 방해 횟수를 기록해 무엇이 집중을 빼앗는지 파악합니다.

탭이 백그라운드에 있어도 알람이 울리나요?

브라우저는 백그라운드 탭을 제한하며 오디오를 억제할 수 있습니다. 알람을 보장하려면 탭을 활성 상태로 두거나 브라우저 알림 권한을 허용하세요. 중요한 작업에는 데스크톱 뽀모도로 앱을 사용하는 것이 좋습니다. 모바일에서는 허용 시 진동도 사용합니다.

완료한 뽀모도로 횟수를 기록하나요?

현재 라운드 수는 세션 동안 표시되지만 저장되지 않습니다. localStorage에는 타이머 설정(작업/휴식 길이, 자동 시작 옵션)만 저장됩니다. 완료된 뽀모도로 횟수는 페이지를 닫거나 새로고침하면 초기화됩니다.

현재 작업에 라벨을 붙일 수 있나요?

대부분의 빌드에서 타이머 위에 표시되는 현재 작업 이름을 추가할 수 있습니다. 화면 녹화 데모나 자기 책임을 다지는 데 유용합니다. 일부 고급 빌드는 작업별 뽀모도로 로그를 보관해 본격 작업 추적기보다 가벼운 대안이 됩니다.

내 데이터가 업로드되나요?

아니요. 타이머 상태와 기록은 브라우저의 localStorage에 저장됩니다. 서버로 아무것도 전송되지 않습니다. 사이트 데이터를 삭제하면 모든 것이 초기화됩니다.