Skip to content

Attribute Import/Export

Creating and editing product attributes one-by-one in the admin is slow. Attribute Import/Export lets you do it in a CSV: export every product attribute, edit labels, input types, dropdown options, scope and the dozen storefront/grid flags in a spreadsheet, and import to update existing attributes or create new ones in bulk — dropdown options included.

Attribute Import & Export

Magento

Open Source 2.4.9 GA (and later 2.4.x).

PHP

Tested on 8.4 and 8.5.

Creates options

Select/multiselect attributes import with their dropdown options.

Hardened upload

Type, size and content-validated CSV upload.
  1. Export every product attribute to CSV — attribute_code, frontend_label, frontend_input, options, scope, and the searchable / filterable / comparable / visible-on-front / used-in-listing / grid flags.

  2. Edit in a spreadsheet. Keep an attribute_code to update it; add a new row with a new code to create an attribute.

  3. Import — existing codes are updated, new ones are created.

GroupColumns
Identityattribute_code, frontend_label, frontend_input (text, textarea, select, multiselect, boolean, price, date…).
Behaviouris_required, is_unique, default_value, note, apply_to.
Storefront & searchis_searchable, is_filterable, is_comparable, is_visible_on_front, is_filterable_in_search, used_in_product_listing, used_for_sort_by, is_used_for_promo_rules.
Admin gridis_used_in_grid, is_visible_in_grid, is_filterable_in_grid, position.

Hardened upload

Uploads must be a real uploaded file with a .csv extension, under 10 MB, and whose actual content is a CSV (MIME sniffed with finfo, failing closed) — so the import can’t be used for path injection or to push a non-CSV payload.

Won't choke on bad rows

Each row is normalised to the header width — short rows are padded, over-long rows (a stray comma) are trimmed — so one malformed line can never abort the whole import with a fatal error.

Can I bulk-create attributes, with their dropdown options?

Yes — add rows with new attribute_codes and, for select/multiselect, list the options in the options column (pipe-separated). The import creates the attribute and its options in one pass.

How do I bulk-edit existing attributes?

Export, change the columns you want (labels, flags, scope) in a spreadsheet, and re-import. Rows with an existing attribute_code update that attribute in place.

Is the CSV upload safe?

Yes — it only accepts a genuine uploaded .csv under 10 MB whose sniffed content type is a CSV, and it’s behind the module’s import ACL resource. A malformed row is normalised rather than crashing the import. Verified clean on PHP 8.4 and 8.5.