If you want to break a single text value into pieces wherever a separator appears, the Text.Split function is what you reach for. It returns each piece as a separate item in a list, which you can then use as is or pull a single part from.
Syntax of Text.Split Function
Text.Split(text as text, separator as text) as list
where
text(required, text). The text value you want to break apart.separator(required, text). The exact text sequence to split on. Every place it appears intextbecomes a break point, and the separator itself is removed from the output.
Returns: a list of text values, the pieces of text between each occurrence of separator. If the separator is not found, the list holds the original text as its only item.
In plain terms, you hand it some text and a separator, and it gives you back the chunks in between as a list.
Example 1: Split a comma-separated string into a list
Break a simple comma-separated string into its three parts.
let
Source = Text.Split("apple,banana,cherry",",")
in
Source
Result: {"apple", "banana", "cherry"}
Each comma marks a break point, and the commas themselves drop out of the result.
Example 2: Split on a multi-character separator
The separator can be more than one character. Here the parts are joined by a space, a dash, and another space.
let
Source = Text.Split("London - UK - Europe"," - ")
in
Source
Result: {"London", "UK", "Europe"}
The whole - sequence is treated as one separator, so the spaces around the dash are not left behind.
Example 3: Grab a single part with an index
Because Text.Split returns a list, you can index it to pull out one part. Here we split a date on / and take the first piece.
let
Source = Text.Split("2026/06/08","/"){0}
in
Source
Result: 2026
The {0} grabs the first item from the list. Lists are zero-based, so {0} is the first part, {1} the second, and so on.
Example 4: Split a column and keep the first part
Pulling the first name out of a full-name column is a common job.
Here is the starting data:
| FullName |
|---|
| Aisha Khan |
| Bruno Silva |
| Mei Tan |
Add a column that splits each name on the space and keeps the first piece:
let
Source = Excel.CurrentWorkbook(){[Name="Contacts"]}[Content],
#"Added FirstName" = Table.AddColumn(Source, "FirstName", each Text.Split([FullName]," "){0}, type text)
in
#"Added FirstName"
The {0} after the split takes the first part of each name.
The result keeps the original column and adds the first name:
| FullName | FirstName |
|---|---|
| Aisha Khan | Aisha |
| Bruno Silva | Bruno |
| Mei Tan | Mei |
Example 5: Split a column and keep the last part
This time we want the domain from an email address, which is whatever comes after the @.
Here is the starting data:
| alex@sales.example.com |
| sara@support.example.org |
| john@example.net |
Split each email on @ and take the last part with List.Last:
let
Source = Excel.CurrentWorkbook(){[Name="Emails"]}[Content],
#"Added Domain" = Table.AddColumn(Source, "Domain", each List.Last(Text.Split([Email],"@")), type text)
in
#"Added Domain"
List.Last returns the final item, so this works no matter how many parts the split produces.
The result adds the domain alongside each email:
| Domain | |
|---|---|
| alex@sales.example.com | sales.example.com |
| sara@support.example.org | support.example.org |
| john@example.net | example.net |
Things to keep in mind with Text.Split
- The separator is an exact text sequence, not a set of characters.
Text.Split("a;b,c",";,")looks for the literal;,, not “a semicolon or a comma”. To split on any one of several characters, useText.SplitAny("a;b,c",";,")instead. - Empty segments come back as empty strings. Splitting
"a,,b"on,returns{"a", "", "b"}, keeping the empty piece between the two commas. - The separator is case-sensitive. Splitting on
"x"will not break on"X". Match the exact casing of the character you want to split on. To test for a substring rather than split on one, reach for Text.Contains instead.
Common questions about Text.Split
What is the difference between Text.Split and the Splitter functions?
Text.Split is a one-shot way to break text on a fixed separator. The Splitter.SplitTextByDelimiter family returns a reusable splitter function and offers more control, like splitting only at the first or last delimiter. The UI’s Split Column feature is built on those splitters.
How do I split a column into separate columns instead of a list?
Use Table.SplitColumn, or the Split Column button on the Home tab. Text.Split only produces a list inside one cell, so you would still need to expand or index that list to land values in their own columns.
List of All Power Query Functions
Related Power Query Functions / Articles:
- Text.BeforeDelimiter Function
- Text.AfterDelimiter Function
- Text.BetweenDelimiters Function
- Text.Range Function
- Text.Middle Function
- Table.SplitColumn Function
- Text.Clean Function
- Splitter.SplitTextByDelimiter Function
- Text.TrimStart Function
- Combiner.CombineTextByDelimiter Function
- Text.Remove Function
- Table.ExpandListColumn Function