Create a Pomodoro Timer using HTML CSS and JavaScript Last Updated : 28 Apr, 2025 Comments Improve Suggest changes Like Article Like Report In this article, we will see how to design Pomodoro Timer with the help of HTML CSS, and JavaScript. The Pomodoro Technique is a time management method that involves breaking your work into focused intervals, typically 25 minutes, followed by short breaks. After completing four cycles, take a longer break. This technique aims to enhance productivity by maintaining concentration during work intervals and providing regular breaks for renewal. ApproachCreate HTML structure with title, header, and main div; include timer circle and control buttons.Style the main container and timer circle with a rounded appearance, border, and centered text.Apply CSS to control buttons for a responsive design with hover effects.Set up a JavaScript file with variables for timer, minutes, seconds, pause status, and entered time.Implement functions for starting the timer, updating the display, formatting time, toggling pause/resume, restarting, and choosing a custom time.Handle timer completion with alert and clearInterval; validate user input for custom time.Call 'start timer' on page load; add event listeners to control buttons for corresponding functions. Example: In this example, we will create a Pomodoro timer with the help of HTML CSS, and JavaScript. HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pomodoro Timer</title> <link rel="stylesheet" href="style.css"> <script src= 'https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'> </script> </head> <body> <h1 style="color:green"> GeeksforGeeks </h1> <div class="main"> <div class="timer-circle" id="timer">15:00 </div> <div class="control-buttons"> <button onclick="togglePauseResume()"> Pause </button> <button onclick="restartTimer()"> Restart </button> <button onclick="chooseTime()"> Choose Time </button> </div> </div> <script src="script.js"></script> </body> </html> CSS /* style.css*/ body { display: flex; align-items: center; justify-content: center; font-family: sans-serif; line-height: 1.5; min-height: 100vh; background: #f3f3f3; flex-direction: column; margin: 0; } .main { background-color: #fff; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); padding: 10px 20px; transition: transform 0.2s; width: 500px; height: 400px; text-align: center; } .timer-circle { border-radius: 50%; width: 200px; height: 200px; margin: 20px auto; display: flex; align-items: center; justify-content: center; font-size: 25px; color: crimson; border: 8px solid #3498db; } .control-buttons { margin-top: 75px; display: flex; justify-content: space-evenly; } .control-buttons button { background-color: #3498db; color: #fff; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; } .control-buttons button:hover { background-color: #266094; transition: background-color 0.3s; } JavaScript // script.js let timer; let minutes = 15; let seconds = 0; let isPaused = false; let enteredTime = null; function startTimer() { timer = setInterval(updateTimer, 1000); } function updateTimer() { const timerElement = document.getElementById('timer'); timerElement.textContent = formatTime(minutes, seconds); if (minutes === 0 && seconds === 0) { clearInterval(timer); alert('Time is up! Take a break.'); } else if (!isPaused) { if (seconds > 0) { seconds--; } else { seconds = 59; minutes--; } } } function formatTime(minutes, seconds) { return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; } function togglePauseResume() { const pauseResumeButton = document.querySelector('.control-buttons button'); isPaused = !isPaused; if (isPaused) { clearInterval(timer); pauseResumeButton.textContent = 'Resume'; } else { startTimer(); pauseResumeButton.textContent = 'Pause'; } } function restartTimer() { clearInterval(timer); minutes = enteredTime || 15; seconds = 0; isPaused = false; const timerElement = document.getElementById('timer'); timerElement.textContent = formatTime(minutes, seconds); const pauseResumeButton = document.querySelector('.control-buttons button'); pauseResumeButton.textContent = 'Pause'; startTimer(); } function chooseTime() { const newTime = prompt('Enter new time in minutes:'); if (!isNaN(newTime) && newTime > 0) { enteredTime = parseInt(newTime); minutes = enteredTime; seconds = 0; isPaused = false; const timerElement = document.getElementById('timer'); timerElement.textContent = formatTime(minutes, seconds); clearInterval(timer); const pauseResumeButton = document.querySelector('.control-buttons button'); pauseResumeButton.textContent = 'Pause'; startTimer(); } else { alert('Invalid input. Please enter'+ ' a valid number greater than 0.'); } } startTimer(); Output: Comment More infoAdvertise with us Next Article Create a Pomodoro Timer using HTML CSS and JavaScript P pankaj_gupta_gfg Follow Improve Article Tags : JavaScript Web Technologies JavaScript-Projects Similar Reads Create a Quiz App with Timer using HTML CSS and JavaScript Creating a quiz app is an excellent way to learn the fundamentals of web development. In this tutorial, we will build a Quiz App that features a timer, allowing users to take a timed quiz with multiple-choice questions. The app will use HTML for the structure, CSS for styling, and JavaScript for fun 8 min read Create a Prime Number Finder using HTML CSS and JavaScript In this article, we will see how to create a Prime Number Finder using HTML, CSS, and JavaScript. The main objective of this project is to allow users to input a number and check if it is a prime number or not. Prime numbers are those, that can only be divided by 1 and themselves. We'll develop a ba 3 min read Print current day and time using HTML and JavaScript Printing the current day and time using HTML and JavaScript involves dynamically displaying the present date and time on a webpage. JavaScript's Date object is used to retrieve the current day, month, year, and time, which is then embedded in the HTML content.Approach:Retrieve Current Date and Day: 2 min read How to Create a Portfolio Website using HTML CSS and JavaScript ? A portfolio website is a website that represents you online on the web pages. It contains different sections like Introduction to Yourself, About You, Your Services, Your Contact Details, and Your Portfolio. We are going to build all of the sections with an interactive and attractive web design that 15+ min read How to Create Stopwatch using HTML CSS and JavaScript ? In this article, we will learn How to create a Stopwatch using HTML CSS, and JavaScript. The StopWatch will have the Start, Stop, and Reset functionality.Prerequisites:HTML CSS JavaScriptApproach:Create one container in which all the elements are present.Inside this container add 2 divs that contain 3 min read Create a Health Tracker using HTML CSS & JavaScript In this article, we will see how we can create a health tracker using HTML, CSS, and JavaScript.Here, we have provided the user with three inputs i.e. input water intake, exercise duration, and blood sugar levels. The user can input these daily and then the provided data is stored in the localStorag 5 min read Create a Coin Flip using HTML, CSS & JavaScript We will display the styled INR coin to the user and there will be a styled button (Toss Coin). We will create the entire application structure using HTML and style the application with CSS classes and properties. Here, JavaScript will be used to manage the behavior of the Coin Flip and will be used 4 min read Design a Simple Counter Using HTML CSS and JavaScript Over 70% of beginners start with interactive projects like counters to learn JavaScript. In this article, you'll create a simple counter app that lets users increase, decrease, and reset valuesâwhile also tracking clicks and resetting after a set limit.What we are going to createWe will build a simp 4 min read Create your own Lorem ipsum using HTML CSS and JavaScript In this article, we are going to implement a Lorem Ipsum Generator Application through HTML, CSS, and JavaScript. Lorem Ipsum, a placeholder text commonly utilized in the printing and typesetting industry, serves to visually represent a document's layout instead of relying on meaningful content.Fina 5 min read How to Create Scroll Indicator using HTML CSS and JavaScript ? Scroll Indicator is a progress bar that represents how much a page has been scrolled. When we scroll down the bar fills up and when we scroll up the bar amount reduces. Approach: Now, we will create a basic webpage with text to enable scrolling and then use JavaScript to make the scroll indicator wo 3 min read Like