Google Sheets Special Characters

Visual formulas for cells

500+ 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.
Ads keep the free stuff free. Members browse ad-free — log in or see pricing.
Big Year 2027 calendar: the whole year on one Google Sheet

Free 2027 calendar.Plan all of 2027 on one Google Sheet, free.

Copy it to your Google Drive.

Free. No password, no card. The sheet link shows up right here.