DEV Community

Cover image for How to bulk edit product descriptions in Shopify
Arvio AI
Arvio AI

Posted on Originally published at arvio.a.xyz

How to bulk edit product descriptions in Shopify

This is a repost. Originally published on the Arvio blog: https://arvio.a.xyz/blog/bulk-edit-product-descriptions-shopify. The canonical URL points back there.

Key takeaways

  • Shopify's built-in bulk editor can edit descriptions. The column is just switched off by default, which is why most people conclude it can't.
  • Typing — not writing, just typing — one 147-character description took 19.6 seconds in our test, and that was at a machine-steady pace faster than most people type. Fifty products is about 16 minutes of pure typing. Five hundred is nearly three hours.
  • A description-only CSV will not import. You need five columns, and one row per variant. The two error messages you'll hit are quoted in full below.
  • Shopify's current CSV template calls the columns URL handle and Description. The older names, Handle and Body (HTML), still import correctly — we imported 50 products with them on 19 August 2026.
  • The setting that silently loses your work is Overwrite products with matching handles. Leave it unticked and Shopify skips every product you were trying to change.

Published 21 August 2026 by Adot Technologies Inc, the team behind Arvio. Every step below was run in a live Shopify admin in August 2026; the timings are stopwatched, not estimated. Method in full at the end.

The video version

The same three methods on screen, in 6 minutes 57 seconds — including both CSV import failures exactly as the admin reports them, and the stopwatch running while one description is typed. Watch on YouTube.

The quick version

  1. Under ~50 products: Products → select → Bulk editColumns → tick Description. Edit them in a grid. Costs nothing, built in, and the fastest way to touch a lot of products by hand.
  2. Working in a spreadsheet, or handing the copy to someone else: export a product CSV, keep five columns, tick Overwrite products with matching handles, re-import.
  3. Past the point where writing them all by hand is realistic: generate drafts, review them, then publish the ones you approve.

Neither of the first two writes a single word for you. That's what the third section is for.

Why this is harder than it should be

Shopify's product admin is built around editing one product at a time. The bulk editor exists, but it opens with a default column set — title, price, inventory, status — and Description is not in it. There is no message telling you the column exists; you have to know to go looking in the Columns picker.

That single default is why the top results for this question are full of people saying the built-in editor can't do descriptions, and why so many merchants jump straight to a paid app for something their admin already does.

Method 1 — the built-in bulk editor

Products → tick the products you want → Bulk edit.

The checkbox in the header row selects everything on the page. Once the grid opens:

Click Columns (top right) and tick Description. That's the whole trick.

While you're in that picker, media, tags, product type, vendor, template and your sales channels are one tick away too, editable in the same grid.

Now every description is in one grid. Click a cell, type, move on, without a product page loading in between. Save when you're done.

The "Editing 15 products" thing is not a limit

Select fifty products and the grid header will tell you it's editing far fewer than fifty — 15, in our run. This looks like a cap and gets reported as one. It isn't. It's lazy loading: scroll down and the header climbs to 35, then 50. The full list of fifty is in the URL's ids= parameter the entire time.

What it actually saves you

We stopwatched it. Typing one real 147-character description — not composing it, just typing it — took 19.6 seconds.

Products Pure typing time
50 ~16 minutes
200 ~1 hour 5 minutes
500 ~2 hours 43 minutes

That's typing only. It excludes deciding what to say, which is the part that actually takes the time.

Method 2 — export, edit and re-import a CSV

Better when you want to work in a spreadsheet, or when someone else is writing the copy.

Products → Export → Plain CSV file. Then edit, then Products → Import.

The five columns that work

A description-only file does not import. We tried, twice, and both failures produce error messages that are worth quoting because nothing seems to document them:

A product title column is required.

That's what you get with just the handle and the description. So you add the title — and if any product has variants, you then get:

Product options input is required when updating variants.

What works is five columns, with one row per variant:

Column Why it's there
URL handle (older name: Handle) Matches the existing product
Title Required even when you're not changing it
Option1 name Required if the product has variants
Option1 value One row per variant
Description (older name: Body (HTML)) This is the description field

On the column names: Shopify's current template — product_template.csv, checked verbatim in August 2026 — uses URL handle and Description. Most guides still teach Handle and Body (HTML), and we can confirm those legacy names still import: the 50-product catalogue we used for this article was itself imported with a Handle / Body (HTML) file on 19 August 2026, and all 26 descriptions in it landed. Either set works today. The current names are the safer bet for the future.

The setting that decides whether any of it lands

Overwrite products with matching handles. Leave it off and Shopify will not touch your existing products at all — your edits quietly don't land and nothing tells you why. Tick it and the preview says it in plain words: existing products will be overwritten.

It matches on the handle, not the title, so renaming a product doesn't break the match.

What a CSV import leaves alone, and what it destroys

This is the part that costs people data, and all three rules are in Shopify's own documentation:

"If a non-required column isn't included in the import CSV file … then the value in the product list remains the same."

A column you leave out entirely is safe. Your images, prices and inventory are untouched by a five-column file.

"If a non-required column in the import CSV file is blank, then the matching value in the product list is overwritten as blank."

A column you include but leave empty erases the existing value. Most people expect the opposite of one of these two, and it's usually this one.

"Changing data in the Option1 value, Option2 value, or Option3 value columns … deletes existing variant IDs, and creates new variant IDs."

This one matters because Method 2 requires you to include the option columns for variant products. Export them and re-import them unchanged and you're fine. Retype them, tidy the capitalisation, or let a spreadsheet "helpfully" reformat them, and you have replaced every variant ID on those products — which breaks anything keyed to variant IDs downstream.

