{"success":true,"version":"v1","request":{"tool":"get_calculator_schema","calculator_id":"plant-spacing"},"result":{"entity_type":"calculator","id":"plant-spacing","calculator_id":"plant-spacing","canonical_url":"https://tttkmbb.com/everyday/plant-spacing","name":"Plant Spacing Calculator","title":"Plant Spacing Calculator – Number of Plants for a Bed in Square or Triangular Layout","category":"everyday","category_name":"Everyday Life","tool_name":"calculate_plant_spacing","featured_mcp_tool":false,"description":"Computes how many plants fit in a rectangular bed from its length and width, the in-row spacing, the row spacing and the layout pattern (square grid or staggered triangular rows at 0.866 × row spacing), plus rows, plants per row and plants per square metre.","use_when":"You are planting a bed, border, hedge, vegetable plot or ground cover at a given spacing and need the plant count or the density per square metre.","do_not_use_when":"You are seeding a lawn by weight (use lawn-seed-fertilizer) or planting an irregular, non-rectangular area (split it into rectangles first).","inputs":[{"name":"bed_length_m","label":"Bed length","type":"number","unit":"m","required":true,"max":10000,"exclusive_min":0,"description":"Length of the bed (rows run along this side).","example":10},{"name":"bed_width_m","label":"Bed width","type":"number","unit":"m","required":true,"max":10000,"exclusive_min":0,"description":"Width of the bed (rows are spaced across this side).","example":2},{"name":"plant_spacing_m","label":"Plant spacing","type":"number","unit":"m","required":true,"max":100,"exclusive_min":0,"description":"Distance between plants within a row.","example":0.3},{"name":"row_spacing_m","label":"Row spacing","type":"number","unit":"m","required":false,"max":100,"exclusive_min":0,"description":"Distance between rows; defaults to plant_spacing_m. In the triangular pattern the rows are 0.866 × this value apart.","example":0.3},{"name":"pattern","label":"Pattern","type":"enum","required":false,"default":"square","values":[{"value":"square","label":"Square / rectangular grid","aliases":["grid","rectangular"]},{"value":"triangular","label":"Triangular (staggered, hexagonal)","aliases":["staggered","hexagonal","offset","diamond"]}],"description":"Square grid or staggered rows in which each plant sits between the two plants of the neighbouring row.","example":"square"},{"name":"edge_offset","label":"Half spacing from the edges","type":"boolean","required":false,"default":true,"description":"true: the first plant sits half a spacing in from each edge (count = floor(length / spacing)); false: plants start on the edge (count = floor(length / spacing) + 1).","example":true}],"outputs":[{"name":"plants_total","label":"Plants","type":"integer","decimals":4,"description":"Total number of plants that fit."},{"name":"plants_per_row","label":"Plants per row","type":"integer","decimals":4,"description":"Plants in a full row (first, third, fifth … row in the triangular pattern)."},{"name":"plants_per_alternate_row","label":"Plants per offset row","type":"integer","decimals":4,"description":"Plants in the offset rows of the triangular pattern (equal to plants_per_row for the square grid)."},{"name":"rows","label":"Rows","type":"integer","decimals":4,"description":"Number of rows across the bed width."},{"name":"row_spacing_m","label":"Row spacing used","type":"number","unit":"m","decimals":3,"description":"Distance between rows (row spacing × 0.866 for triangular)."},{"name":"plants_per_m2","label":"Plants per m²","type":"number","unit":"plants/m²","decimals":2,"description":"plants_total / bed area."},{"name":"plants_per_m2_theoretical","label":"Density of the pattern","type":"number","unit":"plants/m²","decimals":2,"description":"1 / (plant spacing × row spacing used), the density of an unbounded planting."},{"name":"spacing_cm","label":"Plant spacing","type":"number","unit":"cm","decimals":1,"description":"In-row spacing in centimetres."},{"name":"coverage_note","label":"Note","type":"string","decimals":4,"description":"Layout summary and comparison with the other pattern."}],"input_schema":{"type":"object","properties":{"bed_length_m":{"description":"Length of the bed (rows run along this side). Unit: m.","type":"number","maximum":10000,"exclusiveMinimum":0,"examples":[10],"x-unit":"m"},"bed_width_m":{"description":"Width of the bed (rows are spaced across this side). Unit: m.","type":"number","maximum":10000,"exclusiveMinimum":0,"examples":[2],"x-unit":"m"},"plant_spacing_m":{"description":"Distance between plants within a row. Unit: m.","type":"number","maximum":100,"exclusiveMinimum":0,"examples":[0.3],"x-unit":"m"},"row_spacing_m":{"description":"Distance between rows; defaults to plant_spacing_m. In the triangular pattern the rows are 0.866 × this value apart. Unit: m.","type":"number","maximum":100,"exclusiveMinimum":0,"examples":[0.3],"x-unit":"m"},"pattern":{"description":"Square grid or staggered rows in which each plant sits between the two plants of the neighbouring row.","type":"string","enum":["square","triangular"],"default":"square","examples":["square"]},"edge_offset":{"description":"true: the first plant sits half a spacing in from each edge (count = floor(length / spacing)); false: plants start on the edge (count = floor(length / spacing) + 1).","type":"boolean","default":true,"examples":[true]}},"additionalProperties":false,"required":["bed_length_m","bed_width_m","plant_spacing_m"]},"output_schema":{"type":"object","properties":{"plants_total":{"description":"Total number of plants that fit.","type":"integer"},"plants_per_row":{"description":"Plants in a full row (first, third, fifth … row in the triangular pattern).","type":"integer"},"plants_per_alternate_row":{"description":"Plants in the offset rows of the triangular pattern (equal to plants_per_row for the square grid).","type":"integer"},"rows":{"description":"Number of rows across the bed width.","type":"integer"},"row_spacing_m":{"description":"Distance between rows (row spacing × 0.866 for triangular). Unit: m.","type":"number","x-unit":"m"},"plants_per_m2":{"description":"plants_total / bed area. Unit: plants/m².","type":"number","x-unit":"plants/m²"},"plants_per_m2_theoretical":{"description":"1 / (plant spacing × row spacing used), the density of an unbounded planting. Unit: plants/m².","type":"number","x-unit":"plants/m²"},"spacing_cm":{"description":"In-row spacing in centimetres. Unit: cm.","type":"number","x-unit":"cm"},"coverage_note":{"description":"Layout summary and comparison with the other pattern.","type":"string"}}},"formula":"square: plants_per_row = floor(L / s) (+1 without edge offset), rows = floor(W / r) (+1), plants = plants_per_row × rows; triangular: h = 0.866 × r, rows = floor(W / h) (+1), full rows floor(L / s) (+1) plants, offset rows floor(L / s − 0.5) (+1) plants, rows alternate starting with a full row; plants_per_m2 = plants / (L × W); density = 1 / (s × h)","method":"Plants are placed on a grid whose first plant is half a spacing from the edge (or on the edge when edge_offset is false); the triangular pattern shifts every second row by half a spacing and brings rows to √3/2 = 0.866 of the spacing, giving 15.5 % more plants per area for the same distance between neighbours. Spacings should be the mature-spread distances given for the plant.","sources":[{"name":"Circle packing – square versus hexagonal (triangular) arrangements (Wikipedia)","url":"https://en.wikipedia.org/wiki/Circle_packing","type":"reference","retrieved_at":"2026-09-24"}],"freshness":{"type":"static","max_age_seconds":null,"note":"Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output."},"examples":[{"name":"10 × 2 m bed, 0.3 m square grid","inputs":{"bed_length_m":10,"bed_width_m":2,"plant_spacing_m":0.3,"pattern":"square"},"expected":{"plants_total":198,"plants_per_row":33,"rows":6,"row_spacing_m":0.3,"plants_per_m2":9.9,"spacing_cm":30},"url":"https://tttkmbb.com/api/v1/calculate/plant-spacing?bed_length_m=10&bed_width_m=2&plant_spacing_m=0.3&pattern=square"},{"name":"10 × 2 m bed, 0.3 m triangular","inputs":{"bed_length_m":10,"bed_width_m":2,"plant_spacing_m":0.3,"pattern":"triangular"},"expected":{"plants_total":228,"plants_per_row":33,"plants_per_alternate_row":32,"rows":7,"row_spacing_m":0.26,"plants_per_m2":11.4},"url":"https://tttkmbb.com/api/v1/calculate/plant-spacing?bed_length_m=10&bed_width_m=2&plant_spacing_m=0.3&pattern=triangular"}],"faq":[{"q":"Which spacing should I enter?","a":"The distance between plant centres recommended for the mature plant (label or nursery data), which is usually its mature spread; using a smaller spacing gives quicker cover at higher cost."},{"q":"Why does the triangular pattern fit more plants?","a":"Staggering the rows lets them sit 0.866 × the spacing apart while every plant keeps the same distance to its six neighbours, the hexagonal (densest) packing of circles."},{"q":"Does the count change if I start plants on the edge?","a":"Yes: with edge_offset false one more plant fits per row and one more row fits, but plants on the edge overhang the bed once mature."}],"tags":["plant spacing calculator","how many plants do i need","plants per square meter","triangular plant spacing","hedge spacing"],"related":[{"calculator_id":"lawn-seed-fertilizer","reason":"Seed and fertilizer for lawn areas."},{"calculator_id":"area","reason":"Convert the bed area between units."},{"calculator_id":"rectangle","reason":"Area and perimeter of the bed."}],"links":{"html":"https://tttkmbb.com/everyday/plant-spacing","markdown":"https://tttkmbb.com/everyday/plant-spacing.md","json":"https://tttkmbb.com/everyday/plant-spacing.json","api":"https://tttkmbb.com/api/v1/calculate/plant-spacing","schema":"https://tttkmbb.com/api/v1/calculators/plant-spacing","openapi":"https://tttkmbb.com/openapi.json","mcp":"https://tttkmbb.com/mcp"},"version":"v1","updated_at":"2026-09-24"},"timestamp":"2026-09-24T03:45:37Z"}