Removing Hidden Spaces and Non-Breaking Characters in Excel with CHAR Formulas

📅 Sep 03, 2026 📝 Sarah Miller

Dealing with stubborn, invisible spaces in Excel that break your lookups and data analysis is incredibly frustrating. While standard cleanup tools like the TRIM function or Find & Replace work for regular spaces, they fail to remove non-breaking web spaces. By targeting specific character codes using CHAR, you can cleanly purge these hidden barriers. However, remember this requires targeting the exact character code, typically CHAR(160). For example, nesting =TRIM(SUBSTITUTE(A1, CHAR(160), " ")) replaces non-breaking spaces with standard ones before trimming. Below, we outline how to implement this formula step-by-step.

Removing Hidden Spaces and Non-Breaking Characters in Excel with CHAR Formulas

Understanding the Nightmare of "Dirty" Excel Data

We have all been there. You write a flawless VLOOKUP, XLOOKUP, or SUMIF formula, reference the correct cells, press Enter, and get the dreaded #N/A or 0 error. You double-check the lookup value and the source table-they look absolutely identical. You even copy and paste one over the other, yet Excel insists they do not match.

The culprit is almost always hidden characters. These invisible troublemakers often sneak into your spreadsheets when you copy data from external sources, such as databases, ERP systems (SAP, Salesforce), PDF files, or web pages. While they look like standard spaces to the human eye, to Excel, they are distinct, non-printing ASCII characters that disrupt calculations, lookups, and data sorting.

While Excel's built-in TRIM function is great for removing standard extra spaces, it is powerless against these hidden ghosts. To fix this, you must harness the power of the CHAR function combined with nested formulas. This guide will walk you through the exact formulas you need to clean your data and restore sanity to your spreadsheets.

The Limitations of the TRIM Function

To understand why we need the CHAR function, we first need to understand why TRIM fails. The TRIM function is designed to do three things:

  • Remove all leading spaces in a text string.
  • Remove all trailing spaces in a text string.
  • Reduce multiple consecutive spaces between words to a single space.

However, TRIM only recognizes the standard space character, which is represented by ASCII code 32. It does not recognize or remove non-breaking spaces, line breaks, or other control characters. If your data contains these characters, TRIM will simply ignore them, leaving your data "dirty."

Meet the Culprits: ASCII Codes and the CHAR Function

Computers interpret text characters using numeric codes. In the Windows ANSI character set and standard ASCII, every character has a number from 1 to 255. Excel's CHAR() function takes a number and returns its corresponding character. Conversely, the CODE() function takes a character and returns its numeric code.

When dealing with hidden spaces and unwanted formatting, three specific characters cause 99% of the problems:

ASCII Code Excel Formula Character Name / Description Common Source
32 CHAR(32) Standard Space Spacebar on your keyboard
160 CHAR(160) Non-Breaking Space ( ) Web pages, HTML exports, copy-pastes from browsers
10 CHAR(10) Line Feed (Line Break) Alt+Enter in Excel, database text fields
13 CHAR(13) Carriage Return Text files, Mac OS line breaks, system exports

How to Remove the Non-Breaking Space: CHAR(160)

The non-breaking space (ASCII 160) is the most common hidden space. It is widely used in web design to prevent browsers from automatically wrapping text to a new line. When you copy data from a website or an HTML-based report into Excel, these non-breaking spaces tag along.

Since TRIM cannot touch CHAR(160), we must first convert it into a standard space (ASCII 32) using the SUBSTITUTE function. Once it is a standard space, we can run the TRIM function over it to clean up any remaining mess.

The Formula:

=TRIM(SUBSTITUTE(A2, CHAR(160), " "))

How It Works:

  1. SUBSTITUTE(A2, CHAR(160), " "): This searches cell A2 for any instances of a non-breaking space (CHAR(160)) and replaces each one with a standard, recognizable space (" ").
  2. TRIM(...): Once the non-breaking spaces are converted into standard spaces, the outer TRIM function safely strips away any of these newly created leading, trailing, or duplicate spaces.

Removing Line Breaks: CHAR(10) and CHAR(13)

Sometimes, data exports contain unexpected line breaks that stretch your rows visually or break your lookup formulas. In Windows, a line break is often a combination of a carriage return (CHAR(13)) and a line feed (CHAR(10)).

