Sizing and Placing Heat-Transfer Vinyl for Cricut Cuts
HTV & Placement computes the cut size and placement for heat-transfer vinyl across garment types and sizes. It constrains the cut to the design's aspect ratio and the placement's limits, draws a to-scale placement diagram, and generates a batch cut list with a 12-inch roll-length estimate for size runs. It is a single-file, offline tool [1].
The problem
Getting a decal onto a shirt has two failure modes that both cost a blank. Size it wrong and a design meant for a toddler tee ends up sized for an adult, or a tall design runs off a hoodie's kangaroo pocket. Place it wrong and it sits too high or too low on the chest. Both are usually settled by holding the vinyl up to the shirt and guessing. HTV & Placement replaces the guess with the standard placement-chart numbers for the specific garment and size, and shows where the decal lands before anything is cut.
How it works
Pick the blank, the size, and the placement (full front, left chest, full back, or sleeve). Enter the design's width and height in any unit — only their ratio matters. The tool returns the cut dimensions in inches, the recommended maximum width and height for that garment/size/placement, and a plain-language placement instruction ("top edge 3 in below the collar seam, centered"). A permanent warning sits on the result: mirror the design before cutting; HTV goes shiny-side-down on the mat.
The diagram is drawn as an SVG to true scale from the garment's flat dimensions, with dashed seam lines, a translucent decal rectangle at the computed placement, and dimension callouts (the width with tick marks, the collar-offset distance) in the style of an engineering drawing. Selections persist to localStorage (htvplacement.v1).
The math
Cut dimensions
Width starts at the placement's recommended width but is capped at 11.5 in — a 12-inch roll or mat, minus margin. If the design's aspect ratio would then push the height past the placement's maximum, the height is capped instead and the width recomputed to preserve the ratio:
w = min(recommended_width, 11.5)
h = w / ratio
if h > max_height:
h = max_height
w = h × ratio // ratio preserved, height governs
This height cap is the mechanism that keeps a tall design off a hoodie's kangaroo pocket rather than letting it run long.
Batch roll estimate
The batch panel takes a quantity per size and holds the current design ratio across the whole run. The roll estimate packs pieces into rows across the 12-inch width, with half-inch gaps, and sums the row heights:
per_row = floor((11.5 + 0.5) / (piece_width + 0.5))
roll_length += ceil(qty / per_row) × (piece_height + 0.5)
Editing the config
Every garment number lives in the GARMENTS table at the top of the <script> block — six garment types across 27 size rows, each row carrying body dimensions and, per placement, a recommended width, collar offset, and maximum height. A row is built with the sz() helper:
sz("M", 20, 29, 10.5, 3, {cw:3.5, cdn:3, sw:3.5})
// label W L front-width collar-offset chest/sleeve opts
The two packing constants are also at the top: MAT_MAX = 11.5 (usable cut width) and GAP = 0.5 (spacing between pieces). These are house-tunable numbers — change them there and both the single-cut math and the batch estimate follow.
Limitations
- The recommended widths and collar offsets are standard placement-chart estimates, not gospel. They are a sensible default to be tuned to house taste in the
GARMENTStable; they do not account for a specific blank's cut or a customer's preference. - Body dimensions are nominal flat measurements per size. Real blanks vary by brand — measure the actual garment when it matters.
- The roll estimate is a packing lower bound plus gaps. Buy that plus scrap insurance; it does not model weeding waste or failed presses.
- The tool sizes and places; it does not cut. Mirroring, material settings, and press time still happen in Design Space and on the press.
References
- HTV Placement Calculator
- Cricut cutting mat / roll usable width (12 in nominal), the basis for the 11.5 in cut cap.