AI text cleaner — remove em dashes and hidden characters
Clean AI-written text in your browser — strip invisible characters, replace em dashes and curly quotes, and flag stock chatbot phrases. Nothing is uploaded.
Free · no sign-up · runs in your browser
Paste AI-written text. Cleaned as you type; nothing is uploaded.
Cleaned text
What changed
- Remove invisible characters3
- Replace no-break and narrow spaces2
- Replace em and en dashes4
- Straighten curly quotes6
- Turn … into three dots1
- Total16
Phrases that sound like AI
- delve intotry dig into1
- in today's fast-paced world1
- it's important to note1
- leveragetry use1
- robust1
- seamless1
- tapestry1
- testament1
- utilizetry use1
Reported, not rewritten, apart from the safe swaps when they are on. Whether a word fits is your call.
Cleaned in this page with plain text rules. Nothing is uploaded and no model sees your text; check your network tab.
Text pasted out of a chatbot carries more than its words. It can hold zero-width spaces, no-break spaces and other characters you cannot see, plus the em dashes, curly quotes and stock phrases that make a reader think "a model wrote this" before they finish the first paragraph. Paste the text here and you get it back with the invisible characters gone, the punctuation turned into what a keyboard types, and a list of the phrases worth rewriting by hand. Each rule has its own switch and its own count, so you can see exactly what changed. Everything runs in this tab; your draft is never sent anywhere.
How it works
- 01Paste your text into the box. It is cleaned as you type, and the result appears underneath.
- 02Invisible characters are removed first: zero-width spaces and joiners, word joiners, byte-order marks, soft hyphens, direction marks, Unicode tag characters and stray variation selectors. Joiners inside emoji and inside scripts that need them, such as Persian and Hindi, are kept.
- 03No-break, narrow and thin spaces become ordinary spaces, so the text wraps and searches the way it looks.
- 04Em dashes become a comma or a spaced hyphen, whichever you pick. A dash between two numbers becomes a plain hyphen, so 10–20 stays a range.
- 05Curly quotes and apostrophes become straight ones, and the single-character ellipsis becomes three dots.
- 06Words and phrases that chatbots overuse are listed with a count. Most are only reported, because whether a word fits is a judgement about your sentence. A few have a substitute that is always safe, such as utilize to use, and you can switch those swaps on.
- 07Copy the cleaned text. The summary shows how many changes each rule made.
Use cases
- Removing the em dashes from a ChatGPT draft before it goes into a blog post, an email or a cover letter.
- Stripping hidden characters from AI-generated text that is about to be pasted into a CMS, a spreadsheet or source code, where a zero-width space can break a search or a string comparison.
- Finding out why two strings that look identical do not match: paste one in and see whether the invisible-character count is above zero.
- Getting a quick list of the stock phrases in a draft so you know which sentences to rewrite in your own voice.
- Converting curly quotes and apostrophes to straight ones before pasting text into code, JSON or a terminal.
- Checking a piece of writing someone sent you for hidden characters before you publish it under your name.
Frequently asked questions
How do I remove em dashes from ChatGPT text?
Paste the text above with the dash rule switched on. Each em dash is replaced with a comma by default, which reads naturally in most sentences: "the tool, which is free, works". If you prefer a spaced hyphen, change the style. Dashes between numbers become a plain hyphen, a dash at the start of a line stays as a hyphen so lists and attributions survive, and a dash sitting next to other punctuation is simply dropped so you do not end up with a stray comma.
How do I remove invisible characters from AI-generated text?
Paste it here. The invisible-character rule removes zero-width spaces, zero-width joiners and non-joiners, word joiners, byte-order marks, soft hyphens, bidirectional control marks, Unicode tag characters and variation selectors that are not attached to anything. The summary tells you how many it found. If the count is zero, the text was already clean, which is useful to know on its own.
Does ChatGPT put a hidden watermark in its text?
Hidden characters do turn up in text copied from chatbots, whether as a deliberate marker or as a side effect of how the text was produced and copied. You cannot see them by reading, so the only way to know is to check. This tool removes every character of those kinds no matter where it came from, and tells you how many there were. It cannot detect statistical watermarks built into word choice, because those are not characters at all.
Will this make AI text undetectable by AI detectors?
No, and it is not meant to. Detectors mostly judge word choice, rhythm and structure, which this tool does not rewrite. What it does is remove the mechanical traces: hidden characters, typographic punctuation a person would rarely type, and a list of overused phrases for you to rewrite yourself. The honest way to make a draft sound like you is to edit it, and the phrase list shows you where to start.
Why replace curly quotes with straight quotes?
Straight quotes are what a keyboard types, so they match everything else you write and everything you search for. Curly quotes break code, JSON, shell commands and spreadsheet formulas when pasted into them, and a search for an apostrophe will not find its curly twin. If you are publishing to a site that typesets quotes for you, straight input is also what it expects.
Is my text uploaded anywhere?
No. Every rule is a plain text replacement that runs in this page, and there is no request to a server or to a language model. You can confirm it in your browser's network tab, or by going offline after the page has loaded and using the tool anyway.
Will it break emoji or text in other languages?
It is written not to. The joiners that hold family and profession emoji together are kept, as are the selectors that make a heart render in colour and the tags inside regional flags. Joiners between letters of Arabic-script and Indic languages are kept too, because they change how words are spelled there. Guillemets and the ideographic space used in Chinese and Japanese are left alone. If a rule still does something you do not want, switch it off.
Related reading
- Developer Tools13 Free Developer Tools, No Sign-Up RequiredThirteen free online developer tools that run in your browser with no account and no upload: color, SEO, conversion, and formatting utilities that just work.
More tools
Tailwind CSS color palette generator
Turn one hex code into a full Tailwind color scale — 11 OKLCH-tuned shades from 50 to 950, with contrast ratios, ready to paste into Tailwind v4's @theme block or a v3 config. Free, no sign-up, runs in your browser.
CSS clamp() calculator for fluid typography
Generate a responsive CSS clamp() font size from a minimum and maximum size and the viewport range they should grow across — with the slope and intercept shown, a live preview, and the rendered size at every common screen width. Free, no sign-up.
SVG to JSX converter for React components
Paste an SVG and get a React component back — attributes camelCased, class turned into className, style strings converted to objects, xmlns removed, with optional currentColor, a size prop and TypeScript output. Runs entirely in your browser; nothing is uploaded.
Meta tag generator with Google SERP preview
Fill in a title, description, canonical and Open Graph image and get the complete <head> snippet — with a live Google result preview that measures your title and description in pixels, not characters, so you can see exactly where they will be cut.
Favicon generator — .ico, PNG set and manifest
Turn a PNG or SVG, or just a couple of letters, into the full favicon set: 16, 32, 48, 180, 192 and 512 PNGs, a real multi-size favicon.ico, a web app manifest and the <head> tags. Everything runs in your browser — nothing is uploaded.
JSON-LD schema generator and validator
Build valid JSON-LD structured data for Article, FAQPage, Product, Organization and BreadcrumbList from a form, or paste existing markup to have it pretty-printed and checked for the mistakes that stop a rich result appearing. Free, runs in your browser.
robots.txt generator with validation
Build a robots.txt from user-agent groups, allow and disallow rules, crawl-delay and sitemap URLs — with presets for allowing everything, blocking AI crawlers, or locking down a staging site, and warnings for the mistakes that quietly block your whole site.
UTM link builder and campaign URL generator
Build correctly encoded UTM tracking links from a URL and your source, medium and campaign — with the existing query string and fragment preserved, values properly percent-encoded, and warnings for the capitalisation and spacing that split one campaign across several rows in an analytics report.
Colour contrast checker with WCAG suggestions
Check any two colours against WCAG 2 — normal text, large text and UI components — see the ratio and live samples, and get the nearest passing colour when a pair fails, adjusted in OKLCH so the hue stays yours. Free, runs in your browser.
Image converter — WebP, AVIF, JPEG and PNG
Convert and resize images to WebP, AVIF, JPEG or PNG at the quality you choose, see exactly how many bytes each one saved, and download them one at a time or as a zip. Everything happens in your browser — no image is uploaded.
JSON formatter and validator — free, in your browser
Format, minify and validate JSON in your browser. Broken documents get the exact line and column of the error. Nothing is uploaded, and there is no size limit but your machine.
JSON to TypeScript — generate interfaces from a payload
Paste a JSON payload and get TypeScript interfaces: merged array shapes, optional properties, and real unions instead of any. Runs in your browser — nothing is uploaded.
OG image generator — free 1200×630 social cards
Generate an Open Graph image for any page: type a title, pick a theme, download a 1200×630 PNG. Runs entirely in your browser — no account, no upload, no watermark.
Remove EXIF data from photos — image metadata remover
Strip EXIF, GPS location and other hidden metadata from JPEG, PNG and WebP images without re-encoding — see what each file carries first. Nothing is uploaded.
App icon generator — iOS, Android and Expo icon sizes in one zip
Turn one 1024px image into every iOS, Android and Expo app icon — an Xcode appiconset, mipmap launcher PNGs and an adaptive icon, zipped in your browser.
Privacy policy generator for apps, with terms of use
Generate a privacy policy and terms of use for your app in Markdown — tick what it collects, from analytics and ads to AI, plus GDPR, CCPA and COPPA sections.