CHAR function in Google Sheets: list of codes and examples
CHAR converts a Unicode number into its character: CHAR(10003) is a check mark, CHAR(10) a line break. This guide gives a list of the codes used most often in spreadsheets, a formula that builds your own list, and examples: line breaks in a cell, arrows for trends, star ratings, and cleaning imported text.
The CHAR function returns the character that belongs to a number in the Unicode table:
=CHAR(10003)
The formula returns ✓. CHAR(65) is the letter A, CHAR(10) a line break, CHAR(9733) a star. The function takes any whole number from 1 to 1,114,111, so it reaches far beyond the 255 codes of the old ASCII tables: arrows, check marks, currency signs and emoji are all available.
List of CHAR codes
The codes used most often in spreadsheets. Every result can be copied from the table or produced with the formula next to it.
Line breaks, spaces and punctuation
| Formula | Result | Name |
|---|---|---|
CHAR(10) |
(line break) | Line break inside a cell |
CHAR(9) |
(tab) | Tab |
CHAR(32) |
(space) | Space |
CHAR(160) |
(space) | Non-breaking space, common in text copied from web pages |
CHAR(34) |
" |
Double quote, for use inside a formula |
CHAR(8226) |
• | Bullet |
CHAR(8211) |
– | En dash |
CHAR(8230) |
… | Ellipsis |
Check marks and status signs
| Formula | Result | Name |
|---|---|---|
CHAR(10003) |
✓ | Check mark |
CHAR(10004) |
✔ | Heavy check mark |
CHAR(10007) |
✗ | Cross |
CHAR(10060) |
❌ | Red cross |
CHAR(9989) |
✅ | Green check |
CHAR(9745) |
☑ | Checked box |
CHAR(9744) |
☐ | Empty box |
CHAR(9888) |
⚠ | Warning sign |
CHAR(128308) |
🔴 | Red circle |
CHAR(128994) |
🟢 | Green circle |
Arrows, stars and shapes
| Formula | Result | Name |
|---|---|---|
CHAR(8593) |
↑ | Arrow up |
CHAR(8595) |
↓ | Arrow down |
CHAR(8594) |
→ | Arrow right |
CHAR(8592) |
← | Arrow left |
CHAR(8596) |
↔ | Arrow left and right |
CHAR(9650) |
▲ | Triangle up |
CHAR(9660) |
▼ | Triangle down |
CHAR(9733) |
★ | Filled star |
CHAR(9734) |
☆ | Empty star |
CHAR(9679) |
● | Filled circle |
CHAR(9675) |
○ | Empty circle |
CHAR(9632) |
■ | Filled square |
CHAR(9608) |
█ | Full block, for bars |
Math and greek letters
| Formula | Result | Name |
|---|---|---|
CHAR(176) |
° | Degree |
CHAR(177) |
± | Plus-minus |
CHAR(215) |
× | Multiplication |
CHAR(247) |
÷ | Division |
CHAR(8800) |
≠ | Not equal |
CHAR(8776) |
≈ | Approximately equal |
CHAR(8804) |
≤ | Less than or equal |
CHAR(8805) |
≥ | Greater than or equal |
CHAR(8734) |
∞ | Infinity |
CHAR(8730) |
√ | Square root |
CHAR(931) |
Σ | Sigma |
CHAR(916) |
Δ | Delta |
CHAR(960) |
π | Pi |
CHAR(189) |
½ | One half |
CHAR(8240) |
‰ | Per mille |
Currency, legal signs, superscripts and emoji
| Formula | Result | Name |
|---|---|---|
CHAR(8364) |
€ | Euro |
CHAR(163) |
£ | Pound |
CHAR(165) |
¥ | Yen |
CHAR(162) |
¢ | Cent |
CHAR(8383) |
₿ | Bitcoin |
CHAR(169) |
© | Copyright |
CHAR(174) |
® | Registered |
CHAR(8482) |
™ | Trademark |
CHAR(185) |
¹ | Superscript 1 |
CHAR(178) |
² | Superscript 2 |
CHAR(179) |
³ | Superscript 3 |
CHAR(8320) |
₀ | Subscript 0; the digits up to 9 follow, to 8329 |
CHAR(128512) |
😀 | Grinning face |
CHAR(128077) |
👍 | Thumbs up |
Letters and digits follow the ASCII order: 48 to 57 are the digits 0 to 9, 65 to 90 the capital letters A to Z, 97 to 122 the small letters a to z.
Build your own list
To browse a part of the Unicode table, generate the numbers with SEQUENCE and pass them to CHAR:
=ARRAYFORMULA({SEQUENCE(8,1,9728), CHAR(SEQUENCE(8,1,9728))})

