On Windows 10, there's an app called "Alarms and Clock", but it doesn't have precision up to seconds, just minutes. I want an alarm at say 12:59:50PM, so 12:59PM with 10 seconds left. However, it can only do "12:59PM" which is not useful for my purpose.

I tried some software like this one (http://freealarmclocksoftware.com/), but it doesn't have seconds precision.

I found a similar question on SuperUser (https://superuser.com/questions/21476/is-there-an-alarm-clock-app-for-windows-running-on-a-laptop), but it doesn't seem like those have seconds precision for my case. I also migrated this question from SuperUser to here because it was listed as off-topic there for software recommendations (https://superuser.com/q/1578802/495155).

  • I don't have a recommendation yet but if you set the alarm at 12:59:50 PM you will have 10 seconds left in that minute, not 50.
    – Sonamor
    Aug 18, 2020 at 19:02
  • @Sonamor Fixed the typo. Slept 4 hours today. Aug 18, 2020 at 19:14
  • I checked for something like this but I couldn't find any alarm with seconds. You could try using countdown or else if you are familiar with PowerShell write your own.
    – Sonamor
    Aug 18, 2020 at 19:59
  • 1
    anyway if you need it, let me know :) it validates input to be in the correct format, it displays how many seconds have been left, you can modify the audio beep, and you can stop the sound that is playing. All and all in less than 50 lines :)
    – Sonamor
    Aug 18, 2020 at 20:57
  • 1
    i.imgur.com/FTbterN.gif Here is a quick overview of the script.
    – Sonamor
    Aug 18, 2020 at 21:13

3 Answers 3


To have the script somewhat presented in a good state I put it as an answer while it's clearly not an answer but a mere workaround to your requirements.

Copy and paste it to a text file and save it with a .ps1 extension. The usage can be found on the gif below.

A quick gif showing the script features

Add-Type -AssemblyName PresentationFramework #messagebox requirement

$timesAlarmToPlay = 30 #times to repeat beep

$i=0 # reset $i counter
$timespan # reset $timespan

 try {
      [ValidatePattern('^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$')]$time = Read-Host "Please provide time in 24hour format HH:MM:SS" 
     } catch {}
} until ($?)

function Play-Alarm
 Start-Job -ScriptBlock{
        for ($j -eq 0; $j -le $timesAlarmToPlay; $j++)
  } -ArgumentList $timesAlarmToPlay | Out-Null

 $stopAlarm = [System.Windows.MessageBox]::Show('Stop sound?','Alarm!','YesNo','Warning')
 if ($stopAlarm -eq "Yes")
    Get-Job | Stop-Job

$datetimeNow= Get-Date -Format "dd/MM/yyyy HH:mm:ss"
$datetimeRing = "$(Get-Date -Format dd/MM/yyyy)" + " " + $time.ToString()
$timespan = New-TimeSpan -Start $datetimeNow -End $datetimeRing

for ($i -eq 0; $i -le $timespan.TotalSeconds-1; $i++)  # -1 to handle 0 seconds left on timespan
 $timeLeft = $timespan.TotalSeconds - $i
 Write-Host "$timeLeft seconds left till alarm rings" 
 Start-Sleep -Seconds 1

  • I don't understand, but it keeps telling me cannot bind parameter 'Start' and cannot convert value "19/08/2020 14:31:51" to type "System.DateTime". Error: "String was not recognized as a valid DateTime." It does that regardless of what date I put. Here's a screenshot: i.imgur.com/dD8VznH.png Aug 19, 2020 at 21:33
  • What's your date format?
    – Sonamor
    Aug 21, 2020 at 5:37
  • like in the screenshot, I put “14:32:00” for 2:32PM. It’s “HH:MM:SS” Aug 21, 2020 at 5:39

I finally found a software that can do exactly as stated in the question. It is a free software for Windows called "Free Countdown Timer (https://free-countdown-timer.com/) by Comfort Software Group. Besides having seconds precision, it has the ability to do both manual start countdown timers as well as based on a date and other features such as repeating the alarm, custom sounds, etc.

The usage is pretty simple.

  1. On the home screen, click "Add". Free Countdown Timer Interface

  2. Click on "Count till (from) date and time". You can adjust any of the other settings if needed. Free Countdown Timer Date Countdown

  3. Adjust the time and date settings as needed by typing into the "Date, Time:" box. You can also click the dropdown to adjust the time. Note that the software uses your computer's time, so if your computer's time is incorrect, you may experience an early or late alarm. Then click "OK". Free Countdown Timer Adjust Time and Date

  4. Your alarm is now set. It is enabled the first you set it or when you adjust the settings. To start or stop the alarm, you have three options. Option one is to click the small checkbox to the left of the alarm. Option 2 is to right click on the alarm and select "Enabled". Option 3 is to select the alarm and then press "Ctrl + E". The third option is useful if you're not using a date countdown timer but a manual start countdown timer (where you start a non-date-based timer perhaps 1 minute before 12:59:50) since it is probably the fastest and more accurate way than fumbling around with your mouse with small dialog boxes. Free Countdown Timer Enable Alarm

Your countdown timer should be set. You can also back up your alarms using the software. I highly recommend using a website like https://www.timeanddate.com/worldclock/ to set your computer clock to the correct time. For Windows 10, I personally have issues with its automatic set time and date feature which often has accuracy issues of up to 1-2 min away from the universal clock time for stocks, websites, apps, etc. You'd have to set it manually in that case using your reaction time.


You can use a free version of Automation Workshop. It includes a Task Scheduler and ability to play audio files, including buil-in sounds. Use the Task Scheduler Trigger: enter image description here

And as an alarm, add the Play Audio Action: enter image description here

Or use built-in System Audio Files: enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.