{
  "title": "Paint calculator",
  "human_url": "https://happytails.ai/en/calculators/paint-calculator/",
  "agent_url": "https://happytails.ai/agents/en/calculators/paint-calculator/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/calculators/paint-calculator.md",
  "content": "Paint calculator\nWork out how much paint to buy. Measure walls, subtract openings, add coats and use the coverage printed on your paint tin.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Paint calculator\nEnter room dimensions or a total surface area, then subtract measured openings.\nSet coats, coverage, allowance and container size from your chosen product.\nReview whole containers and download the estimate.\nUseful next steps\nFlooring calculator\nArea\nConcrete calculator\nMeasure the surfaces you will paint\nFor a rectangular room, enter length, width and wall height. The calculator adds the four walls and can include a flat ceiling. Enter the combined area of doors, windows and other unpainted wall surfaces to subtract. For several rooms, irregular walls or a measured surface total, choose Direct area instead.\nUse your paint's coverage per coat\nThe paint amount is the net area multiplied by the number of coats, divided by coverage. Coverage varies with the product and surface. Use the label on your chosen paint, then enter an extra allowance for your project. US gallons and imperial gallons are separate choices because they hold different volumes.\nRound up to containers you can buy\nEnter the amount in one container. The result shows calculated paint volume, whole containers and the surplus created by rounding. A 4 × 3 metre room with 2.5 metre walls, 3 square metres of openings, two coats and 10 m²/L coverage needs 6.4 litres before allowance. Adding 10% gives 7.04 litres, or two 5-litre containers.\nKeep the estimate\nDownload the values as CSV and save a text or JSON report with formulas and assumptions. Processing stays in your browser. The estimate does not measure surface condition or guarantee a manufacturer's coverage.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Flooring calculator",
      "url": "https://happytails.ai/en/calculators/flooring-calculator/"
    },
    {
      "name": "Area",
      "url": "https://happytails.ai/en/unit-converters/area/"
    },
    {
      "name": "Concrete calculator",
      "url": "https://happytails.ai/en/calculators/concrete-calculator/"
    }
  ],
  "tool": {
    "id": "paint-calculator",
    "category": "calculators",
    "built": true,
    "requirements": "Rectangular room mode or a direct total area; up to 20 coats and 100% extra allowance. Openings cannot exceed wall area. Whole containers are limited to 1 billion. Unit changes preserve the entered numbers.",
    "implementation": {
      "fields": [
        {
          "key": "mode",
          "label": "Measure",
          "value": "Room walls",
          "type": "select",
          "values": [
            "Room walls",
            "Direct area"
          ]
        },
        {
          "key": "length",
          "label": "Room length",
          "value": 4,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "showWhen": {
            "mode": [
              "Room walls"
            ]
          }
        },
        {
          "key": "width",
          "label": "Room width",
          "value": 3,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "showWhen": {
            "mode": [
              "Room walls"
            ]
          }
        },
        {
          "key": "height",
          "label": "Wall height",
          "value": 2.5,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "showWhen": {
            "mode": [
              "Room walls"
            ]
          }
        },
        {
          "key": "roomUnit",
          "label": "Room measurement unit",
          "value": "m",
          "type": "select",
          "values": [
            "mm",
            "cm",
            "m",
            "in",
            "ft"
          ],
          "showWhen": {
            "mode": [
              "Room walls"
            ]
          }
        },
        {
          "key": "includeCeiling",
          "label": "Include a flat ceiling",
          "value": false,
          "type": "checkbox",
          "showWhen": {
            "mode": [
              "Room walls"
            ]
          }
        },
        {
          "key": "directArea",
          "label": "Total area to paint",
          "value": 35,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "showWhen": {
            "mode": [
              "Direct area"
            ]
          }
        },
        {
          "key": "areaUnit",
          "label": "Entered area unit",
          "value": "m²",
          "type": "select",
          "values": [
            "m²",
            "ft²"
          ],
          "showWhen": {
            "mode": [
              "Direct area"
            ]
          }
        },
        {
          "key": "openingArea",
          "label": "Doors, windows and unpainted area",
          "value": 3,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "help": "Enter the combined measured area. In room mode this is deducted from walls, not the ceiling."
        },
        {
          "key": "openingUnit",
          "label": "Opening area unit",
          "value": "m²",
          "type": "select",
          "values": [
            "m²",
            "ft²"
          ]
        },
        {
          "key": "coats",
          "label": "Number of coats",
          "value": 2,
          "type": "number",
          "min": 1,
          "max": 20,
          "step": 1
        },
        {
          "key": "waste",
          "label": "Extra allowance (%)",
          "value": 10,
          "type": "number",
          "min": 0,
          "max": 100,
          "step": "any"
        },
        {
          "key": "coverage",
          "label": "Coverage per coat",
          "value": 10,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any",
          "help": "Use the paint product label. The starting value is an editable example."
        },
        {
          "key": "coverageUnit",
          "label": "Coverage unit",
          "value": "m²/L",
          "type": "select",
          "values": [
            "m²/L",
            "ft²/US gal",
            "ft²/Imp gal"
          ]
        },
        {
          "key": "containerSize",
          "label": "Paint per container",
          "value": 5,
          "type": "number",
          "min": 0,
          "max": 1000000000,
          "step": "any"
        },
        {
          "key": "containerUnit",
          "label": "Container unit",
          "value": "L",
          "type": "select",
          "values": [
            "L",
            "US gal",
            "Imp gal"
          ]
        }
      ],
      "input": false,
      "live": true,
      "presentation": "metrics",
      "note": "Estimate wall and ceiling paint, subtract measured openings, then apply coats and your coverage rate. Container count rounds up after the extra allowance. Changing units keeps the entered numbers. All calculations stay on your device. These estimates do not establish structural safety or code compliance.",
      "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"
    }
  },
  "markdown": "# Paint calculator\n\n- Human page: https://happytails.ai/en/calculators/paint-calculator/\n- Markdown: https://happytails.ai/en/calculators/paint-calculator.md\n- Structured JSON: https://happytails.ai/agents/en/calculators/paint-calculator/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `paint-calculator` |\n| Category | calculators |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nEstimate wall and ceiling paint, subtract measured openings, then apply coats and your coverage rate. Container count rounds up after the extra allowance. Changing units keeps the entered numbers. All calculations stay on your device. These estimates do not establish structural safety or code compliance.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `mode` | Measure | select | \"Room walls\" | Allowed: Room walls, Direct area |\n| `length` | Room length | number | 4 | min=0 max=1000000000 step=any |\n| `width` | Room width | number | 3 | min=0 max=1000000000 step=any |\n| `height` | Wall height | number | 2.5 | min=0 max=1000000000 step=any |\n| `roomUnit` | Room measurement unit | select | \"m\" | Allowed: mm, cm, m, in, ft |\n| `includeCeiling` | Include a flat ceiling | checkbox | false |  |\n| `directArea` | Total area to paint | number | 35 | min=0 max=1000000000 step=any |\n| `areaUnit` | Entered area unit | select | \"m²\" | Allowed: m², ft² |\n| `openingArea` | Doors, windows and unpainted area | number | 3 | min=0 max=1000000000 step=any |\n| `openingUnit` | Opening area unit | select | \"m²\" | Allowed: m², ft² |\n| `coats` | Number of coats | number | 2 | min=1 max=20 step=1 |\n| `waste` | Extra allowance (%) | number | 10 | min=0 max=100 step=any |\n| `coverage` | Coverage per coat | number | 10 | min=0 max=1000000000 step=any |\n| `coverageUnit` | Coverage unit | select | \"m²/L\" | Allowed: m²/L, ft²/US gal, ft²/Imp gal |\n| `containerSize` | Paint per container | number | 5 | min=0 max=1000000000 step=any |\n| `containerUnit` | Container unit | select | \"L\" | Allowed: L, US gal, Imp gal |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nRectangular room mode or a direct total area; up to 20 coats and 100% extra allowance. Openings cannot exceed wall area. Whole containers are limited to 1 billion. Unit changes preserve the entered numbers.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"paint-calculator\",\n  \"category\": \"calculators\",\n  \"built\": true,\n  \"requirements\": \"Rectangular room mode or a direct total area; up to 20 coats and 100% extra allowance. Openings cannot exceed wall area. Whole containers are limited to 1 billion. Unit changes preserve the entered numbers.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"mode\",\n        \"label\": \"Measure\",\n        \"value\": \"Room walls\",\n        \"type\": \"select\",\n        \"values\": [\n          \"Room walls\",\n          \"Direct area\"\n        ]\n      },\n      {\n        \"key\": \"length\",\n        \"label\": \"Room length\",\n        \"value\": 4,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"showWhen\": {\n          \"mode\": [\n            \"Room walls\"\n          ]\n        }\n      },\n      {\n        \"key\": \"width\",\n        \"label\": \"Room width\",\n        \"value\": 3,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"showWhen\": {\n          \"mode\": [\n            \"Room walls\"\n          ]\n        }\n      },\n      {\n        \"key\": \"height\",\n        \"label\": \"Wall height\",\n        \"value\": 2.5,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"showWhen\": {\n          \"mode\": [\n            \"Room walls\"\n          ]\n        }\n      },\n      {\n        \"key\": \"roomUnit\",\n        \"label\": \"Room measurement unit\",\n        \"value\": \"m\",\n        \"type\": \"select\",\n        \"values\": [\n          \"mm\",\n          \"cm\",\n          \"m\",\n          \"in\",\n          \"ft\"\n        ],\n        \"showWhen\": {\n          \"mode\": [\n            \"Room walls\"\n          ]\n        }\n      },\n      {\n        \"key\": \"includeCeiling\",\n        \"label\": \"Include a flat ceiling\",\n        \"value\": false,\n        \"type\": \"checkbox\",\n        \"showWhen\": {\n          \"mode\": [\n            \"Room walls\"\n          ]\n        }\n      },\n      {\n        \"key\": \"directArea\",\n        \"label\": \"Total area to paint\",\n        \"value\": 35,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"showWhen\": {\n          \"mode\": [\n            \"Direct area\"\n          ]\n        }\n      },\n      {\n        \"key\": \"areaUnit\",\n        \"label\": \"Entered area unit\",\n        \"value\": \"m²\",\n        \"type\": \"select\",\n        \"values\": [\n          \"m²\",\n          \"ft²\"\n        ],\n        \"showWhen\": {\n          \"mode\": [\n            \"Direct area\"\n          ]\n        }\n      },\n      {\n        \"key\": \"openingArea\",\n        \"label\": \"Doors, windows and unpainted area\",\n        \"value\": 3,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"help\": \"Enter the combined measured area. In room mode this is deducted from walls, not the ceiling.\"\n      },\n      {\n        \"key\": \"openingUnit\",\n        \"label\": \"Opening area unit\",\n        \"value\": \"m²\",\n        \"type\": \"select\",\n        \"values\": [\n          \"m²\",\n          \"ft²\"\n        ]\n      },\n      {\n        \"key\": \"coats\",\n        \"label\": \"Number of coats\",\n        \"value\": 2,\n        \"type\": \"number\",\n        \"min\": 1,\n        \"max\": 20,\n        \"step\": 1\n      },\n      {\n        \"key\": \"waste\",\n        \"label\": \"Extra allowance (%)\",\n        \"value\": 10,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 100,\n        \"step\": \"any\"\n      },\n      {\n        \"key\": \"coverage\",\n        \"label\": \"Coverage per coat\",\n        \"value\": 10,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\",\n        \"help\": \"Use the paint product label. The starting value is an editable example.\"\n      },\n      {\n        \"key\": \"coverageUnit\",\n        \"label\": \"Coverage unit\",\n        \"value\": \"m²/L\",\n        \"type\": \"select\",\n        \"values\": [\n          \"m²/L\",\n          \"ft²/US gal\",\n          \"ft²/Imp gal\"\n        ]\n      },\n      {\n        \"key\": \"containerSize\",\n        \"label\": \"Paint per container\",\n        \"value\": 5,\n        \"type\": \"number\",\n        \"min\": 0,\n        \"max\": 1000000000,\n        \"step\": \"any\"\n      },\n      {\n        \"key\": \"containerUnit\",\n        \"label\": \"Container unit\",\n        \"value\": \"L\",\n        \"type\": \"select\",\n        \"values\": [\n          \"L\",\n          \"US gal\",\n          \"Imp gal\"\n        ]\n      }\n    ],\n    \"input\": false,\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"Estimate wall and ceiling paint, subtract measured openings, then apply coats and your coverage rate. Container count rounds up after the extra allowance. Changing units keeps the entered numbers. All calculations stay on your device. These estimates do not establish structural safety or code compliance.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Your text\",\n      \"placeholder\": \"Type or paste your input…\",\n      \"help\": \"Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nWork out how much paint to buy. Measure walls, subtract openings, add coats and use the coverage printed on your paint tin.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Paint calculator\n\n1. Enter room dimensions or a total surface area, then subtract measured openings.\n2. Set coats, coverage, allowance and container size from your chosen product.\n3. Review whole containers and download the estimate.\n\n## Useful next steps\n\n- [Flooring calculator](https://happytails.ai/en/calculators/flooring-calculator/) ([Markdown](https://happytails.ai/en/calculators/flooring-calculator.md))\n\n- [Area](https://happytails.ai/en/unit-converters/area/) ([Markdown](https://happytails.ai/en/unit-converters/area.md))\n\n- [Concrete calculator](https://happytails.ai/en/calculators/concrete-calculator/) ([Markdown](https://happytails.ai/en/calculators/concrete-calculator.md))\n\n## Measure the surfaces you will paint\n\nFor a rectangular room, enter length, width and wall height. The calculator adds the four walls and can include a flat ceiling. Enter the combined area of doors, windows and other unpainted wall surfaces to subtract. For several rooms, irregular walls or a measured surface total, choose Direct area instead.\n\n### Use your paint's coverage per coat\n\nThe paint amount is the net area multiplied by the number of coats, divided by coverage. Coverage varies with the product and surface. Use the label on your chosen paint, then enter an extra allowance for your project. US gallons and imperial gallons are separate choices because they hold different volumes.\n\n### Round up to containers you can buy\n\nEnter the amount in one container. The result shows calculated paint volume, whole containers and the surplus created by rounding. A 4 × 3 metre room with 2.5 metre walls, 3 square metres of openings, two coats and 10 m²/L coverage needs 6.4 litres before allowance. Adding 10% gives 7.04 litres, or two 5-litre containers.\n\n### Keep the estimate\n\nDownload the values as CSV and save a text or JSON report with formulas and assumptions. Processing stays in your browser. The estimate does not measure surface condition or guarantee a manufacturer's coverage.\n"
}