The Background Problem
Supplier product images are never consistent. One supplier shoots on a gray studio backdrop. Another uses a colored tabletop. A third sends photos taken on a warehouse shelf with cardboard boxes visible in the frame. Someone in purchasing thought it was fine to photograph the product on a kitchen counter.
Your storefront needs clean, uniform backgrounds. Marketplaces are even stricter. Amazon requires a pure white background (RGB 255, 255, 255) for main product images. Shopify themes assume clean backgrounds for grid layouts. eBay listings with white backgrounds get higher click-through rates than those with cluttered ones.
The gap between what suppliers send and what marketplaces accept is where time and money disappear.
The Manual Editing Tax
The traditional fix is Photoshop. Someone opens each image, selects the product with the pen tool or magic wand, deletes the background, fills with white, exports. A skilled editor handles maybe 30 images per hour for clean studio shots. For complex products with fine edges — jewelry, electronics with cables, clothing with translucent fabric — it drops to 10-15 per hour.
Outsourcing to editing services costs $0.50 to $2.00 per image. For a catalog of 2,000 SKUs, that’s $1,000 to $4,000 per import cycle. Turnaround is 24-48 hours on a good day, longer during peak season when every seller is updating listings.
Neither option scales. When a supplier sends 500 new images on a Monday morning, you need them live by Wednesday. Manual editing becomes the bottleneck.
One Operation, Clean Background
The Image Transformation API’s remove_background operation strips the background from a product image in a single API call. It detects the product, separates it from the background, and outputs the result.
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });
const { data: { buffer: cleanImageBase64 } } = await client.transform({
file: { type: "url", name: "product.jpg", url: "https://cdn.example.com/supplier/SKU-001.jpg" },
operations: [
{ type: "remove_background", background_hex_color: "#FFFFFF" },
],
});
const cleanImageBuffer = Buffer.from(cleanImageBase64, "base64");
The background_hex_color parameter fills the removed area with the specified color. Set it to #FFFFFF for marketplace-compliant white. Set it to your brand color for on-site listings. Omit it entirely on PNG or WebP inputs to get a transparent background.
For JPEG inputs, omitting background_hex_color automatically fills with white — JPEG doesn’t support transparency, so the API handles the sensible default.
Marketplace-Ready Pipeline
Background removal alone gets you 80% of the way there. A complete marketplace pipeline adds resizing, sharpening, and format conversion. All in one API call.
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });
const result = await client.transform({
file: { type: "url", name: "product.jpg", url: "https://cdn.example.com/supplier/SKU-001.jpg" },
operations: [
{ type: "remove_background", background_hex_color: "#FFFFFF" },
{ type: "resize", width_in_px: 1600, height_in_px: 1600, fit: "contain" },
{ type: "sharpen", sigma: 0.5 },
{ type: "convert", format: "jpeg", quality: 90 },
],
});
This pipeline removes the background and fills with white, resizes to 1600x1600 with contain fit so the product sits inside the frame without cropping, applies a light sharpen to restore edge detail, and converts to JPEG at 90% quality. That output meets Amazon’s main image requirements.
Swap the parameters for other marketplaces:
- Amazon — 1600px minimum on longest side, white background, JPEG
- Shopify — 2048x2048 recommended, white or transparent, WebP for performance
- eBay — 500px minimum, white background preferred, JPEG
Same pipeline structure. Different numbers.
Batch Processing a Supplier Catalog
A single image is a proof of concept. A real catalog import processes hundreds of images in parallel.
const supplierImages = [
{ sku: "SKU-001", url: "https://cdn.example.com/supplier/SKU-001.jpg" },
{ sku: "SKU-002", url: "https://cdn.example.com/supplier/SKU-002.jpg" },
{ sku: "SKU-003", url: "https://cdn.example.com/supplier/SKU-003.jpg" },
// ... hundreds more
];
const processProductImage = async (image: { sku: string; url: string }) => {
const { data: { buffer } } = await client.transform({
file: { type: "url", name: `${image.sku}.jpg`, url: image.url },
operations: [
{ type: "remove_background", background_hex_color: "#FFFFFF" },
{ type: "resize", width_in_px: 1600, height_in_px: 1600, fit: "contain" },
{ type: "sharpen", sigma: 0.5 },
{ type: "convert", format: "jpeg", quality: 90 },
],
});
return { sku: image.sku, buffer: Buffer.from(buffer, "base64") };
};
// Process in chunks to manage concurrency
const chunkSize = 10;
const allResults = [];
for (let i = 0; i < supplierImages.length; i += chunkSize) {
const chunk = supplierImages.slice(i, i + chunkSize);
const chunkResults = await Promise.all(chunk.map(processProductImage));
allResults.push(...chunkResults);
}
Ten concurrent requests is a reasonable starting point. For 500 supplier images, the entire catalog processes without anyone opening Photoshop.
Transparent Backgrounds for Design Flexibility
White backgrounds work for marketplace listings. But your own storefront might need more flexibility. Product images on colored hero sections, promotional banners, or email templates look better with transparent backgrounds — the design team composites them onto whatever background the layout needs.
For transparent output, use PNG or WebP and omit the background_hex_color parameter:
const operations = [
{ type: "remove_background" },
{ type: "convert", format: "png" },
];
The result is a PNG with the product on a fully transparent background. Your design team or frontend code places it on any surface without halos or fringe artifacts from a baked-in background color.
Generate both variants from the same source — white-background JPEG for marketplace listings, transparent PNG for on-site design — in two API calls per image.
The Complete Product Image Pipeline
Background removal is one piece. Combine it with smart_crop and upscale for a pipeline that handles every common supplier image problem.
A low-res supplier photo on a cluttered background, poorly composed:
const operations = [
{ type: "upscale", factor: 2 },
{ type: "remove_background", background_hex_color: "#FFFFFF" },
{ type: "smart_crop", width_in_px: 1000, height_in_px: 1000 },
{ type: "sharpen", sigma: 0.5 },
{ type: "convert", format: "webp", quality: 85 },
];
This upscales the image to double resolution, removes the background and fills with white, smart-crops to a 1000x1000 square centered on the product, sharpens, and converts to WebP. Five operations, one API call. The input is a messy supplier photo. The output is a clean, high-res, properly composed product thumbnail.
Order matters here. Upscaling first gives the background removal model more pixels to work with, which improves edge quality — especially on products with fine detail like jewelry or textured fabrics. Smart crop runs after background removal so it crops the product on a clean background rather than trying to detect the product through visual clutter.
When To Remove Backgrounds
Not every product image needs background removal. Professional studio shots on seamless white paper are already marketplace-ready. The operation is most valuable when:
- Supplier images arrive on colored or gray backdrops
- Products are photographed in situ — on shelves, tables, or floors
- Different suppliers use different studio setups, creating visual inconsistency across your catalog
- You’re listing on marketplaces with strict white-background requirements
- Your design team needs transparent PNGs for compositing
If every image in a catalog needs processing, add remove_background to the default pipeline and run it on every import. The cost of processing an image that was already on white is negligible compared to the cost of manually reviewing which images need it and which don’t.
Get Started
Check the docs for the full remove_background operation reference and all available pipeline operations. The TypeScript and Python SDKs handle authentication and response parsing.
Sign up for a free account — no credit card required. Take the worst supplier image in your catalog — the one shot on a kitchen counter — and run remove_background on it. Compare the output to what your editing team produces manually.