Google Sheets Special Characters

Visual formulas for cells

1800+ formulas for progress bars, star ratings, checklists, to-do lists. What is sheet art?

Block progress bar

Put current value in A1 and goal in B1 (use 100 for percent). Ten blocks fill from empty to done.

=REPT("█",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0)))))

████████░░

Star rating (5 stars)

Put current count in A1 and goal in B1 (e.g. 5).

=REPT("★",MIN(A1,B1))&REPT("☆",MAX(0,B1-A1))

★★★☆☆

X-wing Death Star trench run

Put lap position 0-10 in A1. Fighter closes on the Death Star.

=REPT("・",A1)&">🛸<"&REPT("・",MAX(0,B1-A1))&"🌑"

・・>🛸<・・・・🌑

Traffic light status

Put red, yellow, or green in A1.

=IF(A1="red","🔴",IF(A1="yellow","🟡","🟢"))

🟢

IF

Battery level

Put a percentage 0-100 in A1. Five blocks = 100%.

=REPT("█",MIN(5,MAX(0,ROUND(A1*5/100,0))))&REPT("░",5-MIN(5,MAX(0,ROUND(A1*5/100,0))))&" "&A1&"%"

███░░ 60%

Mood faces

Put mood 1-5 in A1. 1 is sad, 5 is happy.

=CHOOSE(A1,"😢","😕","😐","🙂","😄")

🙂

Box border cell

Put inner width in A1. Draws a box around empty space.

="┌"&REPT("─",A1)&"┐"&CHAR(10)&"│"&REPT(" ",A1)&"│"&CHAR(10)&"└"&REPT("─",A1)&"┘"

┌────┐ │ │ └────┘

Dragon HP bar

Put hit points 0-10 in A1.

=REPT(CHAR(9829),MIN(A1,5))&REPT(CHAR(9608),MAX(0,A1-5))&REPT(CHAR(9617),MAX(0,B1-A1))&" 🐉"

♥♥█░░ 🐉

Car trip to mountain

Put current position in A1 and distance goal in B1 (e.g. 10). Car moves toward the mountain.

="🏔️"&REPT("・",MAX(0,B1-A1))&"🚗"&REPT("・",MAX(0,A1-2))

🏔️・・・・・・🚗・・

Take Ring to Mordor

Put journey progress 0-10 in A1. Ring travels from mountain to home.

="🏔️"&REPT("・",MAX(0,B1-A1))&"💍"&REPT("・",MAX(0,A1-2))&"🏠"

🏔️・・・・・💍・・・🏠

One Ring Mount Doom trek

Put journey progress 0-10 in A1. The ring closes on the volcano.

="🏔️"&REPT("・",MAX(0,B1-A1))&"💍"&REPT("・",A1)&"🌋"

🏔️・・・・・💍・・・🌋

Fellowship march to Mordor

Put march progress 0-10 in A1. The fellowship pushes through the wild.

=REPT("🧝",1)&REPT("🧙",1)&REPT("🧔",1)&REPT("・",MAX(0,B1-A1))&REPT("👣",A1)

🧝🧙🧔・・・・・👣👣👣

Shire to Bree journey

Put journey progress 0-10 in A1. Hobbits leave the Shire for the Prancing Pony.

="🏠"&REPT("・",MAX(0,B1-A1))&"🧙"&REPT("・",A1)&"🍺"

🏠・・・・・🧙・・・🍺

Dice face

Put 1-6 in A1 for a dice face.

=CHOOSE(A1,"⚀","⚁","⚂","⚃","⚄","⚅")

Zodiac sign picker

Put a birthday date in A1. Returns the zodiac sign symbol.

=CHOOSE(LOOKUP(MONTH(A1)*100+DAY(A1),{101,120,219,321,420,521,621,723,823,923,1023,1122,1222},{1,2,3,4,5,6,7,8,9,10,11,12,1}),"♑","♒","♓","♈","♉","♊","♋","♌","♍","♎","♏","♐")

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()))

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

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,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")

↗◎→

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,"↑","↗","↗","→","↘","↘","↓","↙","↙","←","↖","↖")

Trend arrows

Put a number in A1. Positive shows up, negative down, zero flat.

=IF(A1>0,"▲ "&A1,IF(A1<0,"▼ "&A1,"→ 0"))

▲ 12

IF

Yes / No checkmarks

Put Yes or No in A1.

=IF(A1="Yes",CHAR(10004)&" Yes","✗ No")

✔ Yes

Fitness rank badges

Put rank 1-4 in A1. Bronze, silver, gold, champion.

=CHOOSE(A1,"🥉","🥈","🥇","🏆")

