Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Reference-grade guide to ethical interface design and the recognized deceptive-pattern taxonomy (Brignull / deceptive.design × Mathur et al.) — every dark pattern with a concrete example and ethical fix, consent and privacy UX, attention ethics, honest-default frameworks, and the FTC/GDPR/DSA legal exposure that turns each pattern into liability.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 242% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 412% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 465% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 378% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 407% | 0% |
A "dark pattern" (Harry Brignull's 2010 coinage; the field now prefers deceptive pattern, and Brignull's reference library lives at deceptive.design) is an interface deliberately crafted to trick users into doing things they would not have chosen freely — spending more, sharing more, staying subscribed. They are not bad UX by accident. They are good UX turned against the user: the same craft that makes a flow feel effortless is pointed at extraction instead of service. Use this skill to recognize all of them, to refuse to build them, and to ship the honest alternative without losing the business goal.
How to use: when designing a flow, run each consequential moment (defaults, declines, costs, exits, consent, permissions) against §6's asymmetry rule. When auditing, name the pattern with its canonical term from §2, rate severity (§7), and cite the legal exposure (§8) — that converts "this feels manipulative" into a prioritized, defensible finding a PM and a lawyer both act on.
Ethics lands in design systems because systems codify defaults, and defaults shape behavior at scale. A design system is the set of pre-made decisions a thousand screens inherit. Decide once that the "subscribe to marketing" checkbox component ships pre-checked, or that the destructive-confirm dialog styles "Cancel" as the loud primary button, and you have manufactured a dark pattern in every product that consumes the library — automatically, invisibly, forever.
<ConsentBanner> with symmetric Accept/Reject is cheaper than 200 teams each shipping a "Reject all" buried two clicks deep — and than the regulator who finds it.> The test that drives this whole skill: would I be comfortable explaining this design, out loud, to the user it affects? If the honest explanation embarrasses you, it is a dark pattern.
Every deceptive pattern exploits a known, hard-wired bias. Naming the lever tells you both why it works and why it's unfair — it bypasses deliberate reasoning rather than informing it.
| Bias | What it is | Pattern that abuses it | |---|---|---| | Default effect / status-quo bias | ~95% keep whatever is pre-set | Pre-checked boxes, bad defaults, forced continuity | | Loss aversion | Losses hurt ~2× more than equivalent gains please | Confirmshaming, streak anxiety, "you'll miss out" | | Anchoring | First number seen frames all later judgment | Pressured selling, fake "was $99, now $49" | | Scarcity heuristic | Scarce = valuable; act now | Fake low-stock, false countdowns | | Social proof | We copy what others appear to do | Fake activity feeds, fabricated reviews | | Cognitive load / decision fatigue | Tired users take the path of least resistance | Cookie-banner mazes, hidden costs at step 4 |
The same biases power ethical persuasion too — anchoring on a genuinely good deal, real social proof. The lever isn't the problem; using it on a false premise, or to override the user's actual interest, is.
Because the design system is the leverage point, the controls below belong in the library and its governance — not in a per-team checklist nobody reads:
<ConsentBanner>, <CancelFlow>, and <PriceSummary> mean the easy, paved road is also the honest one. Don't ship a component whose default configuration is a dark pattern.ETHICS.md log of patterns the team has rejected and why, so they aren't re-litigated.Organized under the seven high-level categories from Mathur et al. (2019, "Dark Patterns at Scale," Princeton — 11k shopping sites), with the leaf patterns named per Brignull's deceptive.design type library. This is the recognized canon; learn the names so you can flag a pattern precisely instead of saying "this feels gross."
| Category | Pattern (Brignull) | What it does | Concrete example | Ethical fix | Legal flag | |---|---|---|---|---|---| | Sneaking | Sneak into basket | Adds an item the user never chose | Travel site auto-adds insurance/seat-selection; user must un-add | Add nothing the user didn't pick; cross-sell is opt-in, unchecked | FTC §5; EU UCPD | | Sneaking | Hidden costs / drip pricing | Fees revealed only at the last checkout step | $40 cart becomes $61 with "service fee" + "processing" at step 4 | Show the all-in price up front; itemize before payment | FTC junk-fee rule; CMA (UK) | | Sneaking | Hidden subscription / forced continuity | A "free trial" silently rolls to paid; recurring charge undisclosed | "Free for 7 days" with no visible "then $29/mo," no reminder before charge | Disclose price + cadence pre-purchase; email before each renewal | ROSCA; FTC negative-option | | Urgency | False countdown | A timer that resets or means nothing | "Offer ends in 09:58" that restarts on refresh | Use real deadlines only, or none | FTC (deceptive); EU UCPD | | Urgency | Fake urgency / low-stock | Invented "selling fast" pressure | "Only 2 left!" on unlimited digital stock | Show real inventory or omit it | FTC; DSA Art 25 | | Misdirection | Confirmshaming | Guilts the user out of declining | Decline link reads "No thanks, I don't want to save money" | Neutral decline: "No thanks" / "Maybe later" | EDPB 03/2022; FTC | | Misdirection | Visual interference | Styling hides or de-emphasizes the honest choice | "Accept" is a bright button; "Decline" is grey low-contrast text | Equal visual weight for symmetric choices | DSA Art 25; EDPB | | Misdirection | Pressured selling | Pre-selects the expensive option / nags toward upsell | Most-expensive plan pre-highlighted as "recommended" with no basis | Default to neutral; "recommended" must be honest and explained | FTC; UCPD | | Misdirection | Trick wording / double negatives | Confusing phrasing flips the user's intent | "Uncheck if you do not want to not receive emails" | One clear affirmative statement per control | UCPD; FTC | | Social proof | Fake activity / testimonials | Fabricated signals manufacture trust | "Sarah from Ohio just bought this" (random generator); paid 5-star reviews as organic | Use only real, verifiable activity and disclosed/earned reviews | FTC endorsement guides; review rules | | Scarcity | Fake scarcity | Manufactured limited availability | "High demand — book now!" with no real constraint | Reflect true availability or remove the claim | FTC; UCPD | | Obstruction | Roach motel / Hard to cancel | Easy to get in, deliberately hard to get out | One-click signup; cancel requires a phone call in business hours | Cancel as easy as subscribe; same channel, same clicks | FTC Click-to-Cancel; ROSCA | | Obstruction | Price-comparison prevention | Blocks the user from comparing options | Bundles priced so per-unit cost can't be compared; no unit price | Show unit/comparable pricing; allow side-by-side | UCPD; CMA | | Forced action | Forced registration | Demands an account to do a one-off task | Must create an account to check out or read an article | Offer guest checkout / progressive account creation | UCPD; usability law | | Forced action | Gamification / grinding | Forces tedious or addictive labor to unlock value | Must invite 5 friends or log in 7 days to access a feature you paid for | Deliver paid value immediately; rewards optional, not gated | FTC (esp. minors) | | Nagging | Nagging | Repeated interruption to push an unwanted action | "Enable notifications?" re-asked every session after "No" | Honor "No"; ask once, respect the answer | iOS/Android policy; UCPD | | Sneaking | Bad defaults / preselection | Pre-checks the choice that benefits the business | "Subscribe to newsletter" / "Share my data with partners" pre-ticked | Ship every consequential box unchecked; user opts in | GDPR Art 4(11); Planet49 | | Misdirection | Bait-and-switch | Promises one outcome, delivers another | "Free upgrade!" click installs unwanted software | The action does exactly what its label promises | FTC §5; UCPD | | Misdirection | Disguised ads | Ads styled as content or native controls | A fake "Download" button that is actually an ad | Label ads ("Sponsored"); never mimic UI controls | FTC native-ad guides | | Sneaking (privacy) | Privacy Zuckering | Tricks users into oversharing personal data | Defaults set to "public"; "improve our service" buries data-broker sharing | Privacy by default; plain-language sharing, opt-in | GDPR Arts 5/25; CPRA |
Confirmshaming. Pattern. Guilt and manufactured loss-aversion are used to flip a "no" into a reluctant "yes." Violation. A newsletter modal whose dismiss link reads "No thanks, I hate saving money," an unsubscribe asking "Are you sure? You'll miss out on exclusive deals 😢," or a delete-account flow captioned "We'll be heartbroken to see you go." Fix. The decline must be as neutral, visible, and one-click as the accept — "No thanks" or "Not now," same prominence, no emotional loading, no sad mascot. Law. The EDPB (Guidelines 03/2022) explicitly names emotional steering as deceptive design; the FTC treats it as §5 deception when it materially affects the choice.
Hard to cancel (roach motel). Pattern. Easy to get in, deliberately hard to get out — effort asymmetry between joining and leaving. Violation. Sign up in one click online, but to cancel you must call a number staffed 9–5, navigate a multi-screen "are you sure" retention gauntlet with discount bribes, and confirm by email. Amazon's "Iliad" Prime-cancel flow and Adobe's hidden early-termination fees are the canonical FTC targets. Fix. Cancellation must use the same medium and no more clicks than signup. One-tap in-app signup means one-tap in-app cancel; one skippable retention offer maximum, never a wall. Law. The FTC's Click-to-Cancel rule and EU consumer law require symmetric exit. "We made it annoying" is itself the violation.
Forced continuity / hidden subscription. Pattern. A trial silently converts to a paid recurring charge the user didn't knowingly agree to. Violation. A "free 7-day trial" that takes a card up front, rolls to $29/mo, sends no pre-charge reminder, and discloses the price only in grey 11px text below the fold. Fix. State price and cadence before commitment ("Free for 7 days, then $29/month — cancel anytime"), email a reminder before each renewal, and let the user cancel the trial without re-entering a maze. Law. ROSCA and the FTC negative-option rule require clear up-front disclosure and informed consent to the recurring charge.
Cookie-banner trickery. Pattern. The consent UI is weighted so accepting tracking is trivial and refusing it is laborious or impossible. Violation. A bright one-tap "Accept all" beside a buried, grey, or absent "Reject all" — forcing "Manage preferences → 47 vendor toggles → Confirm" to decline. Pre-checked "legitimate interest" toggles. Re-asking on every page after a refusal. Fix. "Reject all" must be as easy as "Accept all" — same screen, same visual weight, one click. No pre-ticked non-essential boxes; essential cookies need no toggle. Remember the refusal. Law. CNIL has fined exactly this asymmetry repeatedly (Google, Facebook, Amazon); Planet49 (CJEU, 2019) killed pre-ticked consent outright.
Sneak into basket. Violation. A flight booking auto-adds travel insurance and priority boarding; the user must hunt for the "remove" link before paying. Fix. Add nothing the user didn't choose. Cross-sells are presented as unchecked opt-ins next to the cart, never pre-added.
Hidden costs / drip pricing. Violation. A $40 cart becomes $61 at step 4 of 5 with a "service fee," "processing fee," and "convenience charge" appearing only there. Fix. Show the all-in price up front; itemize every fee before the user reaches payment, with no surprise additions after.
Fake urgency & fake scarcity. Violation. A countdown timer that resets on refresh; "Only 2 left!" on unlimited digital stock; "12 people are looking at this right now" from a random generator. Fix. Show real deadlines and real inventory, or show neither. A claim about urgency or availability must be true at the moment it's displayed.
Bad defaults / preselection. Violation. "Subscribe to our newsletter" and "Share my data with partners" ship pre-ticked, riding the ~95% who never change a default. Fix. Every consequential box ships unchecked; the user performs a clear affirmative act to opt in. (For consent this isn't optional — it's GDPR Art 4(11).)
Trick wording / double negatives. Violation. "Uncheck this box if you do not want to not receive marketing emails." Confusing phrasing inverts the user's intent. Fix. One clear affirmative statement per control, in the user's language: "Email me product updates." Never make the user parse a negation to protect themselves.
Privacy zuckering. Violation. New posts default to "Public"; an "improve our services" toggle quietly authorizes selling data to brokers; the real sharing scope is three settings screens deep. Fix. Privacy by default — most-protective setting shipped. Name third-party sharing in plain language and make it opt-in: "Sell my data to advertisers" is honest; "personalize my experience" is not.
Disguised ads & bait-and-switch. Violation. A fake "Download" button that is actually an ad; a "Free upgrade!" that installs unwanted software; sponsored content styled identically to editorial. Fix. The action does exactly what its label says. Ads are labeled "Sponsored" and never mimic native UI controls (FTC native-advertising guidance).
Meaningful consent (GDPR Art 4(11) + Art 7). Consent is valid only if it is freely given, specific, informed, and unambiguous, by a clear affirmative act.
| Requirement | Means | Dark-pattern violation | |---|---|---| | Freely given | No detriment for refusing; not bundled | "Accept cookies to read this" wall | | Specific | Per-purpose, granular | One toggle for analytics + ads + brokers | | Informed | Plain language, before the act | Consent buried in a 40-page ToS | | Unambiguous | Active opt-in, no pre-ticks | Pre-checked boxes (illegal — Planet49) | | Withdrawable | As easy to revoke as to give | "Email us to opt out" |
An honest cookie banner — concrete spec. This is the component to bake into the design system so no team re-derives it:
Infinite scroll, autoplay, variable-ratio rewards, and streaks are persuasive-technology mechanics, several borrowed from slot machines (B.J. Fogg's Persuasive Tech Lab; Nir Eyal's "Hook" model). They are not automatically unethical — the same loop can serve the user or strip-mine them. The line is whose goal the mechanic serves, and whether it survives daylight.
| | Persuasion (ethical) | Manipulation (dark) | |---|---|---| | Serves | The user's own stated goal | The engagement metric, against the user's interest | | Transparency | User would still agree if shown the mechanism | Depends on the user not noticing it | | Exit | Easy to stop; provides natural stopping points | Engineered to remove every stopping cue | | Reversibility | User can disable it and it stays off | Re-enables itself; resets on the user |
Excluding people is an ethical failure, not only a compliance gap. A dark pattern often hides inside an inaccessibility: a "Reject all" that is keyboard-unreachable, a confirmshame buried in an unlabeled control, a low-contrast decline link, a cancel flow that breaks for screen-reader users. These deny meaningful choice to exactly the users least able to fight back — visual interference is the deceptive pattern when the honest option is technically present but practically unreachable.
Inclusive defaults are the same discipline as honest defaults: make the right path work for everyone, by default — real <label>s, logical focus order, AA-or-better contrast on both options (not just the one the business wants chosen), respect for prefers-reduced-motion, and copy at a reading level your actual users share. Inclusion also means not exploiting cognitive load: children, the elderly, people in crisis, and the cognitively overloaded are disproportionately harmed by urgency and confusion tactics, which is why regulators weigh impact on vulnerable users heavily. See the accessibility-and-inclusive-design skill for the WCAG 2.2 AA floor.
The core ethical move is asymmetry of effort: make the choice that benefits the user the easy one, and never make the user fight the interface to protect their own interest.
| | Do | Don't | |---|---|---| | Marketing opt-in | Unchecked box, clear label | Pre-checked "Send me offers" | | Cancel flow | Same clicks as signup | Phone-only, retention maze | | Cookie banner | Reject = Accept (1 click) | Buried "Manage → Confirm" | | Decline copy | "No thanks" | "No, I hate saving money" | | Permissions | Just-in-time + rationale | Front-loaded demand wall | | Pricing | All-in up front | Fees dripped at step 4 | | Trial → paid | Reminder email before charge | Silent auto-conversion | | Urgency / stock | Real or omitted | Resetting timer, fake "2 left" | | Reviews / activity | Real, verified, disclosed | Generated "Sarah just bought…" | | Destructive action | Undo toast; safe = default | "Cancel" styled as the primary CTA |
Ethical persuasion is still allowed — and encouraged. None of this means a flat, optimization-free product. You may highlight a genuinely better plan, show real "23 people bought this today," offer a real limited-time deal, and design a delightful, frictionless happy path. The rule is narrow and absolute: the persuasion must rest on a true premise and must serve a choice the user would still make if they fully understood it. Optimize conversion by removing real friction and communicating real value — never by deceiving, hiding, shaming, or trapping.
Dark patterns are now actively litigated, not a grey area. The FTC, the EU, and US state regulators have each published that deceptive interface design is unlawful on its own terms — the defense "but everyone does it" fails explicitly, and "the user technically clicked agree" fails when the agreement was manufactured by the design. Enforcement is typically triggered by hidden charges, hard-to-cancel subscriptions, manipulated consent, and material misrepresentation; the remedies range from voided consent and forced refunds to percentage-of-global-revenue fines.
| Regime | Bans / requires | Mechanism & teeth | |---|---|---| | FTC Act §5 (US) | "Unfair or deceptive" practices | 2022 report "Bringing Dark Patterns to Light"; enforcement + consumer redress | | FTC Click-to-Cancel / ROSCA | Cancel must equal signup; clear negative-option disclosure + consent | Targeted Amazon Prime, Adobe; civil penalties | | GDPR (EU) | Valid consent (Art 4(11)/7), data minimization (5), privacy by default (25) | Planet49 (CJEU 2019) — pre-ticked = invalid; fines up to 4% global turnover; CNIL cookie-banner fines | | EDPB Guidelines 03/2022 | Names deceptive design in social-media UIs (confirmshaming, hidden info, etc.) | Interpretive force across EU DPAs | | EU Digital Services Act — Art 25 | Online platforms may not deceive/manipulate via interface design | Fines up to 6% global turnover | | EU DMA | Bars gatekeeper self-preferencing & manipulative defaults | Up to 10% global turnover (20% repeat) | | CPRA / CCPA (California) | Consent obtained via a dark pattern is not consent | Defines "dark pattern" in statute; AG/CPPA enforcement; Colorado/Connecticut mirror it |
> Treat fine figures as illustrative — the load-bearing fact is the mechanism: a regulator can void your consent, force a refund, or fine a percentage of global revenue for a pattern your design system shipped as a default.
Other measured skills in the registry, with their headline benchmark lift.