Room Layout Planner
Drag to arrange · exact measurements in the inspector
{{ workspaceStatusText }}
The drawing and exports retain your last valid plan.
Unapplied measurements: apply them to save before arranging or switching pieces.
{{ plan.name }}
{{ plan.source==='sample' ? 'Editable sample' : 'Your dimensions' }}- {{ p.label }} · {{ measure(p.occupied_width_mm) }} × {{ measure(p.occupied_depth_mm) }}
Top-left origin. Proportional view; use labels, not a ruler on screen. Drag snaps to 1 cm; arrows move 1 cm, Shift + arrows 10 cm. R rotates, Delete removes.
Geometry checks
- {{ warning }}
No overlap, boundary or pair-gap warnings.
Show {{ facts.warnings.length-6 }} more geometry warnings
- {{ warning }}
Gap preference applies between furniture only. Wall offsets may be zero. No doors, obstacles, opening swings or usable routes are modelled; this is not a safety or compliance check.
Keep your plan
{{ plan.name }} · simplified-room-plan version 1 · {{ measure(plan.width_mm) }} × {{ measure(plan.depth_mm) }} · {{ facts.pieces.length }} pieces · {{ plan.source==='sample'?'sample dimensions':'user-entered dimensions' }}
{{ storageText }} Only the plan and display units are saved here. Browser storage can be cleared. Export a JSON backup to continue later; imported files replace the plan only after validation and confirmation.
{{ formError }}
Dimensioned shopping note
{{ shoppingNote }}{{ exportStatus }}
Similar tools
- Flooring Calculator Estimate flooring boxes from measured area and carton coverage, then account for waste, full-box rounding, spare stock, tax, and cost.
- Paint Calculator Estimate wall and ceiling paint from measured area and openings using coat count, product coverage, waste allowance and whole-container rounding.
- Wallpaper Calculator Estimate wallpaper rolls from wall dimensions and full-strip yield while accounting for pattern repeat, openings, waste and cost before ordering.
- Carpet Calculator Estimate carpet order quantity and cost from room size and roll width with a cut-direction plan for seams plus offcuts, pattern repeat and waste allowance.
A sofa that fits along a wall may still project too far toward a table. A measured room plan makes that relationship visible before furniture is bought or moved. It shows a plan view, looking down from above, and represents each piece by its footprint: the horizontal space occupied by its outer dimensions. Comparing those footprints helps establish where furniture could go and which arrangements deserve a closer physical check.
Room measurements need a consistent reference. Inside width and depth describe the space between the chosen inside wall faces, while furniture positions are measured from the same reference corner throughout. Mixing a measurement from a wall face with one from the front of a skirting board shifts the apparent position. Projections, fixed fittings, and an irregular room shape also need attention because a simple room rectangle does not describe them.
Product width and depth should cover the complete item, including its outer frame or arms, rather than just a seat, mattress, or tabletop inset. Those original product dimensions remain the same when furniture turns. Its occupied width and depth on the plan change with orientation: after a quarter-turn, the original depth runs across the room and the original width runs down it. The footprint keeps the same area, but its relationship to nearby walls and furniture changes.
A wall offset is the distance from a footprint edge to the corresponding room boundary. A furniture gap is the shortest distance between two footprints. Touching edges have no gap, although the pieces do not overlap. Overlap means the rectangles share some area. Moving a piece to increase one gap can reduce another, so a room's total floor area alone cannot establish whether an arrangement works.
Space needed during use extends beyond a closed, stationary footprint. Drawers and cabinet doors open, chairs pull away from tables, and some furniture unfolds or reclines. A gap between two corners does not establish a usable route through the room. Height, openings, fixed obstacles, and the delivery route require separate checks. A chosen spacing preference is useful for comparing arrangements, but it does not establish accessibility or safety.
A scaled plan preserves the proportions between measurements. It does not make an image on a screen or a printed sheet a calibrated ruler. Dimension labels and consistent units provide the basis for comparison, and their usefulness depends on the original measurements. Before buying, the actual room and the complete product dimensions, including space needed in use, need physical verification.
How to Use This Tool:
A new plan opens with an editable 480 × 360 cm sample room, three example pieces, and a 60 cm preferred gap. A valid plan saved in this browser is restored instead. Sample sizes are starting points, not product specifications or recommended clearances.
- Choose Display units, then enter the room's Inside width, Inside depth, and Preferred gap between pieces. For your own dimensions, select My measurements under Dimension source and select Apply measurements. Editing numbers alone does not change the sample designation.
- Select an existing footprint or use Starting footprint and Add to create another. Open Selected piece · exact dimensions to enter its product reference, actual width and depth, and exact top-left position. On a narrow screen, footprint numbers match the dimensioned legend.
Either Apply measurements button applies the pending room and selected-piece fields together. Apply or discard those fields before arranging, switching pieces or units, or using history. If a value is rejected, correct it and apply again, or choose Discard unapplied fields. The drawing and exports keep the last valid plan.
- Arrange pieces by dragging with a mouse or touch, then release to apply the move and update geometry checks. Use Rotate 90° to change orientation. Undo and Redo let you compare arrangements without re-entering measurements.
Dragging snaps to 1 cm. With the drawing or a piece focused, arrow keys move 1 cm and Shift + arrows move 10 cm. The directional buttons also move 10 cm. R rotates; Delete or Backspace removes. Outside input fields and selection controls, Ctrl or Cmd + Z undoes a change, and adding Shift redoes it. Movement increments stay the same when inches are displayed.
- Review Geometry checks, then inspect the selected piece's Wall offsets and Gaps to other furniture. Correct misplaced coordinates or inaccurate dimensions before deciding whether a remaining gap suits the intended use.
- Download the editable JSON to keep a plan you can reopen, and copy or download the Dimensioned shopping note for checking products against the room. SVG and PNG drawings provide a visual handoff. Apply pending measurements and finish dragging before taking any of these copies.
Interpreting Results:
Geometry warnings identify conflicts in the entered rectangles. They do not prevent an otherwise valid plan from being saved or downloaded, so an export can still contain an arrangement that needs correction.
- Outside the room. A negative wall offset identifies the boundary crossed. Check the original dimensions, orientation, and position before moving the piece back inside.
- Overlap. Two footprints share area. Check their complete product sizes and positions. A zero gap by itself is insufficient to distinguish overlap from touching; the overlap label makes that distinction.
- Below preference. The shortest furniture gap is below your chosen value. Equality meets the preference, subject to the tiny numerical tolerance described below. This preference applies only between furniture pieces, so a piece can sit against a wall without a gap warning.
The shopping note records original product dimensions as well as rotated occupied dimensions, positions, signed wall offsets, every furniture-pair gap, and warnings. It also identifies sample or user-entered dimensions. Use the original product measurements when comparing a listing, and the occupied dimensions when checking its arrangement. Neither source designation verifies a measurement.
SVG and PNG drawings retain proportional geometry, dimension labels, units, the sample or user designation, the grid, and geometric limitations. Their physical size changes with viewing and printing settings. Use the labels for measurements; the exported image does not establish a fixed physical print scale.
A plan with no geometry warnings has passed only the rectangle checks. Doors, windows, fixed obstacles, opening swings, furniture in use, and human routes are not modelled. No usable-floor-area calculation, fit score, height check, or 3D model is provided. Verify those physical conditions separately; the result does not establish accessibility, fire safety, or building-code compliance.
Technical Details:
Each footprint is a rectangle with edges parallel to the room boundaries. Its position begins at the inside top-left corner of the room: x increases to the right and y increases downward. Distances are calculated from these coordinates and the occupied dimensions.
Formula Core
Millimetres are the canonical unit, meaning the retained measurements use millimetres regardless of the display choice. For an entered length l, the conversion factor f is 10 for centimetres, exactly 25.4 for inches, and 1,000 for metres. Multiplication converts the entry to millimetres; division by the same factor converts it for display.
Let W and D be the inside room width and depth in millimetres. The room area A is expressed in square metres by dividing their product by one million. It is the whole inside rectangle area, without a deduction for furniture.
Rotation and signed wall offsets
At 0° or 180°, occupied width and depth equal the original product width and depth. At 90° or 270°, they swap. Rotation keeps the occupied rectangle's top-left coordinates fixed; it does not turn the footprint around its centre. A turn can therefore change the right and bottom wall offsets while leaving the left and top offsets unchanged.
For occupied width w, occupied depth d, and top-left position x, y, the four offsets below measure the remaining distance to each room boundary. All quantities in these equations are millimetres. A negative offset places an edge beyond that boundary.
Shortest gap between two footprints
For pieces A and B, subscripts identify each piece's position and occupied dimensions. Horizontal separation Δx is zero when their horizontal ranges touch or overlap; otherwise it is the distance between those ranges. Vertical separation Δy follows the same rule. Combining the two gives the shortest gap g, including a diagonal corner-to-corner gap when the pieces are separated on both axes.
A zero gap can represent either contact or overlap. To distinguish them, the horizontal and vertical intersection lengths, i with subscripts x and y, measure how much the two ranges share. Both must be positive beyond the numerical tolerance for an overlap warning.
Comparison boundaries
The comparison tolerance ε is 0.0000001 mm. It handles tiny numerical differences and is not a physical measuring allowance. The chosen gap preference c and the calculated gap g are also in millimetres.
| Check | Rule | Meaning |
|---|---|---|
| Inside the room | Every signed wall offset is at least −ε. | Exact contact with a room boundary is allowed. |
| Overlap | Touching along an edge or at a corner is not overlap. | |
| Below preference | No overlap, and . | A gap smaller than the preference warns beyond the tolerance. |
| Meets preference | No overlap, and . | Equality passes this pair check; room-boundary checks remain independent. |
Overlap takes priority over a gap warning for the same pair. With a positive preference, touching pieces still have a gap warning. With a zero preference, touching produces no pair warning, but positive overlap still does. Every pair is checked, not only the nearest neighbour of the selected piece.
Accepted measurements and precision
All measurement values must be finite numbers. The limits below are inclusive; coordinates can deliberately place furniture outside the room so the boundary conflict remains visible.
| Quantity | Minimum | Maximum | Unit |
|---|---|---|---|
| Each inside room side | 100 | 30,000 | mm |
| Each product side | 10 | 10,000 | mm |
| Preferred furniture gap | 0 | 3,000 | mm |
| Each top-left coordinate | −10,000 | 40,000 | mm |
| Furniture count | 0 | 30 | pieces |
Plan names must be nonblank and no longer than 80 characters; furniture labels must be nonblank and no longer than 48. Rotation is limited to 0°, 90°, 180°, or 270°. An empty room plan is valid, although two pieces are needed for a pair-gap comparison.
Geometry uses retained binary floating-point values rather than rounded labels. General measurements and the shopping note show up to three decimal places in the selected unit; room area shows three decimals in square metres. Small footprint labels use up to one decimal place. Numeric entry fields and the inspector's wall offsets use up to six. An unchanged field retains its underlying value when other edits are applied.
Switching display units preserves the physical dimensions. For example, a retained width of 2,540 mm corresponds to 254 cm, 100 inches, or 2.54 m. No dimension is reinterpreted as the same number in a different unit. Movement commands round resulting coordinates to 0.001 mm. The visible grid is 500 mm in centimetre or metre display and 254 mm, or 10 inches, in inch display; its spacing is separate from drag snapping.
Warnings use the retained measurements, so a displayed gap may round to the preference while its actual value is slightly below it. Extra decimal places and the numerical tolerance do not establish the precision of a physical room measurement.
Saving and Privacy:
Room-plan calculations and file imports happen in your browser. Room labels and measurements are not put into the page URL or sent to a cloud service. Copying and downloading happen only when you request them. Applied changes normally save the plan and display units in this browser; reloading does not restore pending fields or undo history.
Undo and Redo retain up to 60 committed changes during the open session, including completed drags, measurement edits, and plan replacement. A new change clears redo. The editable JSON preserves the stored millimetre quantities and furniture identities without reducing them to the displayed precision. It contains the current valid plan, not unapplied fields, and provides a portable backup for another browser or device.
- Saving is unavailable. Current valid work remains available in memory and can still be downloaded. Keep an editable JSON copy before leaving or reloading; the browser save has not succeeded.
- A saved plan is damaged or unsupported. The existing saved record is preserved and an unsaved sample opens. Subsequent work remains unsaved until that record is explicitly reset. Importing a valid file alone does not remove this protection.
- Reset browser save & sample. Confirmation clears only this planner's browser save and replaces the open plan with the sample. The sample stays unsaved until the next committed edit. If clearing fails, the current plan remains available to export.
Import accepts the planner's version 1 JSON document with its original fields. Validation rejects unsupported versions, unknown or missing fields, duplicate furniture identities, invalid measurements or rotations, and blank required names. The file may contain at most 128,000 bytes and its JSON text at most 64,000 characters. A valid file replaces the open plan only after confirmation; rejection or cancellation preserves the current plan.
Apply pending fields and download an editable JSON backup before importing or resetting if you want to keep those edits. Either confirmed replacement can discard unapplied typing. An accepted import can be undone during the current session to restore the previous committed plan. Keep a downloaded editable copy because browser storage can also be cleared independently of the planner.
Worked Examples:
These hypothetical arrangements use a 400 × 300 cm room, with an area of 12 m². The chosen gaps illustrate the calculations and are not recommended spacings or observations of a real room.
A gap exactly at the preference
Place two 100 × 50 cm pieces without rotation. Piece A starts at x = 0, y = 0 cm, and piece B at x = 160, y = 0 cm. A ends at 100 cm, leaving 60 cm, or 600 mm, before B begins. With a 60 cm preference, the pair meets the preference exactly. Both pieces also touch the top room boundary, which does not trigger the furniture-gap check.
A diagonal gap between corners
Keep piece A in place and move B to x = 130, y = 90 cm. Their horizontal separation is 30 cm and their vertical separation is 40 cm. Those 300 mm and 400 mm components give a shortest diagonal gap of 500 mm, or 50 cm. A 60 cm preference now warns; a 50 cm preference passes. The result describes the closest corners and does not establish a 50 cm route through the room.
A quarter-turn that reaches both boundaries
With only one 100 × 50 cm piece, set x = 350 and y = 200 cm, then rotate it to 90°. Its occupied dimensions become 50 × 100 cm. Its right edge reaches 400 cm and its bottom edge reaches 300 cm, giving zero right and bottom offsets and an exact fit within the rectangle. Changing x to 350.0001 cm, or 3,500.001 mm, puts the right edge 0.001 mm outside and produces a boundary warning. This small change illustrates the numerical rule, not achievable room-measuring accuracy.
References:
- SI Units – Length, National Institute of Standards and Technology, updated September 19, 2025.