Stop sounding like a bot. Strip curly quotes, em dashes, and ellipses: the invisible fingerprints AI leaves on everything it writes.
| Character | Unicode | Name | Replaced With | |
|---|---|---|---|---|
| “ ” | U+201C / U+201D | Left & right double quotation marks | → | " |
| ‘ ’ | U+2018 / U+2019 | Left & right single quotation marks | → | ' |
| — | U+2014 | Em dash | → | - |
| – | U+2013 | En dash | → | - |
| … | U+2026 | Horizontal ellipsis | → | ... |
| [ ] | U+00A0 | Non-breaking space | → | [ ] |
Grab a pre-built static binary for your platform, or build from source with Zig.
curl -Lo unslop https://github.com/jere-mie/unslop/releases/latest/download/unslop-linux-x86_64 chmod +x unslop && sudo mv unslop /usr/local/bin/
curl -Lo unslop https://github.com/jere-mie/unslop/releases/latest/download/unslop-linux-aarch64 chmod +x unslop && sudo mv unslop /usr/local/bin/
curl -Lo unslop https://github.com/jere-mie/unslop/releases/latest/download/unslop-macos-aarch64 chmod +x unslop && sudo mv unslop /usr/local/bin/
curl -Lo unslop https://github.com/jere-mie/unslop/releases/latest/download/unslop-macos-x86_64 chmod +x unslop && sudo mv unslop /usr/local/bin/
Invoke-WebRequest -Uri "https://github.com/jere-mie/unslop/releases/latest/download/unslop-windows-x86_64.exe" -OutFile "unslop.exe" # Move to a directory on your PATH, e.g.: Move-Item unslop.exe "$env:USERPROFILE\bin\unslop.exe"
curl -Lo unslop.wasm https://github.com/jere-mie/unslop/releases/latest/download/unslop-wasm32-wasi.wasm
wasmtime --dir=. unslop.wasm myfile.txt
Requires wasmtime. Use --dir=. to grant filesystem access.
Requires Zig ≥ 0.14.
git clone https://github.com/jere-mie/unslop.git cd unslop zig build -Doptimize=ReleaseFast
The binary appears at zig-out/bin/unslop.
unslop [options] <path>
# Clean a single file in-place unslop README.md # Preview changes without touching the file unslop --dry-run README.md # Recursively clean all files in a directory unslop -r ./docs # Recursive dry-run across a whole repo unslop -r --dry-run ./
| Flag | Description |
|---|---|
| <path> | File or directory to process. Required. |
| -r, --recursive | Recursively process all files in a directory. Required when <path> is a directory. |
| --dry-run | Print transformed output to stdout. Does not modify any files. Useful for previewing changes or piping output. |
| -h, --help | Show the help message and exit. |
Safe by design.
When writing in-place, unslop uses atomic rename operations
(file.tmp → file) so your data is never left in a half-written state.
Zig treats UTF-8 as a first-class citizen. This matters enormously for a tool that operates at the byte level. The smart-quote and em-dash characters are multi-byte UTF-8 sequences (3 bytes each), and Zig lets us slice and match them with minimal overhead and zero ambiguity.
Zero dependencies, one binary. Zig compiles to a fully static native binary. No runtime, no interpreter, no package manager hell. Drop the binary on any machine and it runs.
Performance without ceremony. Processing a repository of thousands of
Markdown files takes milliseconds. The entire operation fits comfortably in CPU cache.
Zig's ReleaseFast build mode eliminates every unnecessary cycle.