Will My Sofa Fit Through the Door?
A concrete, reproducible answer to the sofa-through-a-doorway question: how projected width changes with pose, why a conditional verdict is not a yes, and what the engine does and does not check.
- Published
- Updated
- Calculation version
- 2.0.0
- Maintenance
- These pages are maintained together with the calculation engine in this repository. A change to the geometry or verdict logic requires the published method statement and its automated checks to be updated in the same change. There is no separately credited editorial team and no external reviewer.
The question
Given a measured sofa and a measured doorway, does this particular sofa actually pass through — and which pose makes it possible?
Short answer
It depends on the pose, not just on the stated width. A sofa that is 900 mm wide will not pass an 800 mm clear opening while upright, but turning it onto its side can present a narrower silhouette to the doorway. The calculator tests six axis-aligned poses and reports the best one; when a pose change is required it returns a conditional result rather than a plain pass. That conditional is a real verdict, not a maybe. The worked example below shows the engine’s live output for exactly this situation.
Why this happens
The stated width is not the silhouette width
Furniture dimensions describe a box along its own axes. A doorway sees a two-dimensional silhouette. Rotate the box by ninety degrees and a different pair of dimensions becomes the width and height of that silhouette.
That is why comparing one number on a spec sheet with one number on a tape measure gives the wrong answer so often. The comparison has to be made after the pose is chosen.
What the three verdicts mean
PASS means the selected pose satisfies the doorway section and the static room volume with no blocking limitation. CONDITIONAL means something real is unresolved: a requested operating clearance cannot be met, no single pose satisfies both checks, or the current pose fails while another tested pose works. FAIL means a conflict has no resolution among the tested poses.
The interface renders the status produced by the engine. It never combines booleans on its own, so the words on screen and the numbers in the comparison table always come from the same calculation.
Passing the door is only half the question
The engine checks the doorway section and the room volume in the same pass and reports whether any single pose satisfies both. A sofa can clear the door and still not fit the room it is going into.
Neither check models the route between them. A narrow hall, a turn on a landing or a stairwell are outside version one — a conditional result is not a promise that the move itself will be easy.
Step by step
- 01
Measure the sofa on its own axes
Record length (front to back), width (left to right) and height as three numbers in one unit. Include fixed arms and back; decide separately whether legs or packaging come off, and measure the state you will actually move.
- 02
Measure the doorway’s clear opening
Take the smallest of three width readings and the lowest head height. Do not use the frame’s outside dimensions. Record frame depth if you can reach it.
- 03
Measure the destination room
Width, length and height of the usable rectangular volume. The room check is static: it asks whether the bounding box fits, not whether you can walk it into place.
- 04
Run the tool, then change the pose
Enter all values, read the overall status and the comparison table, then try the recommended pose. If a requested extra clearance is not met, the tool says so explicitly instead of quietly rounding it away.
Worked example: a 900 mm sofa at an 800 mm opening
A three-seat sofa measures 2100 mm long, 900 mm wide and 800 mm high. The doorway clears 800 mm in width and 2000 mm in height, with a 150 mm frame; the destination room is 3500 × 4500 × 2600 mm. No extra clearance is requested and the upright pose is selected. Every number here is an input. The status, the recommended pose and the remaining clearances in the table below are computed live by the engine.
Input data
| Item | Three-seat sofa |
|---|---|
| Length | 2100 mm |
| Width | 900 mm |
| Height | 800 mm |
| Clear width | 800 mm |
| Clear height | 2000 mm |
| Frame depth | 150 mm |
| Room width | 3500 mm |
| Room length | 4500 mm |
| Room height | 2600 mm |
| Extra clearance | 0 mm |
| Selected pose | Upright |
Calculation process
- 01The inputs are already in millimetres. In the upright pose the bounding box presents 900 mm of width to an 800 mm clear opening, so that particular pose cannot satisfy the section.
- 02The engine does not stop at the first failure. It evaluates all six axis-aligned poses for the doorway section and for the room volume, then checks whether any single pose satisfies both.
- 03Because a different tested pose changes the projected silhouette, the result is a conditional verdict with a recommended pose rather than a plain failure. The table below is the engine’s own output: the negative remaining width belongs to the selected upright pose, while the recommendation comes from the joint pose matrix.
Engine result, computed live
Every value in this table is produced at render time by the same engine that powers the calculator. The article supplies inputs only.
- Overall status
- CONDITIONAL
The geometry is not definitively clear. A local check needs a different posture, a blocking limitation applies, or no single posture satisfies both checks.
- Recommended pose
- Upright · quarter turn
| Comparison | Required | Available | Remaining |
|---|---|---|---|
| Doorway clear width | 900 | 800 | -100 |
| Doorway clear height | 800 | 2000 | 1200 |
| Room width | 900 | 3500 | 2600 |
| Room length | 2100 | 4500 | 2400 |
| Room height | 800 | 2600 | 1800 |
- DOORWAY_REQUIRES_POSE_CHANGE
- ROOM_FIT_PASS
Calculation version 2.0.0
Applicable range
One rectangular sofa-like box, one straight doorway section, six axis-aligned poses and a rectangular room treated as a static volume.
Limits of this example
- Only six axis-aligned poses are tested. A diagonal tilt that might squeeze through is not searched, so a conditional result is not proof that no physical solution exists.
- Upholstery compression, removing legs, detaching arms and unboxing are not modelled. If you move a different shape, measure that shape.
- The moving path, door leaf, handle, corners and stairs are not modelled.
- A silhouette exactly equal to the opening is treated as touching, not as a collision; real handling needs a margin.
Formulas used
Axis-aligned bounding box
h_box = |R| · h
R is one of the 3×3 rotation matrices for the six tested poses; |R| takes element-wise absolute value, so the resulting AABB extents are a permutation of length, width and height.
Section comparison
ΔW = W_clear − W_box(pose, width) ΔH = H_clear − H_box(pose, height)
Both must be non-negative in the same pose for the doorway section to pass.
Verdict composition
any FAIL → FAIL; any CONDITIONAL / no joint pose / blocking limitation → CONDITIONAL; else PASS
This is the engine’s merge rule. The UI displays the resulting overallStatus and must not rebuild it from local booleans.
Scope and limits
- Doorway assessment is SECTION_ONLY; room assessment is STATIC_VOLUME_ONLY. They are separate and reported separately.
- Continuous rotation angles are not supported (AXIS_ALIGNED_POSES_ONLY).
- Door leaves, handles, obstacles and frame-depth rotation are not modelled.
- Moving paths, corners and stairwells are not modelled (PATH_NOT_MODELLED / ROOM_PATH_NOT_MODELLED).
- Invalid or missing input yields a structured invalid-input failure, never a plausible-looking geometric verdict.
Common mistakes
Comparing the spec sheet width with the door width once
That tests one pose only. A sofa can fail upright and pass on its side because the silhouette swaps which two dimensions are compared.
Reading a conditional verdict as “probably fine”
CONDITIONAL has a specific cause: a pose change is needed, a requested clearance is unmet, or no single pose satisfies both checks. The reasons list names it.
Forgetting the room
A sofa can clear the door and still not fit the destination volume. The engine checks both and reports whether one pose satisfies both.
Assuming the tool models the hallway
It does not. Turning a corner or climbing stairs is outside version one, and no amount of pose switching changes that.
Run the fit calculator
Enter your own sofa, doorway and room numbers in the calculator and read the overall status together with the reasons list. Switching the pose updates the comparison table from the same engine, so you can see exactly which silhouette fits instead of trusting a single yes/no label.
Enter your own furniture, doorway and room dimensions to see the same comparisons for a real case.
Open the calculator