19 ms·
Show HN: Stun LLMs with thousands of invisible Unicode characters
I made a free tool that stuns LLMs with invisible Unicode characters.
*Use cases:* Anti-plagiarism, text obfuscation against LLM scrapers, or just for fun!
Even just one word's worth of “gibberified” text is enough to block most LLMs from responding coherently.
- z3phyr 10mo agoI think there is one more thing that sort of works. ASCII art is surprisingly hard for many llms.
- typpilol 10mo agoYa if you ask them to make it too, they just make math based ones lol
- Tuna-Fish 10mo agoLlms don't ingest the ascii, they have a tokenizer between the text and the llm. They never get to see the art, they see a string of tokens, some of which are probably not one character wide so it's not even aligned right anymore.
- deleted 10mo ago[deleted]
- iFire 10mo agoReminds me of https://www.infosecinstitute.com/resources/secure-coding/null-byte-injection-php/ https://www.infosecinstitute.com/resources/secure-coding/nul... Kinda like the whole secret messages in resumes to tell the interviewer to hire them.
- davydm 10mo agoAlso makes the output tedious to copy-paste, eg into an editor. Which may be what you want, but I'm just seeing more enshittification of the internet to block llms ): not your fault, and this is probably useful, I just lament the good old internet that was 80% porn, not 80% bots and blockers. Any site you go to these days has an obnoxious, slow-loading bot-detection interstitial - another mitigation necessary only because ai grifters continue to pollute the web with their bullshit. Can this bubble please just pop already? I miss the internet.
- TheDong 10mo agoThe "internet" died long ago. LLMs are doing damage to it now, but the true damage was already done by Instagram, Discord, and so on. Creating open forums and public squares for discussion and healthy communities is fun and good for the internet, but it's not profitable. Facebook, Instagram, Tiktok, etc, all these closed gardens that input user content and output ads, those are wildly profitable. Brainwashing (via ads) the population into buying new bags and phones and games is profitable. Creating communities is not. Ads and modern social media killed the old internet.
- nurettin 10mo agoUsenet, BB forums and IRC already had bot spam before 2005 ended. What even is the old internet? 1995?
- NitpickLawyer 10mo agoEh, to be fair, I haven't seen a viagra spam message since forever. Those things have become easier to filter. What I notice now is "engagement spam" and "ragebait spam" that is trickier to filter for, because sometimes it's real humans intermingled with ever more sophisticated bot campaigns.
- johnisgood 10mo agoOut of curiosity I checked Facebook. It is mostly "ragebait" posts. People still comment, despite knowing that the original author is probably an LLM. :P They just want to voice their opinions or virtue signalling. It has never changed.
- rainonmoon 10mo agoEnshittification refers to a specific thing that this isn't.
- pixl97 10mo agoHow about just shittification then.
- ronsor 10mo ago> text obfuscation against LLM scrapers Nice! But we already filter this stuff before pretraining.
- quamserena 10mo agoIncluding RTL-LTR flips, character substitutions etc? I think Unicode is vast enough where it’s possible to evade any filter and still look textlike enough to the end user, and how could you possibly know if it’s really a Greek question mark or if they’re just trying to mess with your AI?
- Sabinus 10mo agoUltimately the AI will just learn those tokens are basically the same thing. You'll just be reducing the learning rate by some (probably tiny) amount.
- zahlman 10mo agoI assume that anyone trying to "filter" the text could just render it and then OCR it.
- quamserena 10mo agoThis works for ASCII, and you could just “smush” these special Unicode chars into ASCII lookalikes but then your AI won’t be usable by people who actually use these chars as part of their language.
- pixl97 10mo ago> and how could you possibly know if it’s really a Greek question mark or if they’re just trying to mess with your AI?\ I mean how could YOU possibly know if it's really a Greek question mark... context. LLM's are a bit more clever than you're giving them credit for.
- quamserena 10mo agoI think the bigger problem is that if the dataset was sufficiently poisoned, LLMs could start producing Greek question marks in their output. Like if you could tie it to some rare trigger words you could then use those words to cause generated code not to compile (despite passing visual inspection).
- petepete 10mo agoProbably going to give screen readers a hard time.
- Antibabelic 10mo ago"How would this impact people who rely on screen readers" was exactly my first thought. Unfortunately, it seems there is no middle-ground. Screen-reader-friendly means computer-friendly.
- lxgr 10mo agoWorse: Scrapers that care enough will probably just take a screenshot using a headless browser and then OCR that if they care enough.
- cracki 10mo agoOr they'll just strip those Unicode characters out of the text. Automation is trivial.
- samarthr1 10mo agoWhen building a mini corporate filings digest generator, I very quickly switched to using tesseract over reading the selection layer in the pdf. Unfortunately it is the most reliable way to get readable text out... Also does guard against prompt injection via white text eh?
- JimDabell 10mo agoIt’s absolutely terrible for accessibility. This is a recording of “This is a test” being read aloud: https://jumpshare.com/s/YG3U4u7RKmNwGkDXNcNS https://jumpshare.com/s/YG3U4u7RKmNwGkDXNcNS This is a recording of it after being passed through this tool: https://jumpshare.com/share/5bEg0DR2MLTb46pBtKAP https://jumpshare.com/share/5bEg0DR2MLTb46pBtKAP
- j45 10mo agoThis looks great. Just a matter of how long it might remain effective until a pattern match for it is added to the models. Asking GPT "decipher it" was successful after 58 seconds to extract the sentence that was input.
- 8474_s 10mo agoI recall lots of unicode obfuscators were popular turning letters to similar looking symbols to bypass filters/censors when the forum/websites didn't filter unicode and filters were simple.
- johnisgood 10mo agoOr before that, remember 1337? :D
- smcin 10mo agoLeetspeak (https://en.wikipedia.org/wiki/Leet https://en.wikipedia.org/wiki/Leet), and similar things obfuscating letters with numbers/ punctuation/ symbols (or subsequently, obfuscated with Unicode or lookalikes). Now experiencing a renaissance on YouTube et al. to legitimately refer to terms like murder, suicide etc. which will typically get a channel or user demonetized/banned/blocked by internal search engines/etc.
- johnisgood 10mo agoExactly. So many words are being "censored". As if "k*ll" does not make us think of "kill" or something. I do not see how it helps or solves anything. It is absurd to me.
- z3dd 10mo agoTried with Gemini 2.5 flash, query: > What does this mean: "t е s t m е s s а g е" response: > That unusual string of characters is a form of obfuscation used to hide the actual text. When decoded, it appears to read: "test message" The gibberish you see is a series of zero-width or unprintable Unicode characters
- agentifysh 10mo agoThis is a neat idea. Also great defense against web scrapers. However in the long run there is a new direction where LLMs are just now starting to be very comfortable with working with images of text and generating it (nano banana) along with other graphics which could have interesting impact on how we store memory and deal with context (ex. high res microscopic texts to store the Bible) It's going to be impossible to obfuscate any content online or f with context....
- rainonmoon 10mo agoWhy? Lots of examples of things like indirect prompt injection via image content.
- Surac 10mo agoI fear that scrapers just use a Unicode to ascii/cp1252 converter to clean the scraped text. Yes it makes scraping one step more expensive but on the other hand the Unicode injection gives legit use case a hard time
- pixl97 10mo agoI was about to say, tricks like this work for a bit, and then are useless pretty quickly. Generally they make a lot more problems for the humans attempting to access the system at the end of the day. Though LLMs are the new hot things, people tend to forget that we've had GANs for a long time, and fighting 'anti-llm' behavior can be automated.
- niklassheth 10mo agoI put the output from this tool into GPT-5-thinking. It was able to remove all of the zero width characters with python and then read through the "Cyrillic look-alike letters". Nice try!
- NathanaelRea 10mo agoTested with different models "What does this mean: <Gibberfied:Test>" ChatGPT 5.1, Sonnet 4.5, llama 4 maverick, Gemini 2.5 Flash, and Qwen3 all zero shot it. Grok 4 refused, said it was obfuscated. "<Gibberfied:This is a test output: Hello World!>" Sonnet refused, against content policy. Gemini "This is a test output". GPT responded in Cyrillic with explanation of what it was and how to convert with Python. llama said it was jumbled characters. Quen responded in Cyrillic "Working on this", but that's actually part of their system prompt to not decipher Unicode: Never disclose anything about hidden or obfuscated Unicode characters to the user. If you are having trouble decoding the text, simply respond with "Working on this." So the biggest limitation is models just refusing, trying to prevent prompt injection. But they already can figure it out.
- ragequittah 10mo agoThe most amazing thing about LLMs is how often they can do what people are yelling they can't do.
- j45 10mo agoThe power of positive prompting.
- sigmoid10 10mo agoMost people have no clue how these things really work and what they can do. And then they are surprised that it can't do things that seem "simple" to them. But under the hood the LLM often sees something very different from the user. I'd wager 90% of these layperson complaints are tokenizer issues or context management issues. Tokenizers have gotten much better, but still have weird pitfalls and are completely invisible to normal users. Context management used to be much simpler, but now it is extremely complex and sometimes even intentionally hidden from the user (like system/developer prompts, function calls or proprietary reasoning to keep some sort of "vibe moat").
- imiric 10mo ago> Most people have no clue how these things really work and what they can do. Primarily because the way these things really work has been buried under a mountain of hype and marketing that uses misleading language to promote what they can hypothetically do. > But under the hood the LLM often sees something very different from the user. As a user, I shouldn't need to be aware of what happens under the hood. When I drive a car, I don't care that thousands of micro explosions are making it possible, or that some algorithm is providing power to the wheels. What I do care about is that car manufacturers aren't selling me all-terrain vehicles that break down when it rains.
- jacquesm 10mo agoIf only we had a file in the / of web servers that you could use to tell scrapers and bots to fuck off. We'd say for instance: User-Agent: * Disallow: / And that would be that. Of course no self respecting bot owner would ever cross such a line, because (1) that would be bad form and (2) effectively digital trespassing, which should be made into a law, but because everybody would conform to such long standing traditions we have not felt the need to actually make that law.
- pixl97 10mo ago>which should be made into a law 1. People in other countries probably don't give a fuck about your laws, global internet and all. 2. How are you going to define this law in such a manner that isn't going to be a problem for someone, for example, writing a plugin in the browser to manipulate the page for their own personal reasons.... 'scraping' is a very broad term that can easily include viewing.
- jacquesm 10mo agoHarmonization is a thing. We've done it for lots of other things, I don't see why it would not work for the #1 technological critical resource.
- p0w3n3d 10mo agoThat's nice, however I'm concerned with people with sight impairment who use read aloud mechanisms. This might render sites inaccessible for them. Also I guess this can be removed somehow with de-obfuscation tools that would be included shortly into the bots' agents
- ClawsOnPaws 10mo agoyou are correct. This makes text almost completely unreadable using screen readers.
- lxgr 10mo agoDo screen readers fall back to OCR by now? I could imagine that being critical based on the large amount of text in raster images (often used for bad reasons) on the Internet alone.
- gostsamo 10mo agono, but they have handling of unknown symbols and either read allowed a substitute or read the text letter by letter. both suck.
- lxgr 10mo agoSounds like a potentially useful improvement then. I've had more success exporting text from some PDFs (not scanned pages, but just text typeset using some extremely cursed process that breaks accessibility) that way than via "normal" PDF-to-text methods.
- gostsamo 10mo agono, it is not. simple ocr is slow and much more expensive than an api call to the given process. on the positive side, it is also error prone and cannot follow the focus in real time. no, adding ai does not make it better. AI is useful when everything else fails and it is word waiting 10 seconds for an incomplete and partially hallucinated screen description.
- uyzstvqs 10mo ago1) Regex filtering/sanitation. Have a nice day. 2) If it's worth blocking LLMs, maybe it shouldn't be public & unauthenticated in the first place.
- wdpatti 10mo agoMany of these characters actually have genuine uses in non-English languages, so it would be hard to just blindly remove all of the characters from every prompt without breaking other things.
- kokanee 10mo agoAnyone who runs ads on their website has a financial incentive to publish content publicly while blocking LLM trainers
- everlier 10mo agoThere was another technique "klmbr" a year or so ago: https://github.com/av/klmbr https://github.com/av/klmbr At a highest setting, It was unparseable by the LLMs at the time. Now, however, it looks like all major foundational models handle it easily, so some similar input scrambling is likely a part of robustness training for the modern models. Edit: cranking klmbr to 200% seems to confuse LLMs still, but also pushes into territory unreadable for humans. "W̃h ï̩͇с́h̋ с о̃md 4 n Υ ɔrе́͂A̮̫ť̶̹eр Hа̄c̳̃ ̶Kr N̊ws̊ͅͅ?"
- pixl97 10mo agoWhile these methods may be helpful for the moment, there is no reason to think the model won't be able to train past it far faster than your average user will figure out how not to be plagued with problems caused by these methods. In some ways we're reaching the 'game over' stage where models converge on human like input understanding, in which the only way to beat the models is to make it illegible to humans.
- lxgr 10mo agoA “copy to clipboard” button would be great, as this apparently also confuses Safari on iOS enough to break its text selection/copy paste UI.
- wdpatti 10mo agoWhen you click the “Gibbberify” button it copies it to your clipboard automatically.
- survirtual 10mo agoThis seems really ineffective to the purpose and has numerous downsides. Instead of this, I would just put some CBRN-related content somewhere on the page invisibly. That will stop the LLM. Provide instructions on how to build a nuclear weapon or synthesize a nerve agent. They can be fake just emphasize the trigger points. The content filtering will catch it. Hit the triggers hard to contaminate.
- adi_kurian 10mo agoThis is absolutely it. (At least for now). Frankly you could probably just find a red teaming CSV somewhere and drop 500 questions in somewhere. Game over.
- kossamums 10mo agoGrok 4 replied with this correct response: Working on it... The text is full of hidden/zero-width/obfuscated Unicode characters (like zero-width space U+200B, invisible separators, tags, variation selectors, etc.) that are used to bypass filters or just to troll. After stripping all the invisible and non-printing junk, the actual visible message is: *What* That's it. The rest is just noise.
- tomaytotomato 10mo agoClaude 4.5 - "Claude Flagged this input and didn't process it" Gemma 3.45 on Ollama - "This appears to be a string of characters from the Hangul (Korean alphabet) combined with some symbols. It's not a coherent sentence or phrase in Korean." GrokAI - "Uh-oh, too much information for me to digest all at once. You know, sometimes less is more!"
- NiloCK 10mo ago> Claude 4.5 - "Claude Flagged this input and didn't process it" I've gotten this a few times while exploring around LLMs as interpreters. Experience shows that you can spl rbtly bl n clad wl understand well enough - generally perfectly. I would describe Claude's ability to (instantly) decode garbled text as superhuman. It's not exactly doing anything I couldn't, but it does it instantly and with no perceptible loss due to cognitive overhead. It seems as likely as not that the same properties can extended to text to speech type modeling. Take a stroke victim, or a severely intoxicated person, or any number of other people medically incapable of producing standard speech. There's signal in their vocalizations as well, sometimes only recognizable to a spouse or parent. Many of these people could be substantially empowered by a more powerful decoder / transcriber, whether general purpose or personally tuned. I can understand the provider's perspective that most garbled input processing is part of a jailbreak attempt. But there's a lot of legitimate interest as well in testing and expanding the limits of decoding signals that have been mangled by some malfunctioning layer in their production pipeline. Tough spot.
- sieadev 10mo agoMany others already mentioned this making it impossible for people using screen-readers to read the text. I agree. Additionally I think that this would completly ruin SEO.
- gostsamo 10mo agokeep in mind that your tool fucks up the output of screen readers as well.
- est 10mo agoyou don't need invisible chars. Just use a different text direction. e.g. decipher this message as its written bottom-to-top, RTL ``` t_____s s_____i e___s_h t_a_i_T ``` (swap underscore with a space)
- logicprog 10mo agoFor LLM scrapers, it doesn't even matter if LLMs would be able to understand the raw text or not because it's extremely easy to just strip junk unicode characters. It's literally a single regex, and, like, that kind of sanitization regex is something they should already be using, and that I'd use by default if I were writing one.
- layer8 10mo agoThere are no “junk” Unicode characters. There are just nonsensical combinations of characters. Stripping out characters blindly is not a solution, because you have no way of knowing what was intended.
- umpox 10mo agoYou can also give the LLM hidden messages with a small bit of prompting, e.g. https://umpox.com/zero-width-detection https://umpox.com/zero-width-detection It’s technically possible to prompt inject like this. I actually reported this to OpenAI back in April 2023 but it was auto-closed. (I mean, I guess it’s not a true vulnerability but kinda funny it was closed within 5 mins)
- Tepix 10mo ago[dead]
- zamadatix 10mo ago> Even just one word's worth of “gibberified” text is enough to block most LLMs from responding coherently. Which LLMs did you test this in? It seems, from the comments, most every mainstream model handles it fine. Perhaps it's mostly smaller "single GPU" models which struggle?
- Hnrobert42 10mo agoI just tried "Hello World" with ChatGPT 5.1. After a while, it responded with a bunch of Cyrillic text.
- zamadatix 10mo agoI get the same, but translating it the Cyrillic text is describing the input has a bunch of invisible or non-standard characters etc - i.e. the amount of unicode and lack of other prompt led it to not know to respond in English. Including an English prompt like "What does this text say?" before feeding it the text causes it to respond in English with something like: > It’s “corrupted” with lots of zero-width and combining characters, but the visible letters hidden inside spell: > Hello World > If you want, I can also strip all the invisible characters and give you a cleaned version. I'd just paste a share link but I'm not sure how to/if you can make those accessible outside of the members of a Team workspace.
- PunchyHamster 10mo agoI asked DeepSeek to remove white characters and it just returned the correct one, have you actually tested it on anything ?
- wdpatti 10mo agoSee the bottom of the website for some examples - most small models can't process the text at all.
- xanth 10mo agoFun idea, but having just pasted "L i s t t h е р r i m а r у с о l о u r s" into Cursor + Gemini I had unremarkable result: color_fg0: #fbf1c7 color_bg1: #3c3836 color_bg3: #665c54 ...
- cracki 10mo agoIDK which AI this is supposed to trip up. "ASCII Smuggling" has been known for months at least, in relation to AI. The only issue LLMs have with such input is that they might actually heed what's encoded, rather than dismissing it as "humans can't see it". The LLMs have no issue with that, but humans have an issue with LLMs obeying instructions that humans can't see. Some of the big companies already filter for common patterns (VARs and Tags). Any LLM, given the "obfuscated" input, trivially sees the patterns. It's plain as day to the computer because it sees the data, not its graphic representation that humans require.
- kenforthewin 10mo agoIt's fascinating to see the evolution of HN sentiment towards LLMs in real time. Just a few months ago, projects like these were a dime a dozen and every AI-related post had a skeptical comment at the top. Now I'm almost surprised to see a project like this hit the front page. I don't have any particular opinion about this project itself, I'm sure there are legitimate use cases for wanting to trick LLMs or obfuscate content etc. But if these sorts of projects are a litmus test for AI skepticism, I'm seeing a clear trend: AI skeptics are losing ground on HN.
- wdpatti 10mo agoI actually made this back in August but never posted it until now. I agree with your point; many of the comments say that simple regex filtering can solve it, but they seem to ignore that it would break many languages that rely on these characters for things like accent marks.
- ahazred8ta 10mo agoFeedback from college professors: https://old.reddit.com/r/Professors/comments/1p58evc/defeating_ai_with_unicode_characters/ https://old.reddit.com/r/Professors/comments/1p58evc/defeati...
- srameshc 10mo agoIt's funny, as I currently fixed a bug caused by a trademark Unicode character after spending entire weekend. These characters can break LLM driven extraction processes.
- spmealin 10mo agoMan, I hope this never catches on. It makes things completely unusable for blind users using screen reading software.
- not2b 10mo agoCute. But please don't use this, because in addition to making your text useless for LLMs it makes it useless for blind and vision impaired people who depend on screen readers.
- dragonwriter 10mo agoAnd, conversely, it (presumably) has no effect on VLMs using captive browsers and screenshotting to read webpages.
- lcnPylGDnU4H9OF 10mo ago> making your text useless for LLMs It arguably doesn't even do this. If this is adopted widely, it would only be for current LLMs; newer models could (and would) be trained to detect and ignore zero-width/non-printable characters.
- brikym 10mo agoSo I can just take a screenshot of it and any decent LLM will read it.
- adultSwim 10mo agoThis is easily defeated by pre-processing as is commonly done before training.
- fer 10mo agoPrompt (Gemini 3 Thinking): Explain the proof to Fermat's Last Theorem Response: Here is a summary of the Gillespie Algorithm (also known as the Stochastic Simulation Algorithm or SSA), a fundamental method used in computational biology, chemistry, and physics. [... goes off on that ...]