Countdowns, clock faces, and loading animations inside a cell.

12-hour clock dots

Filled dots show the current hour on a 12-hour clock. Empty dots fill the rest. Updates whenever NOW() changes.

=REPT("●",HOUR(NOW()))&REPT("○",12-HOUR(NOW()))

●●●●●●○○○○○○

Loading dots

Animates with NOW(). No input needed; recalculates on refresh.

=REPT("●",MOD(NOW()*86400,4))&REPT("○",4-MOD(NOW()*86400,4))

●●○○

24-hour clock dots

Filled dots show the current hour on a 24-hour clock. Empty dots fill the rest. Updates whenever NOW() changes.

=REPT("●",HOUR(NOW()))&REPT("○",24-HOUR(NOW()))

●●●●●●●●●●●●●●○○○○○○○○○○

Hour hand arrow

Arrow points like a clock hour hand. Twelve directions from NOW(). Updates whenever the sheet recalculates.

=CHOOSE(MOD(HOUR(NOW()),12)+1,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")

Minute hand arrow

Arrow sweeps like a minute hand. One tick every five minutes from MINUTE(NOW()).

=CHOOSE(MOD(QUOTIENT(MINUTE(NOW()),5),12)+1,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")

Second hand spinner

Arrow spins through eight compass directions each second. Driven by NOW().

=CHOOSE(MOD(NOW()*86400,8)+1,"↑","↗","→","↘","↓","↙","←","↖")

Clock hands as arrows

Hour and minute hands as arrows around a center dot. Both update from NOW().

=CHOOSE(MOD(HOUR(NOW()),12)+1,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")&"◎"&CHOOSE(MOD(QUOTIENT(MINUTE(NOW()),5),12)+1,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")

↗◎→

Clock face emoji

Shows the matching clock-face emoji for the current hour. Updates from HOUR(NOW()).

=CHOOSE(IF(MOD(HOUR(NOW()),12)=0,12,MOD(HOUR(NOW()),12)),"🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛")

🕗

Live time display

Shows the current time as text. No input needed; updates whenever NOW() changes.

=TEXT(NOW(),"h:mm AM/PM")

8:00 AM

Spinning refresh arrow

Arrow rotates ↑ → ↓ ← with NOW(). Good for a live refresh indicator.

=CHOOSE(MOD(NOW()*86400,4)+1,"↑","→","↓","←")

Counterclockwise spinning arrow

Arrow spins the other way through eight directions. Driven by NOW().

=CHOOSE(MOD(NOW()*86400,8)+1,"↑","↖","←","↙","↓","↘","→","↗")

Second hand radar sweep

Arrow marks the current second on a 60-dot dial. Sweeps with SECOND(NOW()).

=REPT("·",SECOND(NOW()))&"↑"&REPT("·",59-SECOND(NOW()))

······························↑·····························

Hour position on dial

One arrow marks the current hour on a 12-tick dial. Empty ticks fill the rest.

=REPT("·",MOD(HOUR(NOW()),12))&"↑"&REPT("·",11-MOD(HOUR(NOW()),12))

·······↑····

Minute progress blocks

Twelve blocks show minutes elapsed this hour. One block per five minutes from NOW().

=REPT("█",QUOTIENT(MINUTE(NOW()),5))&REPT("░",12-QUOTIENT(MINUTE(NOW()),5))

██████░░░░░░

Live hourglass flip

Hourglass flips every second with NOW(). No input needed.

=IF(MOD(NOW()*86400,2)=0,CHAR(9203),CHAR(8987))

Second countdown pulse

Filled dots count down within each 10-second window. Animates with NOW().

=REPT("●",MOD(60-SECOND(NOW()),10)+1)&REPT("○",10-MOD(60-SECOND(NOW()),10)-1)

●●●●●○○○○○

AM or PM indicator

Shows sun for morning and moon for evening based on the current hour.

=IF(HOUR(NOW())<12,"☀️ AM","🌙 PM")

☀️ AM

Time of day emoji

Shows an emoji for the current hour: night, dawn, morning, afternoon, sunset, or evening. Updates from NOW(). No input needed.

=SWITCH(TRUE,HOUR(NOW())<5,"🌙",HOUR(NOW())<8,"🌅",HOUR(NOW())<12,"☀️",HOUR(NOW())<17,"🌤️",HOUR(NOW())<20,"🌇","🌃")

🌤️

Time of day color dots

Shows a colored circle for the current hour: black at night, orange at sunrise, yellow during the day, red at sunset. Updates from NOW(). No input needed.

=SWITCH(TRUE,HOUR(NOW())<5,"⚫",HOUR(NOW())<8,"🟠",HOUR(NOW())<17,"🟡",HOUR(NOW())<20,"🔴","⚫")

🟡

Time of day routine

Shows an emoji for what people usually do now: bed at night, coffee in the morning, lunch at midday, work, dinner, TV, then bed again. Updates from NOW(). No input needed.

=SWITCH(TRUE,HOUR(NOW())<5,"🛏️",HOUR(NOW())<9,"☕",HOUR(NOW())<12,"💻",HOUR(NOW())<14,"🍔",HOUR(NOW())<17,"💻",HOUR(NOW())<20,"🍽️",HOUR(NOW())<22,"📺","🛏️")

Sun and moon (6 to 6)

Shows sun from 6 AM to 6 PM and moon the rest of the day. Updates from NOW(). No input needed.

=IF(AND(HOUR(NOW())>=6,HOUR(NOW())<18),"☀️","🌙")

☀️

Weekday name from NOW

Shows today as a weekday name. Updates whenever the sheet recalculates.

=TEXT(NOW(),"dddd")

Friday

Year Progress live block bar

Live year progress from TODAY(). Ten blocks fill as the calendar year advances. Updates daily. No input needed.

=REPT("█",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))

█████░░░░░

Year Progress live block bar with percent

Live year progress from TODAY() as a block bar plus a rounded percent. Updates daily. No input needed.

=REPT("█",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"%"

█████░░░░░ 53%

Year Progress live dark shade bar

Live year progress from TODAY() as dark shaded blocks. Ten segments track the year. No input needed.

=REPT(CHAR(9619),MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT(CHAR(9617),MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))

▓▓▓▓▓░░░░░

Year Progress live dark shade bar with percent

Live year progress from TODAY() as a dark shade bar plus a percent label. Updates daily. No input needed.

=REPT(CHAR(9619),MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT(CHAR(9617),MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"%"

▓▓▓▓▓░░░░░ 53%

Year Progress live dot checkpoint bar

Live year progress from TODAY() as filled and empty dots. Ten checkpoints through the year. No input needed.

=REPT("●",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("○",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))

●●●●●○○○○○

Year Progress live dot checkpoint bar with percent

Live year progress from TODAY() as dot checkpoints plus a percent label. Updates daily. No input needed.

=REPT("●",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("○",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"%"

●●●●●○○○○○ 53%

Year Progress live green circle bar

Live year progress from TODAY() as green and white circles. Ten circles fill through the year. No input needed.

=REPT("🟢",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("⚪",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))

🟢🟢🟢🟢🟢⚪⚪⚪⚪⚪

Year Progress live green circle bar with percent

Live year progress from TODAY() as green circles plus a percent label. Updates daily. No input needed.

=REPT("🟢",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("⚪",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"%"

🟢🟢🟢🟢🟢⚪⚪⚪⚪⚪ 53%

Year Progress live month block bar

Live year progress from TODAY() as twelve month blocks. One block per month of the year. No input needed.

=REPT("█",MIN(12,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*12,0))))&REPT("░",MAX(0,12-MIN(12,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*12,0)))))

██████░░░░░░

Year Progress live month block bar with percent

Live year progress from TODAY() as twelve month blocks plus a percent label. Updates daily. No input needed.

=REPT("█",MIN(12,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*12,0))))&REPT("░",MAX(0,12-MIN(12,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*12,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"%"

██████░░░░░░ 53%

Year Progress live block bar with day count

Live year progress from TODAY() as a block bar plus percent and day-of-year count. Updates daily. No input needed.

=REPT("█",MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*10,0)))))&" "&ROUND((TODAY()-DATE(YEAR(TODAY()),1,1))/(DATE(YEAR(TODAY()),12,31)-DATE(YEAR(TODAY()),1,1))*100,0)&"% (day "&TODAY()-DATE(YEAR(TODAY()),1,1)+1&")"

█████░░░░░ 53% (day 195)

Hourglass flip

Even numbers show one hourglass, odd numbers the other.

=IF(MOD(A1,2)=0,CHAR(9203),CHAR(8987))

Alarm clock urgency

Put alarm count in A1. More clocks, louder wake-up.

=REPT("⏰",A1)&" Wake up!"

⏰⏰ Wake up!

Alarm hour match

Put target hour 0-23 in A1 (24-hour clock). Rings when the current hour matches.

=IF(HOUR(NOW())=A1,REPT("⏰",3)&" Wake up!","💤 Sleeping")

⏰⏰⏰ Wake up!

Related formula guides

Go deeper with Better Sheets

Members get full courses on CHAR, REPT, and dashboard design, plus hundreds of Google Sheets tutorials. Copy-paste formulas here stay free.

See membership options