Clean Slack Text Formatting Instantly

Strip the smart quotes, non-breaking spaces, and invisible characters that Slack embeds in messages. Paste your Slack text above — hidden formatting is removed in milliseconds, entirely in your browser.

Rules:Smart QuotesConverts curly quotes (“” ‘’) to straight quotes. Always active.Non-Breaking SpacesReplaces non-breaking spaces (U+00A0) with regular spaces. Always active.Line EndingsNormalizes CRLF → LF and trims trailing whitespace per line. Always active.Removes invisible zero-width characters (U+200B, U+200C, U+200D) that silently break string comparisons.Strips the Byte Order Mark (U+FEFF) that causes “invalid character” errors in parsers and editors.Removes soft hyphens (U+00AD) from PDFs that show as garbled characters in code editors.Converts mixed tabs/spaces to a consistent indent width. Click to pick a size.Collapses all line breaks into one continuous paragraph. Great for reflowing PDF or email text.Control blank line density. Click to pick Keep 1 or Remove all.Text never leaves your browser
0 characters

Why Slack text is full of hidden formatting

Slack is one of the most common sources of hidden formatting problems for developers and technical teams. When you copy text from Slack messages — especially code, configuration values, or commands shared outside of a code block — Slack includes a surprising number of invisible characters that cause real failures downstream.

Smart quote conversion

Slack automatically converts straight quotes to smart quotes (curly quotes) in regular message text. When a colleague types " in a Slack message without wrapping it in backticks, Slack converts it to or (U+201C and U+201D). Single quotes become and (U+2018 and U+2019).

These Unicode characters look nearly identical to straight quotes in most fonts, but they break every programming language and data format that uses quotes as syntax: Python, JavaScript, JSON, SQL, YAML, shell scripts, and more. A command pasted from Slack into a terminal will fail with a cryptic parse error before it even runs.

Non-breaking spaces

Slack inserts non-breaking spaces (U+00A0) in certain positions within message text, particularly around mentions (@username), channel references, and formatted elements. Non-breaking spaces look identical to regular spaces but are a different Unicode code point.

When you copy text with non-breaking spaces into a code editor or terminal, they appear as spaces but behave differently. They cause IndentationError in Python, break command-line argument parsing in shell scripts, and cause string comparisons to fail unexpectedly.

Zero-width characters around mentions and links

Slack wraps mentions, hashtags, and link previews with zero-width characters — typically zero-width spaces (U+200B) and zero-width joiners (U+200D). These are completely invisible but travel with the copied text. When you paste Slack text into a database, search index, or code file, these characters cause:

  • String comparisons that fail on text that looks identical
  • Regex matches that don't work on text you can clearly see
  • Character counts that are higher than expected
  • Corrupted variable names if code was pasted from a Slack message without using backtick code formatting

The right way to share code in Slack

To prevent these issues at the source: always wrap code in backticks in Slack. Use a single backtick for inline code and triple backticks (```) for code blocks. Inside Slack code blocks, straight quotes are preserved and smart quote conversion is disabled.

But when someone has already shared code or configuration values in plain text — which happens constantly — Unformat is the fastest way to clean it before use.

Common scenarios where Slack formatting causes failures

  • Copying a command from a Slack message and pasting it into a terminal — smart quotes cause a shell parse error
  • Copying a JSON snippet shared without code blocks into a file — smart quotes make the JSON invalid
  • Copying an API key or token from Slack into config — zero-width characters silently corrupt the value
  • Copying error messages or log output shared in Slack for searching or grep — invisible characters prevent pattern matching
  • Copying SQL from a Slack discussion into a query editor — smart quotes break string literals and identifiers

How Unformat cleans Slack text

Unformat targets every formatting artifact that Slack introduces and converts it back to the clean ASCII equivalent your tools expect.

Standard mode handles the most common Slack issues: smart quotes are replaced with straight ASCII quotes, non-breaking spaces are converted to regular spaces, zero-width characters are stripped, and line endings are normalized. Use this when cleaning Slack text headed for documents, notes, or messaging platforms.

Developer mode is the right choice for code, commands, and configuration copied from Slack. In addition to everything Standard mode does, it removes soft hyphens, strips BOM markers, converts em-dashes and en-dashes to regular hyphens, and handles tab-to-space conversion. Use Developer mode when the text will be pasted into a terminal, code editor, JSON file, or API call.

The stats toast shows you exactly what was removed — how many smart quotes were replaced, how many invisible characters were stripped, and how many non-breaking spaces were normalized.

Your Slack text never leaves your browser. Unformat processes everything locally in JavaScript. This is important for messages that contain API keys, credentials, internal URLs, or proprietary configuration values.

How to clean your text

  1. Copy the text from the Slack message (Ctrl+C or Cmd+C).
  2. For code, commands, or config values — switch to Developer mode using the toggle above the text area.
  3. Paste into the text area above (Ctrl+V or Cmd+V) — hidden formatting is removed instantly.
  4. Check the stats toast to confirm what was stripped.
  5. Click "Copy Clean Text" or press Ctrl+K to copy the clean output.
  6. Paste into your terminal, code editor, JSON file, or destination application.

Frequently Asked Questions

Why does code break when I copy it from Slack?

If the code was shared without backtick formatting in Slack, it went through Slack's message renderer which converts straight quotes to smart quotes (curly quotes). These Unicode characters (U+201C, U+201D, U+2018, U+2019) are not recognized as quote delimiters by any programming language. The code looks correct on screen but fails the moment a parser or interpreter reads it. Unformat replaces them with straight ASCII quotes.

How do I prevent Slack from changing my quotes?

Wrap your code or command in backticks before sending. A single backtick (`) for inline code, triple backticks (```) for multi-line code blocks. Inside Slack code formatting, smart quote conversion is disabled and straight quotes are preserved. If you're the recipient of already-sent plain text with smart quotes, paste it into Unformat to fix it.

Can Slack text contain zero-width characters?

Yes. Slack inserts zero-width spaces and zero-width joiners around mentions (@username), channel links (#channel), and embedded link previews. When you copy text that contains these elements, the invisible characters come along. They are harmless to read but cause string comparison failures, regex mismatches, and character count discrepancies in code and databases.

Does this work for Slack messages with emoji?

Yes, with a caveat. Simple emoji characters are Unicode code points and are preserved intact. However, complex emoji sequences use zero-width joiners (U+200D) to combine multiple emoji into one glyph. If you remove U+200D, these combined emoji may split into their components. For most developer use cases (cleaning code and config), this is acceptable and expected behavior.

Is this safe for Slack messages with API keys or credentials?

Yes. Unformat runs entirely in your browser using JavaScript. Your Slack message text is never sent to any server, never stored, and never logged. You can verify this by opening your browser's Developer Tools (F12) and watching the Network tab — you will see zero outbound requests while the text is being cleaned.