My Shopify CSV import of 6,000 products is crawling. Is it broken or just slow?
A 6,000-plus product CSV import that crawls or seems to hang is usually a file-size and batching problem, not a Shopify outage. Here's how to speed it up and monitor it properly.
What's going on
I'm trying to import a CSV of just over 6,000 products into Shopify and it feels like it's taking minutes per product. At this rate the whole import will take hours, and I have no idea if it's actually working or silently choking on something. Is this normal, or am I doing something wrong?
This is a common experience with large one-time catalog imports, and it's almost always about file size and row complexity rather than a bug. Shopify's CSV importer enforces a 15 MB limit per file, and there's no separate published cap on the number of rows beyond that, which means a file's practical row limit depends entirely on how much data sits in each row. A product row with several variants, a long HTML description, and multiple image URLs takes up far more space and processing time than a bare row with just a title and price.
When merchants push several thousand fully-loaded rows through in a single upload, the import queues and processes in the background, and it can look like it's crawling even though it hasn't failed. The fix isn't a hidden setting, it's changing how the file is prepared and uploaded in the first place.
Why it happens
Shopify's native CSV importer is built for routine catalog maintenance, not high-throughput bulk processing. It validates and creates records row by row in the background, and every extra column, such as images, metafields, multiple variants, or long descriptions, adds processing overhead per row. A file that's technically under the 15 MB limit can still be enormous in row count and complexity, and the importer doesn't distinguish between many simple rows and fewer complex ones; it just works through whatever it's given.
Separately, stores that have grown past roughly 50,000 total product variants run into a cap on how many new variants can be created within a rolling 24-hour period, a limit that doesn't apply to Shopify Plus stores. That's a platform-stability safeguard rather than something adjustable in store settings, and it can make a large import look like it silently stalled partway through when it has actually hit that ceiling until it resets.
5 ways to fix it
Split the file into batches before you upload it, not after it stalls
Shopify enforces a 15 MB size limit per CSV for product, inventory, and customer imports, and there's no separate published cap on row count beyond that. A file of 6,000 rows with several images, variants, and metafields per product can approach that ceiling and process slowly as a result. Break the export into batches of roughly 500 to 1,000 products, test one small batch first to confirm your column mapping is correct, then upload the rest sequentially from the Products import screen in your admin. Smaller batches finish faster individually and make it far easier to isolate which batch produced an error if something goes wrong.
Trim the file to only the columns you actually need
A large share of import time goes into processing image URLs, long HTML description fields, and metafield columns. If your export tool included every possible column, cut the file down to only the fields you're actually changing, such as handle, title, price, and inventory, and handle images separately through a follow-up import or the bulk editor. Removing unused columns and shortening bloated description HTML noticeably reduces both file size and processing time.
Watch the import's progress on the import page instead of re-uploading
Shopify processes CSV imports as a background job and shows a live status on the import screen itself, then sends a summary email with any row-level errors once it finishes. For a large file, resist the urge to reload the page or start over just because it looks stalled. Re-uploading while the first import is still running can create duplicate products or mismatched variants, so check back on that screen rather than restarting.
Check whether you're near the variant-creation limit for high-SKU stores
Stores with more than roughly 50,000 total product variants are subject to a cap on how many new variants can be created within a 24-hour period (Shopify Plus stores are exempt from this specific limit). If a large import appears to partially fail with no obvious formatting problem, it's worth checking whether your store is near that threshold, since it's an easy-to-miss cause of imports that look stuck or only partly applied on very large catalogs.
For recurring large imports, a dedicated import app is worth the cost
If you're re-importing thousands of rows on a regular basis, such as supplier feeds, multi-location inventory syncs, or seasonal catalog refreshes, a third-party app built specifically for bulk CSV or Excel handling will typically process faster than the native importer, support scheduled imports, and report errors row by row instead of failing as one large batch. For a single one-time migration of a few thousand SKUs, the native importer split into batches is usually enough on its own.
Bottom line
A slow CSV import at this scale is almost always a file-size and row-complexity issue, not a sign that anything is broken. Splitting the export into batches of 500 to 1,000 products, trimming unused columns, and watching the import screen instead of re-uploading resolves this for the vast majority of one-time migrations. If bulk importing becomes a recurring part of running the catalog rather than a one-off task, a dedicated import app earns its cost; BesPoP doesn't have a tool built specifically for this problem, so for a single large migration the native importer with proper batching is the right call.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.