---
title: Pattern.sample()
---

The `Pattern.sample()` method will _sample_ the pattern which means
to draft multiple variants of the same pattern, and stack them on
top of each other.

:::note
This method is chainable as it returns the Pattern object
:::

Under the hood, this method will call one of
[Pattern.sampleOption()](/reference/api/pattern/sampleoption),
[Pattern.sampleMeasurement()](/reference/api/pattern/samplemeasurement), or
[Pattern.sampleModels()](/reference/api/pattern/samplemodels) to sample
an option, a measurement, or different models respectively.

Unlike those three methods where you pass the relevant info to to the method,
this `Pattern.sample()` method will instead read the
[`settings.sample`](/reference/settings/sample)
object to determine what needs to be done.

See the specific sample methods below for more details:

- [Pattern.sampleOption()](/reference/api/pattern/sampleoption)
- [Pattern.sampleMeasurement()](/reference/api/pattern/samplemeasurement)
- [Pattern.sampleModels()](/reference/api/pattern/samplemodels)

## Pattern.sample() signature

```js
Pattern pattern.sample()
```

## Pattern.sample() example

```js
import { Aaron } from '@freesewing/aaron'

// Load some public test measurements from the FreeSewing backend
const measurements = (
  await (await fetch('https://backend3.freesewing.org/curated-sets/1.json')).json()
).measurements

const pattern = new Aaron({
  sample: {
    models: measurements,
  },
})

const svg = pattern.sample().render()
```
