TEXTJOIN Function in Google Sheets
Concatenates a range of text values using a delimiter between each. The modern way to join strings — replaces clunky CONCATENATE chains for ranges.
Syntax
TEXTJOIN(delimiter, ignore_empty, text1, [text2, ...])Returns: A single string with all non-empty values joined by delimiter.
Excel equivalent: TEXTJOIN (identical, requires Excel 2019+ or Microsoft 365)
Parameters
| Name | Required | Description |
|---|---|---|
| delimiter | Required | What to put between each value, e.g., ", " or "\n" for a line break. |
| ignore_empty | Required | TRUE skips empty cells (most common). FALSE includes them as zero-length strings. |
| text1, text2, ... | Required | Values or ranges to join. |
Examples
Join a column into a comma-separated list
=TEXTJOIN(", ", TRUE, A2:A100)Produces "Apple, Banana, Cherry, ..." from column A, skipping any blank cells.
Build a sentence from fields
=TEXTJOIN(" ", TRUE, "Hello,", A2, "your order is", B2)Combines fixed text with cell values. Outputs e.g., "Hello, Alice your order is #1234".
Multi-line output for invoice line items
=TEXTJOIN(CHAR(10), TRUE, ARRAYFORMULA(A2:A20 & " — " & B2:B20))CHAR(10) is a line break. Wraps in ARRAYFORMULA to format each row first. Use cell wrapping (Format → Wrapping → Wrap) to see the lines stacked.
When to use an alternative
- CONCATENATE / & — You only have a handful of fixed cells to join, not a range.
- JOIN — You don't need to skip empty cells (JOIN is the simpler older function).
- ARRAYFORMULA + nested logic — You need per-row joins, not a single combined string.
Common errors and how to fix them
Joins blank cells with delimiters
Cause: ignore_empty set to FALSE.
Fix: Pass TRUE as the second argument.
#VALUE!
Cause: Delimiter argument missing or one of the inputs is an error.
Fix: Wrap inputs with IFERROR or filter the range first.
Related functions
Frequently Asked Questions
What's the difference between TEXTJOIN and JOIN?
JOIN doesn't have an ignore_empty option — it includes blanks, producing "Apple,,Cherry" if the middle cell is empty. TEXTJOIN handles that case correctly. JOIN also doesn't support multiple range arguments. Use TEXTJOIN unless you're maintaining an older sheet.
How do I add a line break with TEXTJOIN?
Use CHAR(10) as the delimiter: TEXTJOIN(CHAR(10), TRUE, A2:A100). To see the line breaks in the cell, enable text wrapping: Format → Wrapping → Wrap.