# Fabric shrinkage calculator

- Human page: https://happytails.ai/en/calculators/fabric-shrinkage-calculator/
- Markdown: https://happytails.ai/en/calculators/fabric-shrinkage-calculator.md
- Structured JSON: https://happytails.ai/agents/en/calculators/fabric-shrinkage-calculator/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `fabric-shrinkage-calculator` |
| Category | calculators |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Automatic updates after valid input or file selection. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Calculate the dimensions to cut before washing. Width and length can shrink differently. Negative shrinkage means growth; allowances are specified at the final, after-wash size. Changing units keeps the entered numbers. All calculations stay on your device. Download the report for formulas, assumptions and calculated values.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `mode` | Shrinkage input | select | "Measured sample" | Allowed: Measured sample, Known percentages |
| `beforeWidth` | Sample width before washing | number | 20 | min=0 max=1000000000 step=any |
| `afterWidth` | Sample width after washing | number | 19 | min=0 max=1000000000 step=any |
| `beforeLength` | Sample length before washing | number | 20 | min=0 max=1000000000 step=any |
| `afterLength` | Sample length after washing | number | 18 | min=0 max=1000000000 step=any |
| `sampleUnit` | Sample measurement unit | select | "cm" | Allowed: mm, cm, m, in, ft, yd |
| `widthShrink` | Width shrinkage (%) | number | 5 | min=-50 max=95 step=any |
| `lengthShrink` | Length shrinkage (%) | number | 10 | min=-50 max=95 step=any |
| `targetWidth` | Desired after-wash width | number | 50 | min=0 max=1000000000 step=any |
| `targetLength` | Desired after-wash length | number | 100 | min=0 max=1000000000 step=any |
| `targetUnit` | Desired size and output unit | select | "cm" | Allowed: mm, cm, m, in, ft, yd |
| `allowance` | Extra after-wash allowance on each edge | number | 0 | min=0 max=1000000000 step=any |
| `allowanceUnit` | Allowance unit | select | "cm" | Allowed: mm, cm, m, in, ft, yd |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Shrinkage from -50% to 95%. No automatic fabric rates or guarantees of future wash behavior.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "fabric-shrinkage-calculator",
  "category": "calculators",
  "built": true,
  "requirements": "Shrinkage from -50% to 95%. No automatic fabric rates or guarantees of future wash behavior.",
  "implementation": {
    "fields": [
      {
        "key": "mode",
        "label": "Shrinkage input",
        "value": "Measured sample",
        "type": "select",
        "values": [
          "Measured sample",
          "Known percentages"
        ]
      },
      {
        "key": "beforeWidth",
        "label": "Sample width before washing",
        "value": 20,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any",
        "showWhen": {
          "mode": [
            "Measured sample"
          ]
        }
      },
      {
        "key": "afterWidth",
        "label": "Sample width after washing",
        "value": 19,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any",
        "showWhen": {
          "mode": [
            "Measured sample"
          ]
        }
      },
      {
        "key": "beforeLength",
        "label": "Sample length before washing",
        "value": 20,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any",
        "showWhen": {
          "mode": [
            "Measured sample"
          ]
        }
      },
      {
        "key": "afterLength",
        "label": "Sample length after washing",
        "value": 18,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any",
        "showWhen": {
          "mode": [
            "Measured sample"
          ]
        }
      },
      {
        "key": "sampleUnit",
        "label": "Sample measurement unit",
        "value": "cm",
        "type": "select",
        "values": [
          "mm",
          "cm",
          "m",
          "in",
          "ft",
          "yd"
        ],
        "showWhen": {
          "mode": [
            "Measured sample"
          ]
        }
      },
      {
        "key": "widthShrink",
        "label": "Width shrinkage (%)",
        "value": 5,
        "type": "number",
        "min": -50,
        "max": 95,
        "step": "any",
        "showWhen": {
          "mode": [
            "Known percentages"
          ]
        }
      },
      {
        "key": "lengthShrink",
        "label": "Length shrinkage (%)",
        "value": 10,
        "type": "number",
        "min": -50,
        "max": 95,
        "step": "any",
        "showWhen": {
          "mode": [
            "Known percentages"
          ]
        }
      },
      {
        "key": "targetWidth",
        "label": "Desired after-wash width",
        "value": 50,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any"
      },
      {
        "key": "targetLength",
        "label": "Desired after-wash length",
        "value": 100,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any"
      },
      {
        "key": "targetUnit",
        "label": "Desired size and output unit",
        "value": "cm",
        "type": "select",
        "values": [
          "mm",
          "cm",
          "m",
          "in",
          "ft",
          "yd"
        ]
      },
      {
        "key": "allowance",
        "label": "Extra after-wash allowance on each edge",
        "value": 0,
        "type": "number",
        "min": 0,
        "max": 1000000000,
        "step": "any"
      },
      {
        "key": "allowanceUnit",
        "label": "Allowance unit",
        "value": "cm",
        "type": "select",
        "values": [
          "mm",
          "cm",
          "m",
          "in",
          "ft",
          "yd"
        ]
      }
    ],
    "input": false,
    "live": true,
    "presentation": "metrics",
    "note": "Calculate the dimensions to cut before washing. Width and length can shrink differently. Negative shrinkage means growth; allowances are specified at the final, after-wash size. Changing units keeps the entered numbers. All calculations stay on your device. Download the report for formulas, assumptions and calculated values.",
    "experience": {
      "automatic": true,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.",
      "action": null
    },
    "mode": "automatic",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Calculate before-wash cut dimensions from measured fabric shrinkage. Keep width and length separate and add your finishing allowance.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use Fabric shrinkage calculator

1. Enter the measured inputs and select their units.
2. Review the calculated dimensions, counts and rounding.
3. Download the result and verify it against a sample before making the full project.

## Useful next steps

- [Cross-stitch fabric calculator](https://happytails.ai/en/calculators/cross-stitch-fabric-calculator/) ([Markdown](https://happytails.ai/en/calculators/cross-stitch-fabric-calculator.md))

- [Quilt binding calculator](https://happytails.ai/en/calculators/quilt-binding-calculator/) ([Markdown](https://happytails.ai/en/calculators/quilt-binding-calculator.md))

## Measure both fabric directions

Wash and dry a sample using the process planned for the finished project. Measure the same width and length before and after. Alternatively, enter the two shrinkage percentages directly; negative percentages describe growth.

### Allow for the final dimensions

Cut size is final size divided by the retained proportion. At 5% width shrinkage, a desired 50 cm width needs about 52.6316 cm before washing. An allowance entered per edge is added to the after-wash dimensions before the shrinkage correction.

### Save the calculation

Download a CSV of the results or instructions, a readable text report and a JSON report with values, formulas and assumptions. Calculations run locally on your device. Unit changes keep the numbers already entered, so check the selected units before using the result.
