





Premade Metallic Flex Patches Sample $0.01 -Add to Cart
From $8.81 No Setup or Art Fees
Metallic Flex Patches deliver a bold, professional finish with a striking Metal 3D effect that brings any design to life. Crafted with custom shapes and clean edges, these patches ensure a seamless, high-quality look.
Watch - Apply with a Heatpress
Patch Size Guide
-
Product
Preferred Size
-
Hat Square/Circle Patch
2 inches
-
Hat Rectangle Patch
4 inches
-
Front Left Chest Shirt
4 inches
-
Sleeve
3 inches
-
Back Neckline
3 inches
Select Your Patch Size:
Width (inches):
Height (inches):
We ensure your artwork stays proportional, even if the wrong height is selected. We will automatically calculate the height based on the width to maintain the original aspect ratio and avoid distortion. For specific dimensions, upload your artwork at the exact size you want it created. This guarantees accurate printing while preserving proportions. At Ninja Patches, your design will always retain its original shape and size, no matter the sizes selected, unless specifically asked.
Patch Size -
Your patch size is determined by taking the height and width, adding them together, and dividing by 2.
Example: 3W + 2H / 2 = 2.5" Patch
This is for pricing purposes only.
` ); const op1_selector = `.single-option-selector[data-option="option1"]`; ElementAvailibility ( op1_selector, 'setMinMax', 10, op1_selector ); }) .on(`click`, `height-ele .btn_increase, width-ele .btn_increase`, function( e ) { try { e.stopImmediatePropagation(); const item = $( this ).closest( `.customVariantWidget__item` ); const checkType = item.attr( `block-type` ); let getQty = item.find( `.inputEle` ).val(); const min = item.find( `.inputEle` ).attr( `min` ) * 1; const max = item.find( `.inputEle` ).attr( `max` ) * 1; if ( getQty == '' ) { getQty = min; } else { getQty = getQty * 1; } const afterIncrease = getQty + 0.5; if ( afterIncrease <= max ) { item.find( `.inputEle` ).val( afterIncrease ); selectNearestVariant(); } else { item.find( `.inputEle` ).val( max ); $( `width-ele + info max` ).addClass( `err` ); $( this ).closest( `.prodQuantity` ).addClass( `err` ); selectNearestVariant(); setTimeout(() => { $( `width-ele + info max` ).removeClass( `err` ); $( this ).closest( `.prodQuantity` ).removeClass( `err` ); }, 1000); } let isHeightVal = $( `.product__cart-functions .customVariantWidget height-ele .inputEle` ).val(); if ( isHeightVal != '' ) { $( `.anotherTransfer` ).removeClass( `disabled` ); } setWidthHeightProperties(); } catch ( err ) { console.log( `ERROR height-ele .btn_increase, width-ele .btn_increase`, err.message ); } }) .on(`click`, `height-ele .btn_decrease, width-ele .btn_decrease`, function( e ) { try { e.stopImmediatePropagation(); const item = $( this ).closest( `.customVariantWidget__item` ); const checkType = item.attr( `block-type` ); let getQty = item.find( `.inputEle` ).val(); const min = item.find( `.inputEle` ).attr( `min` ) * 1; const max = item.find( `.inputEle` ).attr( `max` ) * 1; if ( getQty == '' ) { getQty = min; } else { getQty = getQty * 1; } const afterDecrease = getQty - 0.5; if ( afterDecrease >= min ) { item.find( `.inputEle` ).val( afterDecrease ); selectNearestVariant(); } else { item.find( `.inputEle` ).val( min ); $( `width-ele + info min` ).addClass( `err` ); $( this ).closest( `.prodQuantity` ).addClass( `err` ); selectNearestVariant(); setTimeout(() => { $( `width-ele + info min` ).removeClass( `err` ); $( this ).closest( `.prodQuantity` ).removeClass( `err` ); }, 1000); } let isHeightVal = $( `.product__cart-functions .customVariantWidget height-ele .inputEle` ).val(); if ( isHeightVal != '' ) { $( `.anotherTransfer` ).removeClass( `disabled` ); } setWidthHeightProperties(); } catch ( err ) { console.log( `ERROR height-ele .btn_decrease, width-ele .btn_decrease`, err.message ); } }) .on(`keyup`, `height-ele .inputEle, width-ele .inputEle`, keyupDelay(function (e) { const item = $( this ).closest( `.customVariantWidget__item` ); const checkType = item.attr( `block-type` ); let getQty = item.find( `.inputEle` ).val() * 1; const min = item.find( `.inputEle` ).attr( `min` ) * 1; const max = item.find( `.inputEle` ).attr( `max` ) * 1; if ( isNaN( getQty ) ) { getQty = min; item.find( `.inputEle` ).val( min ); } if ( getQty >= min && getQty <= max ) { selectNearestVariant(); } else if ( getQty < min && getQty <= max ) { item.find( `.inputEle` ).val( min ); $( `width-ele + info min` ).addClass( `err` ); $( this ).closest( `.prodQuantity` ).addClass( `err` ); selectNearestVariant(); setTimeout(() => { $( `width-ele + info min` ).removeClass( `err` ); $( this ).closest( `.prodQuantity` ).removeClass( `err` ); }, 1000); } else if ( getQty >= min && getQty > max ) { item.find( `.inputEle` ).val( max ); $( `width-ele + info max` ).addClass( `err` ); $( this ).closest( `.prodQuantity` ).addClass( `err` ); selectNearestVariant(); setTimeout(() => { $( `width-ele + info max` ).removeClass( `err` ); $( this ).closest( `.prodQuantity` ).removeClass( `err` ); }, 1000); } let isHeightVal = $( `.product__cart-functions .customVariantWidget height-ele .inputEle` ).val(); if ( isHeightVal != '' ) { $( `.anotherTransfer` ).removeClass( `disabled` ); } setWidthHeightProperties(); }, 500)) function selectNearestVariant() { try { let getPatchSize = patchSize(); getPatchSize = getPatchSize * 1; // console.log ( 'getPatchSize', getPatchSize ); $( `.outputPatch` ).val( `${ getPatchSize }"` ); const heightVal = $( `height-ele .inputEle` ).val(); const widthVal = $( `width-ele .inputEle` ).val(); const sData = { "pid": currentPID, "width": widthVal, "height": heightVal, "patchSize": getPatchSize } localStorage.setItem( customWidget__storage, JSON.stringify( sData ) ); const isVariantAvailable = $( `.single-option-selector[data-option="option1"] > div > input[type="radio"][value='${ getPatchSize }"']` ).length; if ( isVariantAvailable > 0 ) { console.log ( 'c 1', ); $( `.single-option-selector[data-option="option1"] > div > input[type="radio"][value='${ getPatchSize }"'] + label.bcpo-front-button-label` ).click(); } else { let nearestID = ''; $( `.single-option-selector[data-option="option1"] > div > input.bcpo-front-button-option[type="radio"]` ).each(function() { let elVal = $( this ).val(); elVal = parseFloat( elVal ); if ( getPatchSize < elVal ) { nearestID = $( this ).attr( `id` ); return false; } }) if ( nearestID != '' ) { console.log ( 'c 2', ); $( `.single-option-selector[data-option="option1"] > div > input.bcpo-front-button-option[type="radio"]#${ nearestID } + label.bcpo-front-button-label` ).click(); } else { console.log ( 'c 3', ); $( `.single-option-selector[data-option="option1"] > div` ).last().find( `.bcpo-front-button-option` ).click(); } // console.log ( 'not matched varaint', nearestID ); } } catch ( err ) { console.log( `ERROR selectNearestVariant()`, err.message ); } } function patchSize() { const getWidth = $( `width-ele .inputEle` ).val() * 1; const getHeight = $( `height-ele .inputEle` ).val() * 1; return ( ( getWidth + getHeight ) / 2 ).toFixed( 2 ); } function keyupDelay(callback, ms) { var timer = 0; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { callback.apply(context, args); }, ms || 0); }; } function setMinMax( op1_selector ) { try { let getData = localStorage.getItem( customWidget__storage ); const op1_getMin = $( `${ op1_selector } > div` ).first().find( `label` ).text().trim(); const op1_getMax = $( `${ op1_selector } > div` ).last().find( `label` ).text().trim(); // $( `.customVariantWidget__item[block-type="height"] info` ).html( `
,
` ); $( `.customVariantWidget__item[block-type="width"] info` ).html( `
,
` ); // $( `.customVariantWidget__item[block-type="width"] info` ).html( `Min - ${ op1_getMin }, Max - ${ op1_getMax }` ); // $( `.customVariantWidget__item[block-type="height"] height-ele .inputEle` ) $( `.customVariantWidget__item[block-type="width"] width-ele .inputEle` ) .attr({'min': parseFloat( op1_getMin ), 'max': parseFloat( op1_getMax ) } ) .val( parseFloat( op1_getMin ) ); $( `.customVariantWidget__item[block-type="height"] height-ele .inputEle` ) .attr({'min': parseFloat( op1_getMin ), 'max': parseFloat( op1_getMax ) } ) // .val( parseFloat( op1_getMin ) ); .val( '' ); // $( `.customVariantWidget__item .outputPatch` ).val( op1_getMin ); $( `.customVariantWidget__item .outputPatch` ).val( '' ); if ( typeof getData !== 'undefined' && getData ) { getData = JSON.parse( getData ); console.log ( 'getData', getData ); const getCurrentVID = $( `[name="id"]` ).val(); if ( currentPID == getData.pid && getCurrentVID != defaultVariant ) { $( `.customVariantWidget__item[block-type="height"] height-ele .inputEle` ) .val( parseFloat( getData.height ) ); $( `.customVariantWidget__item[block-type="width"] width-ele .inputEle` ) .val( parseFloat( getData.width ) ); $( `.customVariantWidget__item .outputPatch` ).val( `${ getData.patchSize }"` ); } } let isHeightVal = $( `.product__cart-functions .customVariantWidget height-ele .inputEle` ).val(); if ( isHeightVal == '' ) { $( `.anotherTransfer` ).addClass( `disabled` ); } setWidthHeightProperties(); // console.log ( 'op1_getMin', parseFloat( op1_getMin ), `op1_getMax`, parseFloat( op1_getMax ) ); } catch ( err ) { console.log( `ERROR setMinMax`, err.message ); } } function setWidthHeightProperties() { try { $( `.customVariantWidget__formProperties` ).remove(); const heightVal = $( `height-ele .inputEle` ).val(); const widthVal = $( `width-ele .inputEle` ).val(); $( `.product-form > form` ).prepend( `
` ); } catch ( err ) { console.log( `ERROR setWidthHeightProperties()`, err.message ); } }
Finance with Buy Now Pay Later options
Ninja’s Mission: Carbon-neutral shipping on all orders
5465kg
shipping emissions removed
That's like...
13990
miles driven by an average gasoline-powered car
Our NinjaFlex Patch Examples
Satisfaction Guaranteed

3D EffectAdds Depth & Texture to Design

Reflective Chrome Finish

Perfect for All Apparel
Product Details
Take your designs to the next level with Metallic Flex Patches, crafted for a bold 3D effect that adds depth and dimension to any garment. These premium patches offer a reflective chrome finish in every color, ensuring a standout look with a sleek, eye-catching shine.
Designed for precision, Metallic Flex Patches feature custom shapes and clean edges, delivering a polished, professional appearance. Whether enhancing uniforms, sportswear, or branded apparel, these patches create a high-end, durable finish that lasts.
Features
- 3D Effect: Adds depth and texture to make your design pop
- Reflective Chrome Finish: Available in all colors for a sleek shine
- Custom Shapes & Clean Edges: Perfectly tailored to your unique design
- Professional Look: Elevates any garment with a premium touch
Satisfaction Guarantee
If you receive your patches with any production errorsplease submit anorder issue formwithin 45 days of receiving your products.We will be unable to replace or refund any orders brought to our attention after 45 days of confirmed delivery by our carriers.
Sometimes we will need your assistance to get the order right, and might request a photo or further instructions before reproducing an order, so we know how to make it right! We will never ask you to return products before we have an approval to reproduce a damaged or misprinted order.
Pressing Instructions
Click here to watch our patch pressing tutorials.
To ensure your patch looks professionally pressed every time, follow these four simple steps.
- Position Your Patch: Being that your patch will be pressed facing down, touching the bottom plate, you will first need to secure the patch to your garment with Thermal Tape (heat resistant tape) to ensure it stays in its desired location when being placed on your heat press.
- Load Garment Onto Heat Press face down: Now that your patch is taped in place, flip the garment over and place onto the heat press so the patch is facing downwards and touching the lower plate. This makes it easier to melt the low-melt glue on the back of the patch so that the patch will adhere to your garment. The goal is to melt the low-melt glue on the back of the patch, not the visible portion of the patch you’ll see when it’s adhered to the garment.
- Press: After laying the garment with the patch face down, lay a Protective Guard Sheet over it to protect your garment from the iron, then press for 25 seconds at 335°F with 50-60 PSI or hard pressure. After pressing, remove the garment from the press and allow it to cool for at least 30 seconds before removing the thermal tape. This allows the melted glue to solidify, thereby bonding it to your garment.
- For Thicker Fabrics (Hoodies, Jackets, etc.): If after following these instructions, the patch isn’t adhering to your garment, it could be because the garment you’re using is made of thick material, such as a hoodie, jacket, etc. If this is the case, tape your patch to the garment and flip the garment inside out. Then, lay the garment onto the heat press so that the back of the patch is facing up. Lay a piece of parchment paper over the garment and press for 25 seconds at 335°F with 70-80 PSI or hard pressure.
- For Hats: For PVC Rubber patches, top and bottom heat is REQUIRED for the patch to correctly adhere to the hat. Top heat only will burn the rubber, even if a teflon sheet is used to cover it.
Art Upload Recommendations
All file types accepted, vector files are always preferred, raster art should be at least 300 DPI.
Care Instructions
To ensure the longevity and maintain the integrity of your patch, follow the care instructions below:
- Washing:Turn the garment inside out before washing. Use cold or lukewarm water, select a gentle cycle, and a mild detergent. Avoid hot water, bleach, and fabric softeners to prevent weakening the adhesive and fabric. Patches from Ninja Patches are built to last up to 50 wash cycles.
- Drying: Air dry the garment or use a low heat setting on your dryer. Avoid high heat as it can cause the patch to shrink or the adhesive to weaken.
Order Issues & Reprints
If you don’t love the patch you receive, please let us knowwithin 45 days of receiving your products, by phone, email, or live chat. We will be unable to replace or refund any orders brought to our attention after 45 days of confirmed delivery by our carriers.
Sometimes we will need your assistance to get the order right, and might request a photo or further instructions before reproducing an order. Just so we know how to make it right! We will never ask you to return products before we reproduce a damaged or misprinted order.
You can submit a formal order issue through our Order Issue Formhere.
You Upload Your Design, We Turn it into a PVC Patch

