{"course":{"slug":"vector-and-print","title":"Vectors, Logos and Things That Get Printed","url":"https://addaly.com/learn/vector-and-print","level":"beginner","track":"create"},"lesson":{"slug":"offsets-and-the-miter-spike","title":"Offsets, and the spike that appears at a sharp corner","url":"https://addaly.com/learn/vector-and-print/offsets-and-the-miter-spike","position":14,"of":73,"minutes":8,"answer":"An offset runs parallel to the original, so a mitred corner at angle θ lands at offset ÷ sin(θ/2) from the point (5 mm becomes 29 mm at a 20° tip) which is why join.","keyIdea":"An offset runs parallel to the original, so a mitred corner at angle θ lands at `offset ÷ sin(θ/2)` from the point (5 mm becomes 29 mm at a 20° tip) which is why join style and miter limit exist and why round joins are the safe default."},"body":{"format":"markdown","text":"## Offset is not the same as a thicker stroke\n\nTwo operations look similar and behave completely differently.\n\n- **Outline stroke / stroke to path** takes a 2 mm stroke and turns it into a closed shape 2 mm wide, straddling the original path. The centreline is where your path was.\n- **Offset path / contour** takes a path and produces a *new* path a fixed distance away from it, on one side. The original stays where it was.\n\nYou want the first when preparing artwork for a cutter. You want the second for a sticker border, a keyline around a logo, a bleed contour, a CNC toolpath, or an embroidery underlay.\n\nWhere they live: Illustrator has Object ▸ Path ▸ *Offset Path* and Object ▸ Path ▸ *Outline Stroke*. Inkscape has Path ▸ *Outset* / *Inset* (fixed 2 px steps), Path ▸ *Dynamic Offset* (**Ctrl+J**, draggable and live), Path ▸ *Linked Offset*, and the *Offset* Live Path Effect for a numeric value. CorelDRAW has the interactive **Contour** tool, which does the same thing with a step count.\n\n## Why a sharp corner grows a spike\n\nOffset a rectangle outwards by 5 mm and every corner is still a right angle, 5 mm further out. Now offset a shape with a 20° point: the tip of a star, the point of an arrow, an italic serif.\n\nThe two offset edges run parallel to their originals. Extended outwards, they do not meet 5 mm from the tip. They meet much further out. At angle θ, the mitred tip sits at a distance of `offset ÷ sin(θ/2)` from the original point. At 20°, `sin(10°)` is 0.174, so a 5 mm offset puts the new tip **28.8 mm** away. At 10° it is 57 mm.\n\n> Figure: Where a 5 mm offset puts a sharp corner. Line chart of Distance from the original point, mm against Corner angle, degrees: Mitre join (15, 38.3) (20, 28.8) (30, 19.3) (45, 13.1) (60, 10) (90, 7.1) (120, 5.8); Round join (15, 5) (120, 5). A mitred tip lands at the offset divided by the sine of half the angle, so it runs away as the corner sharpens. A round join stays at the offset distance whatever the angle, which is why it is the safe default on anything you cannot inspect.\n\nThat is the spike. It is not a bug; it is what a parallel offset means.\n\nEvery implementation therefore offers a **join** setting with three options:\n\n- **Miter**: extend to the true intersection. Correct, and produces the spike.\n- **Round**: arc across at the offset radius. Always safe, slightly softens every corner.\n- **Bevel**: cut straight across. Flat corners.\n\nAnd a **miter limit**: the ratio of spike length to offset distance at which the program gives up and bevels instead. SVG and PDF default to 4, which switches over at roughly 29°.\n\n**Set joins to round on any offset you cannot inspect**, and set them deliberately on the ones you can.\n\n## Inner offsets eat themselves\n\nOffset inwards far enough and thin parts of the shape vanish, then reappear inside out. A 2 mm-wide bar offset inwards by 1.5 mm leaves a 0 mm bar; at 2 mm it self-intersects and most solvers produce a small backwards loop rather than nothing.\n\nThis matters for three real jobs:\n\n- **Embroidery underlay**, which is an inset of the shape. A thin serif with too much inset produces a loop the machine stitches as a knot.\n- **Screen-print underbase choke**, typically 0.3 to 0.5 mm inset.\n- **Laser kerf compensation**, where an interior cut-out must be offset inwards by half the kerf.\n\nCheck thin features explicitly after every inward offset. Measure the narrowest part of your shape before you choose the distance.\n\n## Corner rounding is a different tool again\n\n\"Round the corners of this rectangle by 4 mm\" is not an offset. Illustrator's *Live Corners* (drag the small circle widgets with the Direct Selection tool), Inkscape's rounded-rectangle handles and the *Corners* Live Path Effect, and CorelDRAW's *Fillet/Scallop/Chamfer* docker all do this properly, and all of them refuse when the requested radius is larger than the shorter adjacent edge.\n\nDo not fake a rounded corner by offsetting out and back in. It works, and it costs you nodes and precision each way.\n\n## One habit\n\nAfter any offset, zoom to 400% on the sharpest corner in the shape and look. The spike is either there or it is not, and it takes three seconds.\n\nAnd measure the result rather than trusting the dialog. Offset implementations differ: Inkscape's Inset and Outset move by a preference value in pixels, not by the number you had in mind, and CorelDRAW's Contour tool offsets by *step × offset*, so a 2-step contour at 1 mm reaches 2 mm. Draw a 50 mm square, offset it by 5 mm, and measure the result once in whatever program you use. You will know for the rest of your career which number that field means."},"check":{"question":"A 5 mm keyline is added around a star-shaped logo using Offset Path with mitre joins. The five outer points now extend nearly 30 mm past where the designer expected. What determines that distance?","options":[{"text":"The offset value is applied along the path rather than perpendicular to it, so it accumulates around each point.","correct":false,"tempting":"Offset is always perpendicular to the path. Nothing accumulates along the direction of travel, and the effect would be uniform rather than concentrated at points."},{"text":"The miter limit was set above 4, which multiplies the offset by the limit value at every corner.","correct":false,"tempting":"Reverses cause and effect: the limit is a cap that switches a long mitre to a bevel. Raising it permits the spike, but the length comes from the corner angle."},{"text":"The two offset edges stay parallel to their originals, so at a sharp angle θ they only meet at `offset ÷ sin(θ/2)` from the tip.","correct":true},{"text":"The star was drawn as a self-intersecting path, so the offset was computed on the winding boundary rather than the visible outline.","correct":false,"tempting":"A self-intersecting star changes which regions are filled, not how far a mitre extends; the same spike appears on a cleanly drawn star."}]},"prev":{"slug":"boolean-aftermath","title":"Booleans, and the mess they leave behind","url":"https://addaly.com/learn/vector-and-print/boolean-aftermath"},"next":{"slug":"transforms-as-arithmetic","title":"Transforms are arithmetic, so type the numbers","url":"https://addaly.com/learn/vector-and-print/transforms-as-arithmetic"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Offsets, and the spike that appears at a sharp corner', in Vectors, Logos and Things That Get Printed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/vector-and-print/offsets-and-the-miter-spike (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Offsets, and the spike that appears at a sharp corner","courseTitle":"Vectors, Logos and Things That Get Printed","module":{"index":2,"slug":"drawing-curves","title":"Drawing curves people will pay for"},"answer":null,"keyIdea":"An offset runs parallel to the original, so a mitred corner at angle θ lands at `offset ÷ sin(θ/2)` from the point (5 mm becomes 29 mm at a 20° tip) which is why join style and miter limit exist and why round joins are the safe default.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"line","title":"Where a 5 mm offset puts a sharp corner","series":[{"label":"Mitre join","points":[[15,38.3],[20,28.8],[30,19.3],[45,13.1],[60,10],[90,7.1],[120,5.8]]},{"label":"Round join","points":[[15,5],[120,5]]}],"xLabel":"Corner angle, degrees","yLabel":"Distance from the original point, mm","caption":"A mitred tip lands at the offset divided by the sine of half the angle, so it runs away as the corner sharpens. A round join stays at the offset distance whatever the angle, which is why it is the safe default on anything you cannot inspect."},"alt":"Figure: Where a 5 mm offset puts a sharp corner. Line chart of Distance from the original point, mm against Corner angle, degrees: Mitre join (15, 38.3) (20, 28.8) (30, 19.3) (45, 13.1) (60, 10) (90, 7.1) (120, 5.8); Round join (15, 5) (120, 5). A mitred tip lands at the offset divided by the sine of half the angle, so it runs away as the corner sharpens. A round join stays at the offset distance whatever the angle, which is why it is the safe default on anything you cannot inspect."}},"blocks":[{"t":"h2","id":"offset-is-not-the-same-as-a-thicker-stroke","runs":[{"text":"Offset is not the same as a thicker stroke"}]},{"t":"p","runs":[{"text":"Two operations look similar and behave completely differently."}]},{"t":"ul","items":[[{"text":"Outline stroke / stroke to path","b":true},{"text":" takes a 2 mm stroke and turns it into a closed shape 2 mm wide, straddling the original path. The centreline is where your path was."}],[{"text":"Offset path / contour","b":true},{"text":" takes a path and produces a "},{"text":"new","i":true},{"text":" path a fixed distance away from it, on one side. The original stays where it was."}]]},{"t":"p","runs":[{"text":"You want the first when preparing artwork for a cutter. You want the second for a sticker border, a keyline around a logo, a bleed contour, a CNC toolpath, or an embroidery underlay."}]},{"t":"p","runs":[{"text":"Where they live: Illustrator has Object ▸ Path ▸ "},{"text":"Offset Path","i":true},{"text":" and Object ▸ Path ▸ "},{"text":"Outline Stroke","i":true},{"text":". Inkscape has Path ▸ "},{"text":"Outset","i":true},{"text":" / "},{"text":"Inset","i":true},{"text":" (fixed 2 px steps), Path ▸ "},{"text":"Dynamic Offset","i":true},{"text":" ("},{"text":"Ctrl+J","b":true},{"text":", draggable and live), Path ▸ "},{"text":"Linked Offset","i":true},{"text":", and the "},{"text":"Offset","i":true},{"text":" Live Path Effect for a numeric value. CorelDRAW has the interactive "},{"text":"Contour","b":true},{"text":" tool, which does the same thing with a step count."}]},{"t":"h2","id":"why-a-sharp-corner-grows-a-spike","runs":[{"text":"Why a sharp corner grows a spike"}]},{"t":"p","runs":[{"text":"Offset a rectangle outwards by 5 mm and every corner is still a right angle, 5 mm further out. Now offset a shape with a 20° point: the tip of a star, the point of an arrow, an italic serif."}]},{"t":"p","runs":[{"text":"The two offset edges run parallel to their originals. Extended outwards, they do not meet 5 mm from the tip. They meet much further out. At angle θ, the mitred tip sits at a distance of "},{"text":"offset ÷ sin(θ/2)","code":true},{"text":" from the original point. At 20°, "},{"text":"sin(10°)","code":true},{"text":" is 0.174, so a 5 mm offset puts the new tip "},{"text":"28.8 mm","b":true},{"text":" away. At 10° it is 57 mm."}]},{"t":"p","runs":[{"text":"That is the spike. It is not a bug; it is what a parallel offset means."}]},{"t":"p","runs":[{"text":"Every implementation therefore offers a "},{"text":"join","b":true},{"text":" setting with three options:"}]},{"t":"ul","items":[[{"text":"Miter","b":true},{"text":": extend to the true intersection. Correct, and produces the spike."}],[{"text":"Round","b":true},{"text":": arc across at the offset radius. Always safe, slightly softens every corner."}],[{"text":"Bevel","b":true},{"text":": cut straight across. Flat corners."}]]},{"t":"p","runs":[{"text":"And a "},{"text":"miter limit","b":true},{"text":": the ratio of spike length to offset distance at which the program gives up and bevels instead. SVG and PDF default to 4, which switches over at roughly 29°."}]},{"t":"p","runs":[{"text":"Set joins to round on any offset you cannot inspect","b":true},{"text":", and set them deliberately on the ones you can."}]},{"t":"h2","id":"inner-offsets-eat-themselves","runs":[{"text":"Inner offsets eat themselves"}]},{"t":"p","runs":[{"text":"Offset inwards far enough and thin parts of the shape vanish, then reappear inside out. A 2 mm-wide bar offset inwards by 1.5 mm leaves a 0 mm bar; at 2 mm it self-intersects and most solvers produce a small backwards loop rather than nothing."}]},{"t":"p","runs":[{"text":"This matters for three real jobs:"}]},{"t":"ul","items":[[{"text":"Embroidery underlay","b":true},{"text":", which is an inset of the shape. A thin serif with too much inset produces a loop the machine stitches as a knot."}],[{"text":"Screen-print underbase choke","b":true},{"text":", typically 0.3 to 0.5 mm inset."}],[{"text":"Laser kerf compensation","b":true},{"text":", where an interior cut-out must be offset inwards by half the kerf."}]]},{"t":"p","runs":[{"text":"Check thin features explicitly after every inward offset. Measure the narrowest part of your shape before you choose the distance."}]},{"t":"h2","id":"corner-rounding-is-a-different-tool-again","runs":[{"text":"Corner rounding is a different tool again"}]},{"t":"p","runs":[{"text":"“Round the corners of this rectangle by 4 mm” is not an offset. Illustrator’s "},{"text":"Live Corners","i":true},{"text":" (drag the small circle widgets with the Direct Selection tool), Inkscape’s rounded-rectangle handles and the "},{"text":"Corners","i":true},{"text":" Live Path Effect, and CorelDRAW’s "},{"text":"Fillet/Scallop/Chamfer","i":true},{"text":" docker all do this properly, and all of them refuse when the requested radius is larger than the shorter adjacent edge."}]},{"t":"p","runs":[{"text":"Do not fake a rounded corner by offsetting out and back in. It works, and it costs you nodes and precision each way."}]},{"t":"h2","id":"one-habit","runs":[{"text":"One habit"}]},{"t":"p","runs":[{"text":"After any offset, zoom to 400% on the sharpest corner in the shape and look. The spike is either there or it is not, and it takes three seconds."}]},{"t":"p","runs":[{"text":"And measure the result rather than trusting the dialog. Offset implementations differ: Inkscape’s Inset and Outset move by a preference value in pixels, not by the number you had in mind, and CorelDRAW’s Contour tool offsets by "},{"text":"step × offset","i":true},{"text":", so a 2-step contour at 1 mm reaches 2 mm. Draw a 50 mm square, offset it by 5 mm, and measure the result once in whatever program you use. You will know for the rest of your career which number that field means."}]}],"check":{"question":[{"text":"A 5 mm keyline is added around a star-shaped logo using Offset Path with mitre joins. The five outer points now extend nearly 30 mm past where the designer expected. What determines that distance?"}],"options":[{"text":[{"text":"The offset value is applied along the path rather than perpendicular to it, so it accumulates around each point."}],"correct":false,"tempting":[{"text":"Offset is always perpendicular to the path. Nothing accumulates along the direction of travel, and the effect would be uniform rather than concentrated at points."}]},{"text":[{"text":"The miter limit was set above 4, which multiplies the offset by the limit value at every corner."}],"correct":false,"tempting":[{"text":"Reverses cause and effect: the limit is a cap that switches a long mitre to a bevel. Raising it permits the spike, but the length comes from the corner angle."}]},{"text":[{"text":"The two offset edges stay parallel to their originals, so at a sharp angle θ they only meet at "},{"text":"offset ÷ sin(θ/2)","code":true},{"text":" from the tip."}],"correct":true,"tempting":null},{"text":[{"text":"The star was drawn as a self-intersecting path, so the offset was computed on the winding boundary rather than the visible outline."}],"correct":false,"tempting":[{"text":"A self-intersecting star changes which regions are filled, not how far a mitre extends; the same spike appears on a cleanly drawn star."}]}],"order":[1,3,2,0],"why":null},"prev":{"slug":"boolean-aftermath","title":"Booleans, and the mess they leave behind","minutes":9},"next":{"slug":"transforms-as-arithmetic","title":"Transforms are arithmetic, so type the numbers","minutes":8}}}