# Never Block Paste

**NEVER** · **ID:** `forms-ibelick-no-paste-blocking` · **Category:** forms
**Source:** [@Ibelick](https://www.ui-skills.com/)
**Interactive version:** https://ui-guides-agent-rules.netlify.app/principles/forms-ibelick-no-paste-blocking

> NEVER: Block paste in input or textarea elements. Users paste from password managers, notes, and other sources. Blocking paste creates friction and security issues.

Never prevent users from pasting into form fields - it breaks password managers and accessibility

From the Interaction constraints in ibelick's baseline-ui skill. Blocking paste breaks password managers (which is how strong, unique passwords get used at all), blocks users with motor disabilities who rely on assistive input, and forces people to retype sensitive data by hand — where they make errors and pick weaker values.

## Bad — do not do this

`forms-ibelick-no-paste-blocking-bad`

```tsx
export function IbelickNoPasteBlockingBad() {
  return (
    <div className="space-y-4">
      <form className="space-y-4">
        <div>
          <label className="text-sm font-medium">Email</label>
          <input
            type="email"
            className="w-full mt-1 px-3 py-2 border rounded-lg"
            placeholder="you@example.com"
          />
        </div>

        <div>
          <label className="text-sm font-medium">Confirm Email</label>
          <input
            type="email"
            className="w-full mt-1 px-3 py-2 border rounded-lg"
            placeholder="you@example.com"
            onPaste={(e) => {
              e.preventDefault();
              // Blocking paste!
            }}
          />
          <p className="text-xs text-muted-foreground mt-1">Please type your email again</p>
        </div>

        <div>
          <label className="text-sm font-medium">Password</label>
          <input
            type="password"
            className="w-full mt-1 px-3 py-2 border rounded-lg"
            placeholder="••••••••"
            onPaste={(e) => {
              e.preventDefault();
              // Blocking paste!
            }}
          />
        </div>
      </form>
      <p className="text-xs text-destructive">
        Blocking paste breaks password managers and frustrates users
      </p>
    </div>
  );
}
```

## Good — do this

`forms-ibelick-no-paste-blocking-good`

```tsx
export function IbelickNoPasteBlockingGood() {
  return (
    <div className="space-y-4">
      <form className="space-y-4">
        <div>
          <label className="text-sm font-medium">Email</label>
          <input
            type="email"
            className="w-full mt-1 px-3 py-2 border rounded-lg"
            placeholder="you@example.com"
            autoComplete="email"
          />
        </div>

        <div>
          <label className="text-sm font-medium">Password</label>
          <input
            type="password"
            className="w-full mt-1 px-3 py-2 border rounded-lg"
            placeholder="••••••••"
            autoComplete="new-password"
          />
          <p className="text-xs text-muted-foreground mt-1">
            Paste from password manager supported
          </p>
        </div>
      </form>
      <p className="text-xs text-success">
        Paste allowed everywhere - works with password managers and accessibility tools
      </p>
    </div>
  );
}
```

## References

- [baseline-ui (skill source)](https://github.com/ibelick/ui-skills/blob/main/skills/baseline-ui/SKILL.md)
- [Why Paste Blocking Hurts Security](https://www.troyhunt.com/the-cobra-effect-that-is-disabling/)