🥇

Loading dots

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

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

●●○○

Days until Christmas

Counts days until the next Dec 25. No input needed; updates daily from TODAY().

=DATEDIF(TODAY(),DATE(YEAR(TODAY())+IF(TODAY()>DATE(YEAR(TODAY()),12,25),1,0),12,25),"D")&" days 🎄"

164 days 🎄

Santa sleigh journey

Put delivery progress 0-10 in A1 and stops in B1. Sleigh travels toward the chimney.

="🏠"&REPT("·",MAX(0,B1-A1))&"🛷"&REPT("·",MAX(0,A1-1))&"🎅"

🏠·····🛷····🎅

Halloween candy stash bar

Put candy collected in A1 and bucket size in B1. Treats fill the stash bar.

=REPT("🍬",MIN(A1,B1))&REPT("🪣",MAX(0,B1-A1))

🍬🍬🍬🍬🪣

Word count progress bar

Put word count in A1 and goal in B1 (e.g. 50000). Ten blocks fill as you write.

=TEXT(A1,"#,##0")&"/"&TEXT(B1,"#,##0")&" "&REPT("█",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0)))))

24,891/50,000 █████░░░░

NaNoWriMo 50K word bar

Put word count in A1. Tracks progress toward a fixed 50,000-word goal.

=TEXT(A1,"#,##0")&"/50,000 "&REPT("█",MIN(10,MAX(0,ROUND(A1/50000*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND(A1/50000*10,0)))))

24,891/50,000 █████░░░░

Writing dashboard

Put word count in A1, goal in B1, total days in C1, and current day in D1. Count, percent, and daily pace in one cell.

="📊 "&TEXT(A1,"#,##0")&"/"&TEXT(B1,"#,##0")&CHAR(10)&"📈 "&TEXT(A1/B1,"0%")&" done"&CHAR(10)&"⏱️ "&TEXT(MAX(0,ROUND((B1-A1)/MAX(1,C1-D1),0)),"#,##0")&"/day"

📊 24,891/50,000 📈 50% done ⏱️ 1,667/day

Garden plot growth

Put growth stage 0-10 in A1. Seed trail fills as your garden plot grows.

="🌰"&REPT("・",MAX(0,B1-A1))&REPT("🌱",MIN(A1,B1))&REPT("🌻",IF(A1>=B1,1,0))

🌰・・・・🌱🌱🌱🌻

Minecraft heart health row

Put hearts left 0-10 in A1. Full hearts show remaining health; empty hearts show damage taken.

=REPT("❤️",MIN(A1,B1))&REPT("🖤",MAX(0,B1-A1))

❤️❤️❤️❤️❤️🖤🖤🖤🖤🖤

Speedrun timer row

Put elapsed minutes 0-10 in A1. Stopwatch dots track your run pace.

=REPT("⏱️",1)&REPT("●",MIN(A1,B1))&REPT("○",MAX(0,B1-A1))&" min"

⏱️●●●●●●○○○○ min

Kawaii star eyes mood

Put mood 1-5 in A1. Star eyes brighten as happiness rises.

=CHOOSE(A1,"😿","🥺","😊","🤩","✨🤩✨")

🤩

Bubble tea progress bar

Put pearls added 0-10 in A1. Tapioca fills the cup as you sip.

=REPT("🧋",1)&REPT("⚪",MAX(0,B1-A1))&REPT("🟤",MIN(A1,B1))&" boba"

🧋⚪⚪⚪🟤🟤🟤 boba

Bow cat happiness bar

Put happiness 0-10 in A1. Pink bows fill the cute counter bar.

=REPT("🎀",MIN(A1,B1))&REPT("🤍",MAX(0,B1-A1))&" kawaii"

🎀🎀🎀🎀🎀🤍🤍🤍🤍🤍 kawaii

Tea steam timer

Put steep minutes left 0-10 in A1. Steam curls fade as tea finishes.

=REPT("🫖",1)&REPT("~",MIN(A1,B1))&REPT("·",MAX(0,B1-A1))&" steeping"

🫖~~~~· · · · · steeping

Reading nook progress

Put pages read in A1 and book length in B1. Lamp glows as you read.

=REPT("📖",MIN(5,MAX(0,ROUND(A1/B1*5,0))))&REPT("🕯️",MAX(0,5-MIN(5,MAX(0,ROUND(A1/B1*5,0)))))&" p."&A1

📖📖📖🕯️🕯️ p.142

Cat nap counter

Put naps taken 0-5 in A1. Sleeping cats pile up on the couch.

=REPT("😺",MIN(A1,B1))&REPT("💤",MAX(0,B1-A1))&" naps"

