---
title: "Multi-select"
description: "Let a respondent choose several options and store their IDs as an array."
group: "Build forms"
order: 7
type: "reference"
parent: "fields"
keywords:
  - "multi_select"
  - "multiple choice"
  - "options"
  - "array"
updated: "2026-07-14"
---

The multi-select field shows a set of options and stores the chosen option IDs as a string array.

## Options and validation

`options`, `allowOther`, and `shuffleOptions` behave like the select field. Fillo rejects unknown IDs, duplicate values, and more than one free-text Other answer. A required field must contain at least one choice.

There's no minimum- or maximum-selection option in the current schema. If the form has to enforce something like "choose exactly three," use a custom field.

## Add a multi-select field

In the dashboard, select **Add block**, choose **Multi-select**, and add the options in their default display order.

```ts
const topicsField = {
  id: "topics",
  kind: "multi_select",
  label: "What do you need help with?",
  options: [
    { id: "setup", label: "Setup" },
    { id: "billing", label: "Billing" },
    { id: "security", label: "Security" },
  ],
  allowOther: true,
} as const;
```

URL prefill uses a comma-separated list of option IDs, for example `?topics=setup,security`. Invalid IDs are ignored.

## Related

- [Select](/docs/fields/select): Store one visible choice.
- [Custom](/docs/fields/custom): Enforce a minimum or maximum number of selections.
- [Prefill and hidden fields](/docs/prefill): Seed choices from a query string or app state.