The first number is how many rows to list, the last one the code to start from. Change 8 to 100 and 9728 to 8592 to see a hundred arrows.
Find the code of a character
The reverse function is UNICODE:
=UNICODE("€")
It returns 8364. Paste any character between the quotes, or point the formula to a cell: for a longer text it returns the code of the first character. CODE does the same job.
CHAR syntax
=CHAR(table_number)
- table_number: the number of the character in the Unicode table, typed in or taken from a cell.
A decimal is cut to a whole number: CHAR(65.9) returns A. Whether a character is displayed depends on the font and the device; a code with no glyph shows as an empty box.

The code can sit in a cell, so one formula covers a whole column:
=CHAR(C3)



OWOX Data Marts
See your first report built in real time. 15 minutes.
- Connect your data warehouse
- Pick your metrics
- Get a live Google Sheets report
In the time it takes to write a ticket. Then imagine never writing that ticket again.
Book a DemoWe'll use your actual use case
Line breaks with CHAR(10)
CHAR(10) starts a new line inside the cell. It is the only way to do so from a formula:
="James builds strong client loyalty" & CHAR(10) & "by always exceeding expectations."

The same character works as a separator in JOIN and TEXTJOIN, which turns a column into a list inside one cell:
=JOIN(CHAR(10), B3:B7)

And in the other direction, to remove or use line breaks that came with the data:
=SUBSTITUTE(A2, CHAR(10), " ")replaces every line break with a space.=SPLIT(A2, CHAR(10))puts each line into its own cell.
More on both in the guides to JOIN and TEXTJOIN and SUBSTITUTE. Long lines inside the cell follow the cell’s text wrapping setting.
A header with two labels
="Performance % (month) " & CHAR(8594) & CHAR(10) & "Career Stage " & CHAR(8595)

One cell names both the columns to its right and the rows below it.
Symbols next to a value
Join CHAR to text or to a cell with an ampersand:
=B3 & CHAR(C3)

=CHAR(C3) & " " & CHAR(D3)

Trend arrows
Let IF choose the symbol, so that it changes with the data:
=IF(C3 > B3, CHAR(9650), IF(C3 < B3, CHAR(9660), CHAR(8211)))
A triangle up for growth, a triangle down for decline, a dash for no change. Add color with conditional formatting on the same condition.
Superscripts and subscripts
Unicode has ready-made small digits. Superscript 1, 2 and 3 are the codes 185, 178 and 179; subscript digits run from 8320 to 8329.
="Shift" & CHAR(185)

="Level" & CHAR(8324)

Quotes inside a formula
A double quote ends a text in a formula, so a quote that belongs to the text is written as CHAR(34):
="The status is " & CHAR(34) & B2 & CHAR(34)
CHAR with other functions
REPT: star ratings and bars
REPT repeats a character a given number of times:
=REPT(CHAR(9733), C3)

For a fixed scale, fill the rest with empty stars:
=REPT(CHAR(9733), C3) & REPT(CHAR(9734), 5 - C3)
The full block makes a bar inside a cell: =REPT(CHAR(9608), B2/10) draws seven blocks for 70. For real charts in a cell, see SPARKLINE.
SEQUENCE: a run of characters
=ARRAYFORMULA(B3:B7 & " " & CHAR(128512 + SEQUENCE(COUNTA(B3:B7), 1, 0, 1)) & " - " & C3:C7)

SEQUENCE returns 0, 1, 2 and so on, one number for each name; added to 128512 it gives a different emoji per row. The same idea returns the alphabet: =ARRAYFORMULA(CHAR(SEQUENCE(26, 1, 65))).
QUERY: filter by a symbol
A symbol can be a filter value. Building it with CHAR avoids pasting it into the query text:
=QUERY(B2:C7, "SELECT B, C WHERE C = '" & CHAR(10003) & "'", 1)

