Search > Find characters in range, with Non-ASCII Characters (128-255) selected, jumps to accented letters and most symbols. If that comes up empty or you need something more specific, switch Search Mode to Regular expression and search [^\x00-\x7F]+.
Higher code points are a different story. According to the Notepad++ User Manual, the range dialog stops at 255, so zero-width spaces, smart quotes and anything else above that need a pattern such as \x{200B} in Regular expression mode.
Pasted web text is the usual way hidden characters get in. CSV exports and files saved under a different encoding do it too, and encoding also decides which searches can see them.
How to Show Special Characters in Notepad++

Go to View > Show Symbol > Show All Characters, or click the paragraph-mark icon on the toolbar. Tabs, spaces, line endings and control characters turn into visible symbols.
Showing them is only half of it, since nothing gets located this way. The search methods further down do that part.
Show All Characters
One click turns on every symbol group, and a second click turns them all off.
The toolbar icon has a drop-down too (right-click works as well) that opens the full Show Symbol submenu, so each group can be switched on alone.
None of it changes the file. The bytes you save stay exactly as they were.
Space, Tab and Line-Ending Symbols
Show Space and Tab draws spaces as a colored dot and tabs as an arrow stretched to the tab width. Show End of Line puts CR, LF or CR LF in small boxes, which makes Windows and Unix line endings easy to tell apart.
A file with mixed endings shows different boxes on different lines.
Non-Printing and Control Characters

The Notepad++ User Manual lists 43 characters under Show Non-Printing Characters, with NBSP (U+00A0) and ZWSP (U+200B) among them. Each one appears as a small box holding an abbreviation or a code point, and the display is set under Settings > Preferences > Editing > Non-Printing Characters.
Show Control Characters & Unicode EOL goes further. It adds the C0 and C1 control codes, plus the line separator (U+2028) and paragraph separator (U+2029).
Since v8.9.1, pasting invisible characters into the Find what or Replace with box triggers a status bar warning, because those fields cannot display them.
Text auto-filled from a selection skips that warning, even though the hidden characters are still in the box.
How to Find Non-ASCII Characters with Find Characters in Range

Search > Find characters in range jumps to the next character whose value falls inside a range you choose. The Non-ASCII option covers decimal values 128 to 255.
- Open Search > Find characters in range.
- Select Non-ASCII Characters (128-255).
- Pick a direction and tick Wrap around, so the search loops past the end of the file.
- Click Find. The first non-ASCII character gets selected.
- Click Find again to step to the next one, then click Close when you’re done.
The selected character carries straight into Replace. Press Ctrl+H and Notepad++ has already copied the selection into Find what, though an invisible character will not show in that box.
The dialog also offers ASCII (0-127) and a custom range, entered in decimal.
The manual states that values above 255 are not handled in a useful way, so the dialog cannot search by Unicode code point.
A custom range of 0 to 31 targets control characters, but tab (9), line feed (10) and carriage return (13) sit inside it. The search stops on every line ending, which a regular expression avoids by excluding those three.
How to Identify an Unknown Character Before Searching for It

Read the character’s code first, then build the search. Guessing doesn’t work well with lookalikes, since a non-breaking space and a regular space render the same.
| Tool | What it shows | Limit |
|---|---|---|
| Show Non-Printing Characters | Abbreviation or code point in a box | Only the 43 listed characters |
| Character Panel | Value, hex and HTML entities for 256 characters | Value column means nothing for 128-255 under Unicode encodings |
| Hex-Editor plugin | Raw byte values | Separate install |
Edit > Character Panel opens the ASCII Codes Insertion Panel, which lists the first 256 characters of the active encoding. Double-clicking a cell inserts the character, its number or an HTML entity into the document. The manual flags one catch. Under UTF-8 or UTF-16, only the Character column counts for values 128-255.
Hex-Editor installs through Plugins > Plugins Admin. Search for it in the Available tab, then restart Notepad++.
Sources disagree on 64-bit builds. A Stack Overflow answer reports a clean Plugins Admin install on v8.3.3 (64-bit), while UltraEdit’s 2026 guide says the plugin does not install on 64-bit builds.
If Hex-Editor is missing from Available, check the Installed tab first. Notepad++ Community regulars also point out that copying HexEditor.dll into a plugins\HexEditor folder is the official route for any plugin that Plugins Admin does not list.
Byte values and code points differ outside plain ASCII. A non-breaking space is code point U+00A0 but two bytes, C2 A0, in a UTF-8 file, so the number you read decides which search method fits.
A labeled box such as ZWSP already gives you the code point, so skip the hex view there. A symbol that looks like an ordinary letter is the case that needs it.
How to Search for Special Characters in Extended Mode