😺😺😺💤💤 naps

Habit tracker dot grid

Put habits done 0-10 in A1. Filled dots mark completed days.

=REPT("●",MIN(A1,B1))&REPT("○",MAX(0,B1-A1))&" habits"

●●●●●○○○○○ habits

Monthly spread divider

Put month name in A1. Bujo-style header with rules above and below. Turn on Wrap text.

=REPT("─",LEN(A1)+4)&CHAR(10)&" "&A1&" "&CHAR(10)&REPT("─",LEN(A1)+4)

────────── March ──────────

Mood tracker color dots

Put mood 1-5 in A1. Color dots match your daily bujo mood key.

=CHOOSE(A1,"🔴 Rough","🟠 Low","🟡 OK","🟢 Good","🔵 Great")

🟢 Good

Dungeon crawl depth

Put depth 0-10 in A1. Torches lead deeper into the crypt.

=REPT("🕯️",MIN(A1,B1))&REPT("・",MAX(0,B1-A1))&"💀"

🕯️🕯️🕯️・・・・・💀

D20 roll display

Put roll 1-20 in A1. Natural 20 and fumble get called out.

=IF(A1=20,"🎲 NAT 20!",IF(A1=1,"🎲 Fumble!",A1&" 🎲"))

🎲 NAT 20!

IF

Spell slot counter

Put slots remaining 0-5 in A1. Arcane orbs show spell slots left.

=REPT("🔮",MIN(A1,B1))&REPT("○",MAX(0,B1-A1))&" spell slots"

🔮🔮🔮○○ spell slots

Palm tree sunset journey

Put drive progress 0-10 in A1. Palms line the synthwave road to sunset.

=REPT("🌴",MIN(A1,B1))&REPT("🌅",MAX(0,B1-A1))&" sunset drive"

🌴🌴🌴🌅🌅🌅🌅 sunset drive

Neon city drive

Put night drive progress 0-10 in A1. City lights lead to the neon skyline.

=REPT("🌃",MIN(A1,B1))&REPT("・",MAX(0,B1-A1))&"🚗"

🌃🌃🌃・・・・・🚗

VHS tracking bar

Put tracking fix progress 0-10 in A1. Static clears as the tape stabilizes.

=REPT("📼",1)&REPT("▒",MIN(A1,B1))&REPT("░",MAX(0,B1-A1))&" tracking"

📼▒▒▒▒▒░░░░░ tracking

Paint to masterpiece

Put art progress 0-10 in A1. Palette strokes become a framed painting.

=IF(A1<=5,REPT("🎨",A1)&REPT("░",MAX(0,B1-A1)),REPT("🎨",5)&REPT("🖼️",A1-5)&REPT("░",MAX(0,B1-A1)))

🎨🎨🎨🎨🎨🖼️🖼️🖼️░░

Origami fold steps

Put fold step 0-10 in A1. Paper creases become a finished crane.

=IF(A1<=7,REPT("📄",A1)&REPT("░",MAX(0,B1-A1)),REPT("📄",7)&REPT("🕊️",A1-7)&REPT("░",MAX(0,B1-A1)))

📄📄📄📄📄📄📄🕊️🕊️░

Paint palette fill

Put palette progress 0-10 in A1. Color blobs fill the artist palette.

=REPT("🎨",MIN(A1,B1))&REPT("○",MAX(0,B1-A1))&" palette"

🎨🎨🎨🎨🎨○○○○○ palette

Income vs expense bar

Put income in A1 and expenses in B1. Dollar blocks show surplus left after bills.

=IF(A1>=B1,REPT("💵",MIN(10,MAX(0,ROUND((A1-B1)/A1*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND((A1-B1)/A1*10,0)))))&" surplus","⚠️ overspent")

💵💵💵💵💵💵░░░░ surplus

Savings goal percent bar

Put saved in A1 and savings goal in B1. Piggy blocks track your goal percent.

=REPT("🐷",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("○",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0)))))&" "&ROUND(A1/B1*100,0)&"% saved"

🐷🐷🐷🐷🐷🐷○○○○ 62% saved

Invoice paid status

Put 1 for paid or 0 for unpaid in A1. Quick invoice collection flag.

=IF(A1=1,"✅ Paid","📄 Unpaid")

✅ Paid

IF

Daily mood picker

Put mood 1-5 in A1. Happy, neutral, sad, angry, or tired face.

=CHOOSE(A1,"😊","😐","😢","😤","😴")

😐

Habit dot grid 7 days

Put habits done 0-7 in A1. Filled dots mark completed days this week.

