Baseline (Normal Text)

Normal text with no copy protection. Can be selected, copied, and pasted freely.

You can select this and copy or cut it. Normal text stuff.


Block Copy/Cut Events

Uses oncopy="return false" oncut="return false" to block clipboard operations.

You can select, but CANNOT copy or cut this text!

This also works for nested elements, and even more nested elements.

Links still work and so do .

✅ easy for us to add because there's no dynamic re-writing of question text

✅ will confuse/frustrate non-tech-savvy users

❌ Users can bypass by selecting text, opening the context menu (right click) and using "Search for...", which gets the results they seek. They can also freely copy the text from the search page.

❌ Cut/copy is also disabled for input elements inside the container


Block Context Menu

Uses oncontextmenu="return false" to prevent right-click/long-tap menu.

You can select this text, but cannot open the context menu to copy it.

❌ Keyboard shortcuts (Ctrl+C) still work

❌ Keyboard menu key may still open context menu

Not supported on iOS Safari

❌ Breaks context menu on inputs too


Tiny Font Poison

Injects hidden text using font-size: 0.01px. Text is copied but invisible.

This text can be copied, but has hidden content.

Variant: random tiny chars injected between letters (like unicode poison, but using CSS)

✅ Poisons "search for..." in context menu

✅ Hidden text appears when pasted

❌ Hidden text is visible when pasted, so we're just adding friction where the user must edit the text before searching.

❌ poison is not present when inspecting the DOM or scraping the page

Try: select text above, paste below to see the hidden characters

Poison your own text


CSS user-select: none

Uses user-select: none CSS property to prevent text selection entirely.

This text cannot be selected in any browser (uses both prefixed and unprefixed).

Links still work and so do .

✅ Completely prevents selection

✅ Links and buttons remain functional

✅ Simple to implement with minimal testing overhead

❌ Text can still be extracted via browser dev tools or DOM scraping

Note: -webkit-user-select: none is needed for Safari. Without it, Safari can still select:

Safari can select this (missing -webkit- prefix), other browsers cannot.


Zero-Width Space Poison

Text can be selected and copied, but contains invisible zero-width spaces that "poison" the copy.

✅ Text looks normal and can be selected/copied

✅ Copied text contains invisible U+200B chars that causes both web searches and the "did you mean" suggestions to be very unhelpful.

✅ May confuse some AI tokenizers or text processing tools, but this is an ever-changing arms race.

✅ Apparently no impact on a11y

✅ also affects the browser devtools and DOM scraping: the copied text will include the poison.

ℹ️ You've gotta break up words to be effective. Targeting spaces between words is not enough.

❌ requires us to dynamically re-write question text to inject the poison. Not hard to do and won't affect page load times, but requires us testing all question types.

Try: select text above, paste below, then click Check to see the hidden characters

Example: this Google search that appears verbatim on the Wikipedia Capybara page, but has poison chars so searching doesn't find that page, or anything useful.

Poison your own text


Unicode Tag Poison

Injects invisible words using Unicode Tag characters (U+E0000 range). These are invisible but get copied, polluting search results with unrelated terms.

✅ Text looks completely normal

✅ Random invisible characters (letters, numbers, symbols as tag chars) inserted between every character pair

✅ Heavily breaks word matching - "ball" becomes "b[?]a[?]l[?]l" with 3 random hidden chars

✅ Invisible in paste preview - user won't know why their search is polluted

ℹ️ You've gotta break up words to be effective. Targeting spaces between words is not enough.

❌ Some platforms may strip or normalize these characters

Try: select text above, paste below, then click Check to see the hidden tag characters

Example: this Google search that appears verbatim on the Wikipedia Capybara page, but has poison chars so searching doesn't find that page, or anything useful.

Poison your own text

Suggested use: copy some text (a sentence or heading) from a website, paste it here, poison it, copy the poisoned text and paste it in your search engine.

Expected: the search results are garbage and the "did you mean" suggestions are not helpful.


All Together

Combines user-select: none, tiny font poison, and unicode tag poison. Each character pair gets both an invisible unicode tag char AND a visible tiny font char.

(uncheck to simulate bypassing selection protection)

✅ Text cannot be selected (user-select: none)

✅ If selection is bypassed, copied text contains both invisible unicode tags AND visible junk chars

✅ Double poison means even stripping one type leaves the other

❌ Requires CSS + dynamic text rewriting

Selection is disabled above. To test the poison, use the tool below:

Poison your own text