Select Extended in the Search Mode box of the Find dialog (Ctrl+F), then type an escape. \t finds a tab and \x11 finds the DC1 control character.
The manual lists ten escapes, and only a handful matter for most special-character work.
- \t is a tab (0x09)
- \r and \n are carriage return (0x0D) and line feed (0x0A), so \r\n covers a Windows line ending
- \0 matches the NUL control character
- \xHH takes a byte as two hex digits, so \x20 is a space
- \uHHHH takes a two-byte character as four hex digits. In Unicode builds, \u263A finds ☺ (a smiley face) in a UTF-8 file
- \dNNN takes a byte as three decimal digits, and \d032 is a space
Octal (\o) and binary (\b) forms follow the same pattern.
A Notepad++ Community thread suggests \xA0 for the non-breaking space, and the same escape also works in Regular expression mode.
Regex habits do not carry over well. The manual marks five of the ten escapes (\0, \b, \o, \d and \u) as different from, or missing in, regular expressions. Here \d introduces a three-digit decimal byte value instead of matching any digit.
Extended mode matches one exact value at a time. Ranges and character classes need Regular expression mode.
Community regulars note that the mode predates regex support in Notepad++ (before version 6.0), which is why many call it limited. I’d say it’s underrated for a single known byte. For anything wider, regex is the better choice.
Which Regular Expressions Find Non-ASCII and Control Characters?

Set Search Mode to Regular expression and search [^\x00-\x7F]+ to find any run of non-ASCII characters. For control characters that leave tabs and line endings alone, use [\x00-\x08\x0B\x0C\x0E-\x1F].
| Target | Pattern | Catch |
|---|---|---|
| Any non-ASCII character | [^\x00-\x7F]+ | Matches runs, so one hit can span several characters |
| Control characters except tab, LF and CR | [\x00-\x08\x0B\x0C\x0E-\x1F] | Line endings stay untouched |
| Zero-width space | \x{200B} | Unicode encodings only |
| Soft hyphen | \xAD | Missing from the manual’s Non-Printing list |
| Anything above code point 255 | [[:unicode:]] | Skips the 128-255 range |
\xHH takes two hex digits (0 to 255), and what it matches depends on the file’s encoding. In an ANSI file, the manual notes, \xE9 can match an accented e or a Greek theta, depending on the code page.
\x{HHHH} reaches any code point from U+0000 to U+FFFF, but only under a Unicode encoding.
The sources don’t fully agree on [[:cntrl:]]. The manual gives it as [\x00-\x1F\x7F\x81\x8D\x8F\x90\x9D], which lists five C1 codes. A Notepad++ Community analysis of Unicode text reports the class matching all 32 C1 characters plus most format characters, while missing the zero-width space and soft hyphen.
Those five codes are the unassigned positions in Windows-1252, which points to an ANSI-oriented list. Test the class on a sample in your own file’s encoding before trusting it.
The engine behind every pattern here is Boost regex, version 1.90 as of Notepad++ v8.9.1. Patterns copied from other regex testers can behave differently.
Which Method Fits Which Character?
Show All Characters is for looking, Find Characters in Range for stepping through accented text, Extended mode for one known value, and Regular expression mode for ranges and code points.
| Situation | Method | Setup cost |
|---|---|---|
| Pasted text looks odd, cause unknown | Show All Characters | One click |
| Accented letters or symbols in an English file | Find Characters in Range | Three clicks, no syntax |
| One known byte such as DC1 or a tab | Extended mode | One escape |
| A range, a class or a code point | Regular expression mode | A pattern to write and test |
Show All Characters wins on speed and needs zero syntax, but scanning by eye does not scale to long files. Find Characters in Range steps through hits without syntax too. Its weakness is that the dialog offers only Find and Close, so you never get a list of hits.
Extended mode is great when the exact value is known and annoying when the character varies, because every value needs its own search. Regular expression mode handles ranges and produces Find All lists. The price is risk, since a loose pattern matches more than intended.
Regex isn’t my default. When one escape finds the character, a pattern only adds ways to mismatch.
How to Highlight, Count and Replace the Matches