Three more from the same documentation, all worth knowing before you start: the file can't exceed 15 MB, it must be UTF-8 with LF linefeeds, and opening it in Excel can corrupt image links. Back up before importing.

Method 3 — generating the drafts

Disclosure: Arvio is our own product. It's third here on purpose: the two methods above need nothing from us, and if that's all you came for, you can stop reading here.

Everything above saves you clicks. Neither method writes a word. Past a few hundred products, how fast the grid is stops being the problem. Somebody still has to write 500 descriptions.

So here's what that looks like, on the same 69-product demo store used throughout this article — 23 of which had nothing in the description field at all.

Asked in plain English to improve my product copy, deliberately without being told which products:

It looked for the best sellers first — and said so when it couldn't find any. The store has no order history. Rather than pick something and proceed, it reported the gap, pulled the whole catalogue instead, and counted what was actually missing: 23 empty descriptions, 23 missing SEO titles, 60 products with no image alt text. Then it stopped and asked what "top products" should mean, given there were no orders to rank by.

It drafted, and it did not publish. Told to write one for each of the 23, and to show the drafts rather than apply them, it returned 23 drafts on screen. We checked the store afterwards, independently of the tool's own report: all 23 descriptions were still empty. Nothing had been written.

That distinction, a draft queue rather than an autopilot, is why we built it that way. Bulk generation that writes directly to a live catalogue is a fast way to need a bulk undo.

The two runs took 127 seconds to plan and 323 seconds to draft 23 descriptions.

When you should not bother with any tool

If you have fewer than about fifty products, or descriptions are the only thing you're changing and you already have the copy written, the built-in bulk editor is the right answer and everything else is overhead. Use Method 1 and skip the rest of this section. It's already open in your browser, and it will take you twenty minutes.

Five things that go wrong

  1. Ticking nothing and importing anyway. Without Overwrite products with matching handles, the import "succeeds" and changes nothing.
  2. Including a column you meant to leave alone. A blank cell in an included column erases the live value. Delete the whole column instead.
  3. Retyping the option columns. New variant IDs, silently.
  4. One row per product instead of one per variant. Produces the "Product options input is required" error, or drops variants.
  5. Editing the CSV in Excel. Image links can be mangled on save. Use a plain-text-safe editor or Google Sheets, and export as UTF-8.

Which method for which catalogue

Situation Use
Under ~50 products, copy already written Built-in bulk editor
Copy written by someone outside your admin CSV export → edit → re-import
Hundreds of products, copy not written yet Generate drafts, review, then publish
One product, one field Just open the product

FAQ

Can you bulk edit product descriptions in Shopify without an app?

Yes, two ways, both built in. The bulk editor handles it once you enable the Description column in the Columns picker, and the CSV export/import route handles any number of products. Neither costs anything.

Why is there no Description column in the Shopify bulk editor?

There is — it's just off in the default column set. Click Columns at the top right of the bulk edit grid and tick Description. This is the single most common reason people conclude the built-in editor can't do descriptions.

What is the Body (HTML) column in a Shopify CSV?

It's the product description. Shopify's current export template calls it Description; Body (HTML) is the older name for the same field and still imports correctly as of August 2026.

Why does my Shopify CSV import say "A product title column is required"?

Because your file has no Title column. Shopify requires it on import even when you're not changing the title. Add it and re-export the existing titles rather than retyping them.

Why does my import say "Product options input is required when updating variants"?

Because at least one product in the file has variants and your file has no option columns. Include Option1 name and Option1 value, with one row per variant.

Does importing a CSV overwrite my product images and prices?

Not if those columns aren't in your file — Shopify leaves out-of-file columns untouched. But a column that is in the file and left blank will be overwritten as blank. That asymmetry is where most accidental data loss comes from.

How many products can the Shopify bulk editor handle at once?

More than the header implies. Selecting 50 showed "Editing 15 products" until we scrolled, at which point it filled in to 50. The real constraint on the CSV route is the documented 15 MB file limit, not a product count.

How long does it take to write 500 product descriptions?

Typing alone, on our measurement, about 2 hours 43 minutes — and that excludes composing them, which is the larger half. That's the number worth having before you decide whether to do it by hand.

Method

One Shopify store, 69 products, 50 of them a synthetic catalogue we built for this purpose and 19 pre-existing. All steps run in a live admin between 19 and 21 August 2026, in English, on desktop Chrome.

The 19.6-second figure is a single measured run of typing one 147-character description into the bulk edit grid, timed with a stopwatch inside the recording, at a steady 110 ms per keystroke. That is faster than most people type, so treat the per-product timings as a floor rather than an estimate of your afternoon. It measures keystrokes only — composing the text is excluded, and on real copy that is the larger cost.

Exclusion: the two CSV failures we quote were reproduced on this store's own export; we did not test a store with 3+ option dimensions, custom metafield columns, or a catalogue near the 15 MB limit, and we would not assume the same error messages there.

Quotations from Shopify's documentation are copied verbatim from the CSV import guide and the column names from the official template, both checked in August 2026.


Related: Your SEO app found 400 missing meta descriptions. Now what? — the same CSV route applied to SEO fields, including the current column names and which flagged items are actually worth fixing.

Related: Shopify App Store Ads: what 310,000 impressions say about Relevance, bids and dead keywords — keyword-level data from our own ad account.

Written by Adot Technologies Inc, the team behind Arvio: AI Store Operator — ask for a bulk change in plain language, review every edit before it goes live, and undo anything.


Originally published at https://arvio.a.xyz/blog/bulk-edit-product-descriptions-shopify. More Shopify bulk-editing writeups are on the Arvio blog.

Top comments (0)