That one where a Slack quotes formatting screws your code up again...

That one where a Slack quotes formatting screws your code up again...

Table of Contents

Beautiful Edit: I’ve upgraded to macOS 15.4 (24E248) and the slack native client appears to be honouring the system config!

defaults write NSGlobalDomain Thank you to Michael Schwegel!

Prior: If you’ve ever copied and pasted code snippets to and from Slack, only to find that your code chokes when you excute it, you’re not alone.

The largest culprit? Slack’s auto-formatting of plain double quotes (") into “smart quotes” (“ and ”). We got bit by one during a high stakes database operation just this week!

While this might make your writing look prettier in chat (hot take: it doesn’t), it wreaks havoc in programming. Code expects plain ASCII characters, and these curly quotes are entirely different Unicode characters. They can silently break scripts, JSON, shell commands, and config files — and are especially maddening because they look so similar.

What’s actually happening?

Slack tries to help by auto-replacing straight quotes with typographically correct curly quotes. This is arguably great for English prose, but disastrous for code — especially when you’re copying something like:

{ “name”: “Paul” }

This looks fine, but your JSON parser will choke on it.

{ "name": "Paul" }

^^ This is what you wanted. Typography be damned!

Is there a fix?

Not really. At time of writing, Slack doesn’t provide a setting to turn this off in messages — but code blocks (i.e. wrapping in ```) will work.

you could also set some formatting rules in your editor (see what i did with CSS in this page???), or do something like this:

def fix_quotes(text):
    return text.replace("“", '"').replace("”", '"').replace("‘", "'").replace("’", "'")

but I find myself using find/replace.

Related Posts

Defect injection testing - the lost art of 'Bedbugging'

Defect injection testing - the lost art of 'Bedbugging'

Learn how defect injection (bedbugging) ensures your tests catch bugs using MITMProxy & Chaos Engineering

Read More
Misuse of the term 'Caucasian' is cultural appropriation

Misuse of the term 'Caucasian' is cultural appropriation

How misusing 'Caucasian' erases the diverse cultures of the actual Caucasus region

Read More
Living is more like wrestling than dancing...

Living is more like wrestling than dancing...

How Brazilian Jiu-Jitsu teaches us that success comes from doing ordinary things extraordinarily long

Read More

Get new posts via email

Intuit Mailchimp

Copyright 2024-infinity, Paul Pereyda Karayan. Design by Zeon Studio