Find All in Current Document lists every hit, Mark All highlights them in the text, and Count reports the total before anything changes. Replace All comes last, after the results look right.
- Press Ctrl+F, pick the Search Mode and enter the pattern.
- Click Find Next first. In Regular expression mode, the Invalid regular expression error appears only on that button, and every other button just reports no result.
- Click Count and read the total in the dialog’s status bar.
- Click Find All in Current Document, then press F7 to open the Search results window.
- Switch to the Replace tab, leave Replace with empty to delete the matches, and tick Wrap around so one pass covers the whole file.
- Click Replace All. Press Ctrl+Z if the count looks wrong.
Ctrl+M opens the Mark tab, where Mark All highlights each match. Zero-width characters are the reason this matters. Find Next lands on the right line but not the exact spot, so a Notepad++ Community regular recommends Mark All for them.
Ticking Bookmark line puts a marker on each affected line instead, and Search > Bookmark > Copy Bookmarked Lines then gathers every offending line in one paste.
In the Search results window each match gets its own line, so a line with three hits appears three times unless one entry per found line is switched on under Settings > Preferences > Searching.
F4 and Shift+F4 step through results from anywhere in the editor. The window empties when Notepad++ closes, so copy anything worth keeping.
Find All in All Opened Documents covers every open tab.
Replace All in All Opened Documents has an optional confirmation checkbox. The manual describes it as a v8.9.9 change that moves the checkbox from Settings > Preferences > Searching into the Find dialog. The latest release as of November 2026 is v8.9.8.1, where it still sits under Preferences.
Why Does the Search Miss Characters or Return the Wrong Matches?
Most misses trace back to encoding. Notepad++ read the file under a different encoding than the one the character was saved in. Find in Files guessing, characters outside the basic multilingual plane and invalid bytes account for the rest.
Encoding Mismatches
When a file opens, Notepad++ settles its encoding in this order:
- A byte order mark (UTF-16, or UTF-8 with BOM)
- An encoding declared in an XML or HTML prolog
- Byte-pattern analysis, if Autodetect character encoding is on under Settings > Preferences > MISC
- Pure ASCII, or bytes that all follow valid UTF-8 rules
- The system locale, with ANSI as the last resort
A wrong guess changes the characters in the editor, so a search for the character you expect finds nothing. The Euro sign saved as three UTF-8 bytes, for instance, shows as three garbled characters when the file is read as ANSI.
The upper Encoding menu entries reinterpret the same bytes, which is the move when the glyphs look wrong. The Convert to entries rewrite the bytes and keep the glyphs, which is the move when the text looks right and the file needs to become UTF-8 or UTF-8-BOM.
The BOM is metadata, so it never appears in the editor text and no search finds it. Convert to UTF-8-BOM adds it, and Convert to UTF-8 removes it.
One recent change to know about. Since Notepad++ 8.8.8, the ANSI and Convert to ANSI entries are disabled when Windows has Use Unicode UTF-8 for worldwide language support turned on. In that case ? > Debug Info shows Current ANSI codepage as 65001.
Find in Files

Find in Files guesses the encoding of each file on its own, which is where non-ASCII searches go wrong. A Notepad++ Community regular called it weak with non-ASCII characters in May 2021, with bug reports still pending, and no newer confirmation turned up.
Searches for ASCII characters work fine, and so do valid characters in well-defined encodings such as UTF-8-BOM or UTF-16 LE BOM files. They fail on files where Notepad++ has to guess the encoding, and on files holding invalid bytes, such as a lone x93 inside a UTF-8 file.
Convert the target files to UTF-8-BOM first if the folder search matters. Files already open are searched from the editor buffer instead of disk, so unsaved edits count too, per the manual.
Regex Edge Cases
Characters from U+10000 up sit beyond the basic multilingual plane and match as two separate characters (surrogate codes). The steam locomotive character at U+1F682 therefore needs \x{D83D}\x{DE82}.
A lone byte such as x93 in a UTF-8 file is not a valid character at all. Community regulars call a byte-level search for it a repair trick, not a general technique.
One Stack Overflow poster saw [^\x00-\x7F]+ also select CRLF. A commenter could not reproduce it, and a reinstall cleared it.
Test any pattern on a short sample in the same encoding before running Replace All across the whole file.
Special Character Search in Notepad++ FAQ
Which characters count as special in Notepad++?

Notepad++ has no formal definition. In practice the term covers non-ASCII characters (anything above code point 127) and control characters such as NUL and DC1. Invisible characters like the non-breaking space and zero-width space get lumped in too.
Is a BOM a special character?

Yes, in the Unicode sense, but Notepad++ keeps it out of the editor text.
The Encoding field in the status bar shows whether one exists. UTF-8-BOM or any UTF-16 entry means the BOM is read and written.
How do you convert a file to UTF-8 before searching?
Choose Encoding > Convert to UTF-8, or Convert to UTF-8-BOM, once the file displays correctly. Double-clicking the encoding field in the status bar opens the same menu.
Converting a file that already shows garbled characters keeps the garbling, because the Convert to entries rewrite bytes and leave the glyphs alone.
How do you find bad characters in a CSV file?

Open the file, set Regular expression mode, search [^\x00-\x7F]+ and click Find All in Current Document. The Search results window lists every row holding a hit.
Legitimate accented names match too, so read the rows before running Replace All.
Does the Replace with box accept character codes?
Yes, in Regular expression mode. The manual says character-code syntax such as \x{00A0} works in both Find what and Replace with.
To insert a character, type a placeholder like @@ into the file, then replace it with the code.
Stopping Hidden Characters at the Source
Setting the exporting system to UTF-8 removes the encoding mismatches behind garbled text. Invisible characters such as the non-breaking space still arrive with copied web text, so the fix only goes halfway.
Set the export encoding to UTF-8 first, because a mismatch hides characters from every later search. After that, run Count on each new file, and only then replace the targets the data can tolerate. Count shows how many hits are legitimate accented names rather than debris.
A blanket [^\x00-\x7F]+ replacement deletes real accented letters along with the junk. Narrower targets, such as \x{200B} or \xA0 swapped for a plain space, protect production data.
This advice was checked against the online Notepad++ User Manual in November 2026. The manual already documents v8.9.9, while the latest release is v8.9.8.1. A release that fixes Find in Files encoding guessing would remove the need to convert target files first.
- Protecting Users and Brand Standards Across Image-Driven Platforms - November 10, 2026
- Go Cheat Sheet - November 9, 2026
- Build or White-Label Software? How Software Teams Decide What to Resell in 2026 - November 9, 2026