To clean these up and flatten your text into a single line, you can nest multiple SUBSTITUTE functions together:

The Formula:

=TRIM(SUBSTITUTE(SUBSTITUTE(A2, CHAR(10), " "), CHAR(13), " "))

This formula replaces both line feeds and carriage returns with standard spaces, and then trims the excess spaces. If you prefer to remove the line breaks entirely without replacing them with spaces, simply replace the " " with an empty string "":

=TRIM(SUBSTITUTE(SUBSTITUTE(A2, CHAR(10), ""), CHAR(13), ""))

The Role of the CLEAN Function

Excel has another built-in function specifically designed for data cleansing: CLEAN. The CLEAN function is designed to remove the first 32 non-printing characters in the 7-bit ASCII set (values 0 through 31). This includes control characters like CHAR(7) (bell), CHAR(9) (tab), and CHAR(10) (line feed).

However, CLEAN cannot remove CHAR(160) because its ASCII code is higher than 31. This is why relying on CLEAN alone often leaves users frustrated when dealing with web-scraped data.

The Ultimate "Super-Clean" Nested Formula

If you want a bulletproof, "one-size-fits-all" formula to clean any cell of non-breaking spaces, control characters, standard extra spaces, and line breaks, you should combine TRIM, CLEAN, and SUBSTITUTE into a single nested formula:

The Master Formula:

=TRIM(CLEAN(SUBSTITUTE(A2, CHAR(160), " ")))

Why this is the Gold Standard:

  • Step 1 (Innermost): SUBSTITUTE(A2, CHAR(160), " ") targets the non-breaking spaces and converts them to normal spaces.
  • Step 2 (Middle): CLEAN(...) strips out all non-printable control characters (ASCII 0 to 31), including line feeds and carriage returns.
  • Step 3 (Outermost): TRIM(...) sweeps through the remaining text, removing all leading, trailing, and duplicate standard spaces.

How to Detect Which Hidden Character is Ruining Your Data

If you have applied the master formula and your lookups are still failing, you might be dealing with an unusual or extended ASCII character. To diagnose the problem, you need to identify the exact code of the invisible character.

Suppose cell A2 looks like it contains the word "Data" (4 characters), but LEN(A2) returns 5. You know there is a hidden character, likely at the very end.

Step-by-Step Diagnostic Formula:

To extract the 5th character and find its ASCII value, use this formula:

=CODE(RIGHT(A2, 1))

If the hidden character is somewhere in the middle, you can pinpoint its position using MID. For example, to check the character at position 3:

=CODE(MID(A2, 3, 1))

Once Excel returns the code (for example, 127 or 8203 for zero-width spaces), you can simply update your SUBSTITUTE formula to target that specific character code:

=TRIM(SUBSTITUTE(A2, CHAR(127), ""))

Alternative: Cleaning Data Using Find and Replace

If you prefer a quick, formula-free fix, you can use Excel's Find and Replace utility to eliminate non-breaking spaces:

  1. Select your data range.
  2. Press Ctrl + H to open the Find and Replace dialog.
  3. Click into the Find what box.
  4. On your keyboard, hold down the Alt key and type 0160 on the numeric keypad (note: this must be done on the numpad, not the top row numbers). Release Alt. You won't see anything appear, but a hidden space has been typed.
  5. Click into the Replace with box and type a standard space (press the Spacebar once) or leave it completely blank if you want to delete them.
  6. Click Replace All.

Summary

Hidden characters can waste hours of your time if you do not know how to spot and eliminate them. By bypassing simple TRIM functions in favor of TRIM(CLEAN(SUBSTITUTE(cell, CHAR(160), " "))), you can build incredibly robust spreadsheets that resist the common errors associated with importing raw database and web data. Keep this master formula in your toolkit to ensure clean, calculation-ready data every single time.

Disclaimer:
The documents and templates provided on this page are for informational and illustrative purposes only. They do not constitute professional, legal, or financial advice, and should not be relied upon as such. Because individual circumstances and regulatory requirements vary, these materials may not be suitable for your specific needs. We recommend consulting with a qualified professional before adapting or using any of these examples for official or commercial purposes.