How these calculators work
Every figure this site publishes is produced by a small set of pure functions, and every one of those functions returns its own derivation rather than just a number — which is why the workings shown under a result cannot drift away from the result. This page sets out the formulas, the default allowances, and the assumptions each one rests on.
The principle
Curtain making has no single standard. A London workroom, a US drapery shop and a well-regarded sewing book will give three different heading allowances, and all three are defensible. A calculator that hides its assumptions and prints one number is therefore not being accurate — it is being confident about a choice it never told you it made.
So the rule here is: every assumption is a visible, editable input, and the arithmetic is on the page. If your workroom uses a 30 cm hem rather than 20 cm, change it and the answer changes. If you get a different figure from another site, the workings tell you which assumption differs.
A second rule follows from the first: the supporting text on every page is generated from the same functions. The worked example below is not typed out — it is the return value of the curtain calculation, rendered. A unit test pins those figures, so a change to the maths that contradicts the prose fails the build rather than shipping.
Rounding: always up, never to nearest
Every rounding step in every calculator rounds upward. This is deliberate and asymmetric, because the two errors are not equally bad. Buying 40 cm too much fabric costs a few pounds and goes in the offcuts box. Buying 20 cm too little means returning for more from a dye lot that may have sold out — and a curtain made from two dye lots is a curtain you will notice for years.
The one place this needs care is float arithmetic. A measurement entered in inches converts to something like 2560.0000000009 mm, and a naive rounding step against a 320 mm pattern repeat would buy an entire extra repeat on the strength of a nanometre. Every rounding here treats a value within one micrometre of an exact multiple as exact.
Curtain fabric
Two independent quantities, multiplied at the end.
Across: how many widths
- Flat width each curtain must cover = (track + returns + overlap) × fullness ÷ number of curtains.
- Usable width from W joined widths = W × roll width − 2 × side hem − (W − 1) × 2 × seam allowance.
- Take the smallest whole W whose usable width reaches the requirement.
Note that side hems apply to the two outer edges only. The intuitive version — charging a side hem to every width — over-counts by roughly one hem per join. Interior edges are seams, and cost a seam allowance on each side of the join instead.
Solving per curtain and then multiplying by the number of curtains means a pair automatically takes an even number of widths, so both hang identically. A professional workroom may split one width down the middle to save fabric; the half-width option does that, and warns when it leaves an odd half over.
Down: how long each cut is
- Cut length = finished drop + heading allowance + hem allowance.
- On patterned fabric, round that up to a whole number of pattern repeats.
- Add one further repeat, so the first cut can be placed where you want it in the design.
Step 2 rounds up even when the cut misses a whole repeat by a millimetre, because every drop must begin at the same point in the pattern or the motifs will not align across the joins. Where that wastes most of a repeat on every cut, the calculator says so — lengthening the hem slightly will often absorb it rather than binning it.
Both halves are shared code rather than shared prose. The width solver in step 1 above is the same function the curtain fullness calculator runs, and the repeat rounding in step 2 is the same function behind the pattern repeat calculator — so a change to either rule changes all three pages at once, and none of them can quietly disagree with the others. The curtain lining figure uses that same width solver too, with the lining roll width and its own hems.
The worked example, generated
| Step | Working | Result |
|---|---|---|
| Flat fabric width needed, per curtain | (200 cm track + 0 cm returns + 0 cm overlap) × 2 fullness ÷ 2 curtains | 200 cm |
| Fabric widths per curtain | 2 × 140 cm − 16 cm side hems − 3 cm seams = 261 cm usable | 2 widths |
| Fullness you actually get | 2 × 261 cm ÷ 200 cm of track | 2.61× |
| Cut length before pattern matching | 220 cm drop + 15 cm heading + 20 cm hem | 255 cm |
| Cut length rounded to whole pattern repeats | ⌈255 cm ÷ 32 cm⌉ = 8 repeats × 32 cm | 256 cm |
| Total cuts to buy | 2 widths × 2 curtains | 4 cuts |
| Fabric for the cuts | 4 × 256 cm | 1024 cm |
| Pattern placement allowance | one extra repeat, so the first cut can start where you want in the pattern | 32 cm |
| Total fabric required | cuts + placement + shrinkage | 1056 cm |
| Buy, rounded up (nearest 10 cm) | 1056 cm rounded up to the next 0.1 m | 1060 cm |
Cutting layouts
The cushion and upholstery calculators solve a different shape of problem: a list of pieces of different sizes, cut from one roll. Pieces are laid in rows across the width, and a row costs the length of the longest piece in it. The packing sorts the pieces widest first, puts each into the first row with room for it, and opens a new row when none has.
That is first-fit-decreasing shelf packing, and it is a heuristic rather than an optimal layout. Someone cutting with the cloth in front of them can beat it — by nesting a shaped piece into a corner, by taking a small panel from an offcut. What it will not do is under-order, which puts its error in the same direction as every rounding rule above. The calculators print the plan row by row so you can see where it is being wasteful and decide for yourself.
A panel wider than the roll is not automatically impossible. Where a seam is ordinary practice — down the centre of a sofa back, under a cushion — the piece is cut in parts, each paying its own seam allowance. Where it is not, as across the face of a cushion, the calculator refuses instead of printing a figure that hides a defect.
Default allowances
These are the middle of the range UK workrooms use. They are defaults, not standards, and every one is editable on the calculator.
| Heading | Heading allowance | Hem | Minimum fullness |
|---|---|---|---|
| Pencil pleat | 15 cm | 20 cm | 2× |
| Pinch pleat | 20 cm | 20 cm | 2× |
| Eyelet | 25 cm | 20 cm | 1.8× |
| Tab top | 12 cm | 20 cm | 1.5× |
| Wave | 15 cm | 20 cm | 2× |
Side hems default to 8 cm per side, seams to 1.5 cm, lining to a 137 cm roll cut 2.5 cm shorter than the face fabric so it cannot show below the hem.
Cutting increments
Fabric is not sold continuously. The increment differs by region and by shop.
| Setting | Increment | Minimum cut | Where |
|---|---|---|---|
| Nearest 10 cm | 0.1 m | 0.5 m | Most UK and European shops cut roll goods to the nearest 10 cm. |
| Nearest half metre | 0.5 m | 0.5 m | Common for upholstery weights and wholesale bolts. |
| Whole metres | 1 m | 1 m | Some mills and online sellers cut only in whole metres. |
| Nearest ⅛ yard | 0.125 yd | 0.25 yd | The standard cut at a US quilting counter. |
| Nearest ¼ yard | 0.25 yd | 0.5 yd | Common for general dress and home-furnishing fabrics in the US. |
| Exact requirement | — | — | No rounding — useful when you are cutting from fabric you already own. |
Units
All arithmetic happens in millimetres; units exist only where you type a number and where one is displayed. The conversions are exact by definition — one inch is exactly 25.4 mm and one yard is exactly 0.9144 m, agreed internationally in 1959 — so no conversion here introduces error of its own.
Nominal roll widths are a different matter. The trade labels the same cloth in both systems and rounds both labels, so "54 inch" and "140 cm" get used interchangeably despite being 2.84 cm apart.
| Sold as | Also labelled | Exact |
|---|---|---|
| 36 in | 90 cm | 91.44 cm |
| 44 in | 112 cm | 111.76 cm |
| 45 in | 115 cm | 114.3 cm |
| 54 in | 137 cm | 137.16 cm |
| 55 in | 140 cm | 139.7 cm |
| 60 in | 150 cm | 152.4 cm |
| 108 in | 274 cm | 274.32 cm |
Two places where the trade rounds and we do not
⅝ inch is not 1.5 cm. It is 15.875 mm against 15 mm. Half the sewing world treats them as interchangeable, and on a single seam they are. The seam allowance calculator carries the exact values because the difference compounds: a garment with ten seamed edges sewn metric from an imperial pattern finishes nearly 9 mm narrower than it was drafted, and the error is perfectly consistent, so nothing about the finished piece points at its cause.
One ounce per square yard is 33.905747 g/m², not 33.9. An ounce is 28.349523125 g by definition and a square yard is 0.83612736 m², so the conversion factor is exact and there is no reason to use a rounded one. The same applies to momme, the silk unit, which is 4.3399 g/m² rather than the 4.34 usually quoted.
What is deliberately not modelled
Each of these is a term with a settled trade meaning; the glossary defines them, and this section says what this site does about them.
- Half-drop pattern repeats. Where a motif steps down by half a repeat between adjacent widths rather than aligning straight across, each extra width needs a further half repeat. The calculator warns on every patterned fabric rather than guessing which kind it is.
- Railroading. Running a wide fabric sideways can avoid joins entirely and often halves the quantity. It is suggested where the roll is wide enough, but the calculation always assumes the fabric runs vertically, which is the usual case.
- Selvedge loss. Roll widths are taken as entered. If you know the usable width after trimming, enter that instead of the label.
- Area equivalence between roll widths is only offered with its caveats attached. It is correct for plain, non-directional fabric whose pieces re-nest freely, and wrong for everything else — so the fabric width converter flags the cases where it does not hold rather than printing a number you cannot rely on.
Found a result you disagree with?
Every calculator has a "Report a wrong result" link that opens an email pre-filled with the exact calculation, because the URL encodes every input. That makes a disagreement reproducible, which is the only kind worth having. Each tool also carries a method version number beside its date, so a figure from one month can be told apart from a figure from the next.