The same works in COUNTIF: =COUNTIF(C3:C7, CHAR(10003)) counts the check marks.
SUBSTITUTE: clean imported text
Text copied from web pages often holds non-breaking spaces, CHAR(160), which look like spaces but are not removed by TRIM and break lookups. Replace them first:
=TRIM(SUBSTITUTE(A2, CHAR(160), " "))
Errors with CHAR
⚠️ Error: #NUM!
✅ Solution: The number is outside the table: 0, a negative number, or more than 1,114,111. An empty cell counts as 0, so =CHAR(C3) on an empty C3 returns #NUM! as well. Wrap it: =IF(C3="", "", CHAR(C3)).
⚠️ Error: #VALUE!
✅ Solution: The argument is text. CHAR(“A”) does not work; to go from a character to its number use UNICODE(“A”).
⚠️ Error: An empty box or a question mark appears.
✅ Solution: The code is valid, but the font has no glyph for it. Try a neighbouring code or another font, and check the result on the devices your readers use: emoji look different on each system.
⚠️ Error: LEN returns 2 for one emoji.
✅ Solution: Characters above code 65,535, which includes most emoji, are stored as two units, and LEN counts both. Keep this in mind when cutting text with LEFT or MID.
⚠️ Error: The line break from CHAR(10) is lost in an export.
✅ Solution: A line break inside a cell is kept in the sheet, but a CSV export wraps such a cell in quotes, and some tools read it as a new row. Replace the line breaks before exporting.
Related Google Sheets functions
Related Google Sheets functions
- REPT: Repeat a character or a text.
- CONCATENATE and the ampersand: Join text and symbols.
- JOIN and TEXTJOIN: Join a range with a separator such as CHAR(10).
- SUBSTITUTE: Replace one character with another.
- TRIM, CLEAN and T: Remove spaces and non-printing characters.
- TEXT: Format numbers and dates as text.
- How to wrap text: Show long text and line breaks in a cell.
- SPARKLINE: A small chart inside a cell.
A symbol is a label for a number that has to be right
A symbol is a label for a number that has to be right
A green check or a triangle pointing up is read faster than any number, which is exactly why it has to rest on current data. The arrow from the IF formula above compares two cells; if those cells were pasted from an export a month ago, the report shows last month with full confidence.
The OWOX Data Marts extension for Google Sheets covers that half. A data analyst publishes a data mart (a table or an SQL query in your data warehouse) and makes it available for reports. In Sheets you open the extension, pick the data mart, tick the columns you want and run it. The rows land in a tab, ready for your formulas.

What changes for the person who maintains the sheet:
- Refresh replaces re-export. Refresh current report in the extension menu re-runs the same pull, and a scheduled refresh keeps the tab current without anyone touching it.
- The source is written on the sheet. The header cell of an imported tab carries a note with the data mart it came from, the time of the import and a link to the report.
- No SQL and no warehouse access needed. The analyst decides which data marts and columns are available. You choose from that list.
The extension does not write or change the analyst’s SQL. The symbols your formulas draw then follow the refreshed numbers, not the last manual paste. The extension comes with the OWOX Cloud plans of OWOX Data Marts; spreadsheet reporting describes both ways data reaches a sheet.
Turn your data into decisions.
Governed data marts give you the clean foundation ML needs to actually work.
- No AI hallucinations
- Analyst-governed definitions
- Every number traces to SQL
Frequently Asked Questions
What are some common use cases for the CHAR function in Google Sheets?
Common use cases for the CHAR function in Google Sheets include inserting special symbols, emojis, or non-printable characters like line breaks (CHAR(10)), adding visual indicators for data trends, converting Unicode values into readable characters, and enhancing text formatting for better data presentation and organization.
Can I combine the CHAR function with other text functions?
Yes, you can combine the CHAR function with other text functions like CONCATENATE, LEFT, RIGHT, MID, or ARRAYFORMULA in Google Sheets. This allows you to create dynamic text strings, format data, or insert special characters seamlessly within more complex formulas for efficient text manipulation.
Is the CHAR function compatible with all operating systems and devices?
The function works the same everywhere Google Sheets runs, and the same code always returns the same character. How the character looks depends on the font and the device: emoji are drawn differently on each system, and a character the font does not have shows as an empty box. Check symbols on the devices your readers use.
How do I find the Unicode value for a specific character?
To find the Unicode value for a specific character, you can use the UNICODE function in Google Sheets. Simply enter the character within the function, like =UNICODE("A"), and it will return the Unicode value for that character.
Can the CHAR function generate special symbols or emojis?
Yes. CHAR takes any Unicode number from 1 to 1,114,111, so it returns symbols and emoji as well as letters: CHAR(10003) is a check mark, CHAR(9733) a star, CHAR(128512) a grinning face. To find the number of a character you already have, use UNICODE, for example UNICODE("€") returns 8364.
How do I use the CHAR function to insert line breaks in Google Sheets?
To insert line breaks using the CHAR function in Google Sheets, use the formula ="Text1" & CHAR(10) & "Text2". Replace "Text1" and "Text2" with your text. CHAR(10) is the line feed character that creates the line break between the two segments of text.
How do I create a star rating system in Google Sheets?
To create a star rating system, you can use the REPT function combined with the CHAR function. For example, =REPT(CHAR(9733), A1) will display filled stars based on the value in cell A1. For half stars, you can adjust the formula to include a different character for half ratings.
What is the CHAR function used for in Google Sheets?
The CHAR function in Google Sheets converts a numeric Unicode code into the corresponding character. Its syntax is =CHAR(number), where number is the Unicode value. This function is useful for inserting special characters, symbols, or emojis into your text based on their Unicode representation.
