# Generated CAPTCHA image styles

The self-hosted and managed engines support 18 concrete renderers plus `random`.

![Renderer gallery](./image-style-gallery.png)

## Concrete styles

| Style          | Main effect                               | Suggested use             |
| -------------- | ----------------------------------------- | ------------------------- |
| `classic`      | Dots, crossing lines, glyph jitter        | General default pool      |
| `collision`    | Overlapping coloured glyphs and bars      | Medium or hard challenges |
| `snow`         | Dense snow-like speckles                  | Medium challenges         |
| `corrosion`    | Eroded glyph patches and rust-like noise  | Medium or hard challenges |
| `spiderweb`    | Connected web lines and nodes             | Medium challenges         |
| `cross-shadow` | Multi-colour offset shadows               | Medium challenges         |
| `split`        | Horizontally shifted image bands          | Medium or hard challenges |
| `split2`       | Vertically shifted image strips           | Medium or hard challenges |
| `cut`          | Slashed and interrupted character strokes | Medium challenges         |
| `darts`        | Radial lines and target rings             | Medium challenges         |
| `distortion`   | Two-axis sinusoidal distortion            | Medium or hard challenges |
| `stitch`       | Dashed seams and cross stitches           | Easy or medium challenges |
| `striped`      | Diagonal and horizontal stripes           | Easy or medium challenges |
| `wave`         | Strong wave transformation                | Medium or hard challenges |
| `grid-noise`   | Grid lines and translucent cells          | Easy or medium challenges |
| `scribble`     | Random-walk line scribbles                | Medium challenges         |
| `pixel`        | Pixel blocks and shifted regions          | Medium challenges         |
| `broken-lines` | Missing stroke segments and fragments     | Medium or hard challenges |

## Random pool

```wrn
<Captcha
  type="alphanumeric"
  action="signup"
  imageStyle="random"
  allowedStyles="classic,snow,spiderweb,distortion,wave"
  excludedStyles="collision"
  disturbance="50"
/>
```

The engine resolves one concrete style per challenge. Refreshing creates a new challenge and selects again. Challenge metadata contains `imageStyle`, `requestedImageStyle`, and `imageStylePool`; it never contains the answer.

## Accessibility

Keep `showAudio="true"` or provide another non-visual path. High disturbance and hard renderers should not be the only completion option.
