Evally
Product

Dark pattern detector

Flag manipulative UX copy and flows: confirmshaming, hidden costs, roach motels.

Paste the copy of a screen or describe a flow, and check it for the dark patterns regulators and users call out: guilt-tripping opt-outs, hidden fees, silent trial-to-paid conversions, cancellation mazes, pre-ticked boxes and fake urgency.

Try it live

Real calls to Jev. Pick an example or paste your own.

Examples
238
No verdict yet

Pick an example or paste your own input, then run it.

Under the hood

Every question and rule, in the open. Fork it to change any of them.

What it asks

Reads ui, then asks 6 questions in one call.

  1. Q1ConfirmshamingYes / no quotes evidence

    Does the ui guilt users into opting in ('No thanks, I don't like saving money')?

  2. Q2Hidden costsYes / no

    Does the ui hide fees or costs until late in the flow?

  3. Q3Forced continuityYes / no

    Does a free trial roll into a paid plan without a clear reminder?

  4. Q4Hard to cancelYes / no

    Is cancelling or opting out harder than signing up (hidden links, a required phone call, many steps)?

  5. Q5Pre-selected optionsYes / no

    Are consent boxes or paid add-ons pre-selected?

  6. Q6Fake urgencyYes / no quotes evidence

    Does the ui use fake timers or scarcity?

How it decides

Rules run in code, top to bottom. The first one that matches gives the verdict.

  1. 1
    If Confirmshaming ≥ 0.7Manipulative
  2. 2
    If Hidden costs ≥ 0.7Manipulative
  3. 3
    If Forced continuity ≥ 0.7Manipulative
  4. 4
    If Hard to cancel ≥ 0.7Manipulative
  5. 5
    If Pre-selected options ≥ 0.7Manipulative
  6. 6
    If Fake urgency ≥ 0.7Manipulative
  7. 7
    If Confirmshaming ≥ 0.45Questionable
  8. 8
    If Hidden costs ≥ 0.45Questionable
  9. 9
    If Forced continuity ≥ 0.45Questionable
  10. 10
    If Hard to cancel ≥ 0.45Questionable
  11. 11
    If Pre-selected options ≥ 0.45Questionable
  12. 12
    If Fake urgency ≥ 0.45Questionable
  13. ·
    DefaultFair

Call it from your code

Every template runs as-is with an API key, no setup: POST /api/v1/judges/dark-pattern-detector/run.

curl -X POST https://tryevally.com/api/v1/judges/dark-pattern-detector/run \  -H "Authorization: Bearer $EVALLY_API_KEY" \  -H "Content-Type: application/json" \  -d '{  "input": {    "ui": "Start your FREE trial! (Card required. Converts to $39.99/month after 7 days.) ☑ Add Premium Support for $9.99/month. [Start trial] [No thanks, I prefer paying full price] Offer ends in 04:59. To cancel, call our support line Mon-Fri 9-5."  }}'

Seen in the wild

Community builds on Jev that use this pattern. Not affiliated with Evally.

More in Product