---
title: models
---

Published as [@freesewing/models][1], this package provides body
measurements data for a range of size models used by the FreeSewing project.

## Models

Models have names like `cisFemaleAdult34`, `cisMaleDoll30`,
and `cisFemaleGiant150`.

These names are constructed according to the 3 aspects that make up the model:
1. Gender: `cisFemale` or `cisMale`
2. Group: `Adult`, `Doll`, or `Giant`
3. Size: a number
   - For Adult models, the size number is the neck circumference in millimeters, Example: `34` for 34 mm.
   - For Doll and Giant models, the size number is a whole number which is the percentage to scale a base model. Examples: '30' for a 30% size reduction for a doll, and '150' for a 150% size increase for a giant.

## Available models

Available models are:
- cisFemaleAdult sizes 28, 30, 32, 34, 36, 38, 40, 42, 44, 46
- cisMaleAdult sizes 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
- cisFemaleDoll sizes 10, 20, 30, 40, 50, 60
- cisMaleDoll sizes 10, 20, 30, 40, 50, 60
- cisFemaleGiant sizes 150, 200, 250, 300
- cisMaleGiant sizes 150, 200, 250, 300

## Exports

models: Objects with key-value pairs, with measurement name keys and measurement value (in mm) values.

`measurements`: Array of measurement name strings.  
See [Measurements](/reference/measurements) for a list of measurement names.

`group` Array of the model group name strings (`adult`, `doll`, `giant`).

`sizes` Object with key-value pairs, with genderGroup keys and values that are Arrays of size numbers available for each genderGroup.

genderGroups: Each genderGroup is an object of key-value pairs, with size keys and model values.  
Available genderGroups: `cisFemaleAdult`, `cisMaleAdult`, `cisFemaleDoll`, `cisMaleDoll`, `cisFemaleGiant`, `cisMaleGiant`.

groups: Each group is an object of key-value pairs, with gender keys and genderGroup values.  
Available groups: `adult`, `doll`, `giant`.

## Installation

```sh
npm install @freesewing/models
```

## Example

In NodeJS:
```js
import { cisMaleAdult38 } from @freesewing/models

```

which will give you an object with measurement: value pairs.
The example above gives you:

```js
{
  ankle: 235,
  biceps: 350,
  bustFront: 560,
  bustPointToUnderbust: 60,
  bustSpan: 190,
  chesT: 1000,
  crossSeam: 870
  crossSeamFront: 410,
  crotchDepth: 340,
  heel, 360,
  head: 590,
  ...
}
```

## Units

All measurements are in mm.


## Notes

These model measurement values were arbitrarily chosen by FreeSewing.
They do __not__ correspond to any existing statistical data or
official size charts.
You should not expect that these models will produce garments that fit
the same as clothing store sizes.

To create our models, measurement values for a base cisFemale
and cisMale model were first chosen.
Then, for all other models their measurement values were generated from
the base values using a mathematical formula which scales and adjusts
the values.
The mathematical formula is designed to produce approximate measurements
which are realistic enough to be useful.

[1]: https://www.npmjs.com/package/@freesewing/models
