{
  "id": "plant-spacing",
  "version": "2de1c014f256",
  "status": "published",
  "name": "Plant Spacing Calculator",
  "question": "How many plants do I need?",
  "summary": "Counts the plants that fill a bed at a given spacing, on a square grid or a staggered triangular grid, with an extra share for edges and losses.",
  "category": "construction",
  "subcategory": "garden",
  "url": "https://www.acalculator.org/construction/plant-spacing-calculator",
  "markdown": "https://www.acalculator.org/construction/plant-spacing-calculator.md",
  "kind": "function",
  "method": "Plants = ⌈bed area ÷ area per plant × (1 + extra)⌉, with area per plant = spacing² (square grid) or spacing² × √3 ÷ 2 ≈ 0.866 × spacing² (triangular grid).",
  "assumptions": [
    "The count fills the area at the spacing; it does not place plants along the edges. Narrow or oddly shaped beds may take a few more or fewer.",
    "The 5% default extra follows the nurseries’ advice of 5 to 10% for edges, corners and losses."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "by": {
        "title": "Bed known by",
        "description": "Whether you know the bed’s length and width, or only its area.",
        "type": "string",
        "enum": [
          "sides",
          "area"
        ]
      },
      "l": {
        "title": "Bed length",
        "description": "The length of the bed.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 10000
      },
      "w": {
        "title": "Bed width",
        "description": "The width of the bed.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 10000
      },
      "a": {
        "title": "Bed area",
        "description": "The area of the bed, for a bed of any shape.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "area",
        "minimum": 0.01,
        "maximum": 10000000
      },
      "s": {
        "title": "Plant spacing",
        "description": "The distance between plants, centre to centre, from the plant tag.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "length",
        "minimum": 0.01,
        "maximum": 30
      },
      "grid": {
        "title": "Pattern",
        "description": "A square grid, or a triangular grid with every other row shifted by half a space.",
        "type": "string",
        "enum": [
          "square",
          "triangle"
        ]
      },
      "extra": {
        "title": "Extra plants",
        "description": "Plants to add for curved edges, corners and losses, in percent.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 100
      }
    }
  },
  "outputs": {
    "plants": {
      "label": "Plants to buy",
      "description": "The plants that fill the bed with the extra share, rounded up.",
      "format": "integer"
    },
    "fill": {
      "label": "Plants without extra",
      "description": "Bed area ÷ the area each plant takes, rounded up.",
      "format": "integer"
    },
    "perPlant": {
      "label": "Area per plant (ft²)",
      "description": "The area each plant takes: spacing² (square) or spacing² × 0.866 (triangular).",
      "format": "number"
    },
    "perPlantM2": {
      "label": "Area per plant (m²)",
      "description": "The same area in square metres.",
      "format": "number"
    },
    "rows": {
      "label": "Row spacing (in)",
      "description": "The distance between rows: the spacing, or 0.866 × the spacing for a triangular grid.",
      "format": "number"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "by": "sides",
      "l": 3.048,
      "w": 3.048,
      "a": 9.290304,
      "s": 0.30479999999999996,
      "grid": "square",
      "extra": 5
    },
    "outputs": {
      "plants": 105,
      "fill": 100,
      "perPlant": 1,
      "perPlantM2": 0.09290304,
      "rows": 12
    },
    "text": "Buy 105 plants (100 to fill the bed, plus extra)."
  },
  "examples": [
    {
      "given": {
        "by": "sides",
        "l": 3.048,
        "w": 3.048,
        "s": 0.30479999999999996,
        "grid": "square",
        "extra": 0
      },
      "expect": {
        "plants": 100,
        "fill": 100,
        "perPlant": 1,
        "rows": 12
      },
      "source": "University of Missouri Extension, G6835 Ground Covers (Table 1: 100 plants cover 100 ft² at 12 in and 225 ft² at 18 in), https://extension.missouri.edu/publications/g6835; Bloomin Designs Nursery, Plant Calculator (square: area ÷ (spacing × spacing); triangular rows 0.866 × spacing apart; order 5–10% extra), https://www.bloomindesigns.com/plant-calculator/"
    },
    {
      "given": {
        "by": "area",
        "a": 20.903184000000003,
        "s": 0.4572,
        "grid": "square",
        "extra": 5
      },
      "expect": {
        "fill": 100,
        "plants": 105,
        "perPlant": 2.25
      },
      "source": "University of Missouri Extension, G6835 Ground Covers (Table 1: 100 plants cover 100 ft² at 12 in and 225 ft² at 18 in), https://extension.missouri.edu/publications/g6835; Plant Addicts, Free Plant Spacing Calculator (triangular row spacing = 0.866 × spacing; add 5% extra), https://plantaddicts.com/free-plant-spacing-calculator/ (5% extra); hand calculation in content.mdx: 225 ÷ 2.25 = 100, × 1.05 = 105"
    },
    {
      "given": {
        "by": "area",
        "a": 9.290304,
        "s": 0.30479999999999996,
        "grid": "triangle",
        "extra": 0
      },
      "expect": {
        "fill": 116,
        "perPlant": 0.8660254037844386,
        "rows": 10.392304845413264
      },
      "source": "Bloomin Designs Nursery, Plant Calculator (square: area ÷ (spacing × spacing); triangular rows 0.866 × spacing apart; order 5–10% extra), https://www.bloomindesigns.com/plant-calculator/ (rows 0.866 × spacing apart; about 15% more plants); hand calculation in content.mdx: 100 ÷ 0.8660 = 115.47, rounded up 116",
      "tolerance": 1e-12
    },
    {
      "given": {
        "by": "sides",
        "l": 3,
        "w": 1.2,
        "s": 0.3,
        "grid": "square",
        "extra": 10
      },
      "expect": {
        "fill": 40,
        "plants": 44,
        "perPlantM2": 0.09
      },
      "source": "hand calculation in content.mdx: 3.6 m² ÷ 0.09 m² = 40, × 1.1 = 44; Bloomin Designs Nursery, Plant Calculator (square: area ÷ (spacing × spacing); triangular rows 0.866 × spacing apart; order 5–10% extra), https://www.bloomindesigns.com/plant-calculator/"
    }
  ],
  "sources": [
    "Bloomin Designs Nursery, Plant Calculator: square spacing divides the area by spacing × spacing; triangular rows are 0.866 (sine of 60°) × the spacing apart and need about 15% more plants; order 5–10% extra. https://www.bloomindesigns.com/plant-calculator/ (retrieved 2026-10-02)",
    "Plant Addicts, Free Plant Spacing Calculator: triangular row spacing = 0.866 × spacing; option to add 5% extra. https://plantaddicts.com/free-plant-spacing-calculator/ (retrieved 2026-10-02)",
    "University of Missouri Extension, G6835 Ground Covers, Table 1: area covered by 100 plants at different planting distances (12 in: 100 ft², 18 in: 225 ft²); staggered rows give the quickest cover. https://extension.missouri.edu/publications/g6835 (retrieved 2026-10-02)"
  ],
  "related": [
    "mulch",
    "soil",
    "square-footage",
    "gravel"
  ],
  "changelog": []
}
