0
Unblocked
0
Blocked
15
Total Tests
How to use this page:
  1. Try each test without Copy Freedom — you should see the protections working (red "Blocked").
  2. Enable Copy Freedom by clicking the extension icon on this page.
  3. Try again — all tests should turn green ("Unblocked").
1 Inline oncopy="return false" Common

The simplest and most widespread method. The HTML element has an inline oncopy attribute that prevents copying.

The quick brown fox jumps over the lazy dog. Try to select and copy this text (Ctrl+C).
Try: Select text → Ctrl+C → Paste somewhere
<p oncopy="return false">...</p>
2 Inline onpaste="return false" Common

Blocks pasting into input fields. Commonly used on password confirmation fields and banking sites.

Try: Copy some text → Click input → Ctrl+V
<input onpaste="return false" />
3 Inline oncontextmenu="return false" Common

Prevents the right-click context menu from appearing. Often used by image galleries and news sites.

Right-click on this text to open the context menu. The protection should block it.
Try: Right-click on the text above
<div oncontextmenu="return false">...</div>
4 Inline onselectstart="return false" Common

Prevents text from being selected at all. Without selection, copying is impossible.

Try to select this text by clicking and dragging. The protection prevents any selection.
Try: Click and drag to select text
<p onselectstart="return false">...</p>
5 CSS user-select: none Common

Pure CSS approach that disables text selection. Used by recipe sites, news paywalls, and academic papers.

This text cannot be selected using CSS user-select: none. Try to highlight it.
Try: Click and drag to select text
p { user-select: none; -webkit-user-select: none; }
6 addEventListener copy / paste with preventDefault Common

JavaScript event listeners that intercept copy and paste events and cancel them. More sophisticated than inline handlers.

This text is protected by addEventListener. Try to select and copy it.
Try: Select text → Ctrl+C, then Ctrl+V into the input
el.addEventListener('copy', e => e.preventDefault()); el.addEventListener('paste', e => e.preventDefault());
7 document-level contextmenu block Common

Context menu is blocked at the document level, affecting the entire page. A common pattern on photography and lyrics sites.

Right-click anywhere in this box. The handler is on a parent container, not this element.
Try: Right-click anywhere in the gray area
document.addEventListener('contextmenu', e => e.preventDefault());
8 Keyboard shortcut interception (Ctrl+C / Ctrl+V / Ctrl+A) Moderate

Intercepts keydown events for Ctrl+C, Ctrl+V, and Ctrl+A to block clipboard shortcuts regardless of other protections.

Try using Ctrl+A to select all, Ctrl+C to copy, or Ctrl+V to paste. Keyboard shortcuts are intercepted.
Try: Ctrl+A, Ctrl+C, Ctrl+V
document.addEventListener('keydown', e => { if (e.ctrlKey && ['c','v','a','x'].includes(e.key)) e.preventDefault(); });
9 ClipboardData content replacement Moderate

Allows copying but silently replaces clipboard content with different text (e.g., attribution, ads, or garbage).

Copy this sentence. If the protection is working, your clipboard will contain "BLOCKED: This content is protected" instead of the actual text.
Try: Select text → Ctrl+C → Paste into the input above
el.addEventListener('copy', e => { e.preventDefault(); e.clipboardData.setData('text/plain', 'BLOCKED: This content is protected'); });
10 getSelection().removeAllRanges() on mouseup Moderate

Allows you to start selecting text, but immediately clears the selection when you release the mouse button.

Try to select this text. Your selection will be cleared the moment you release the mouse button.
Try: Click and drag to select, then release the mouse
el.addEventListener('mouseup', () => { window.getSelection().removeAllRanges(); });
11 CSS ::selection { background: transparent } Moderate

Text can technically be selected, but the selection highlight is invisible, tricking users into thinking selection is disabled.

This text CAN be selected and copied, but you can't SEE the selection highlight. Try selecting it anyway.
Try: Click and drag — selection works but is invisible
::selection { background: transparent; color: inherit; }
12 Transparent overlay <div> Moderate

An invisible div sits on top of the content, intercepting all mouse events. You can see the text but can't interact with it.

This text has an invisible overlay blocking all mouse interaction. Try to select it.
Try: Click and drag to select the text above
<div style="position:absolute; top:0; left:0; width:100%; height:100%; z-index:999; background:rgba(0,0,0,0)"></div>
13 CSS pointer-events: none Moderate

All mouse interactions (click, hover, drag, select) are completely disabled on the element via CSS.

This text has pointer-events: none. Mouse clicks and drags pass through it entirely.
Try: Click and drag to select text
p { pointer-events: none; }
14 Inline ondragstart="return false" Common

Prevents drag-and-drop of text and images. Used on image-heavy sites to prevent saving images via drag.

Try to drag and drop this text to another application or text field.
Try: Select text → Drag it to another window/tab
<p ondragstart="return false">...</p>
15 MutationObserver re-application Advanced

A MutationObserver watches for attribute changes and immediately re-applies oncopy and user-select: none if they are removed. This defeats naive unblock scripts.

This text is guarded by a MutationObserver. Removing oncopy or user-select will be instantly reverted.
Try: Select and copy this text
new MutationObserver(mutations => { for (const m of mutations) { if (!el.hasAttribute('oncopy')) el.setAttribute('oncopy', 'return false'); el.style.userSelect = 'none'; } }).observe(el, { attributes: true });

Ready to unblock everything?

Copy Freedom defeats all 15 techniques above — safely, with no malware or tracking.

Add to Chrome — It's Free