=REPT("●",MIN(A1,7))&REPT("○",MAX(0,7-A1))&" "&A1&"/7 days"

●●●●●○○ 5/7 days

Pipeline stage status

Put stage 1-5 in A1. Lead, qualified, proposal, negotiation, or won.

=CHOOSE(A1,"🟡 Lead","🔵 Qualified","📋 Proposal","🤝 Negotiation","✅ Won")

📋 Proposal

Monthly quota percent bar

Put sales in A1 and monthly quota in B1. Bar blocks track quota percent.

=REPT("█",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0)))))&" "&ROUND(A1/B1*100,0)&"% quota"

███████░░░ 72% quota

Cumulative sales counter

Put total deals closed in A1. Trophy stacks celebrate cumulative wins.

=REPT("🏆",MIN(A1,10))&" "&A1&" deals closed"

🏆🏆🏆🏆🏆 5 deals closed

Letter grade from percent

Put score percent 0-100 in A1. Converts to letter grade A through F.

=IF(A1>=90,"A",IF(A1>=80,"B",IF(A1>=70,"C",IF(A1>=60,"D","F"))))

B

IF

Homework turn-in progress

Put assignments turned in in A1 and assigned in B1. Pencil blocks track homework completion.

=REPT("📝",MIN(A1,B1))&REPT("○",MAX(0,B1-A1))&" "&A1&" turned in"

📝📝📝📝📝📝📝○○○ 7 turned in

Attendance present absent tally

Put present days in A1 and absent days in B1. Checks and X marks tally attendance.

=REPT("✅",MIN(A1,5))&REPT("❌",MIN(B1,5))&" "&A1&"P-"&B1&"A"

✅✅✅✅❌ 4P-1A

Collection completion percent bar

Put creatures caught in A1 and total in B1. Filled circles track collection percent.

=REPT("◉",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("○",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0)))))&" "&ROUND(A1/B1*100,0)&"% caught"

◉◉◉◉◉◉◉○○○ 68% caught

Creature type picker

Put type 1-5 in A1. Fire, water, grass, electric, or rock type emoji.

=CHOOSE(A1,"🔥 Fire","💧 Water","🌿 Grass","⚡ Electric","🪨 Rock")

⚡ Electric

HP bar project health

Put HP 0-5 in A1. Hearts show project or task health remaining.

=REPT("❤️",MIN(A1,5))&REPT("🖤",MAX(0,5-A1))&" HP"

❤️❤️❤️🖤🖤 HP

Generate a formula from a prompt

Frequently asked questions

How do I use the CHAR function in Google Sheets?
Type =CHAR(number) where number is the Unicode code point for the symbol you want. Select a character from the grid, then click Copy formula. For syntax, videos, and examples, see the CHAR formula guide.
How do I insert special characters in Google Sheets without copy-paste?
Enter a CHAR formula directly in the cell, for example =CHAR(10003) for a checkmark. Use this page to find the character, click Copy formula, and paste into Google Sheets. No add-on or character map required.
What is the CHAR number for a checkmark, star, bullet, or line break?
Common codes: checkmark =CHAR(10003), star =CHAR(9733), bullet =CHAR(8226), line break =CHAR(10). Each glyph in Popular Characters links to a deep link with the formula ready to copy.
What is the difference between CHAR and CODE in Google Sheets?
CHAR turns a number into a character. CODE does the reverse: it returns the numeric code for the first character in a text string. Use CHAR to insert symbols from a code point. Use CODE when you already have the character and need its number.
What is the difference between CHAR and UNICODE?
Both return a single text character from a numeric code in Google Sheets. UNICODE is often clearer when you think in Unicode code points. CHAR is the classic name most spreadsheet users search for. This page copies =CHAR(n) formulas for pasting into your sheet.
How do I find the CHAR code for any symbol?
Click the symbol in the grid, or type its decimal code in the search bar (for example 9733 for a star). You can also use =CODE("★") on text you already have in a cell.
Can I use CHAR with REPT to make progress bars?
Yes. Combine REPT with block characters, for example =REPT("█",MIN(10,MAX(0,ROUND(A1/B1*10,0))))&REPT("░",MAX(0,10-MIN(10,MAX(0,ROUND(A1/B1*10,0))))). The visual formulas library includes progress bars, star ratings, emoji scenes, and more you can copy and paste.
Why is my CHAR formula showing a blank or error?
=CHAR(10) inserts a line break and can look blank inside a single cell. Numbers above 1114111 or negative values return an error. Excel CHAR only supports codes 1 through 255; Google Sheets supports full Unicode. Double-check the code point in Popular Characters or the detail panel.