Skip to content

Free tool · WordPress import

WordPress CSV import checker

Check a spreadsheet before you turn it into WordPress posts with SteadyPost. See which rows would be skipped, which dates would be misread and which columns would be ignored, before anything touches your site.

Drop a CSV file here

or

Your file is read by your own browser and never leaves this page. Nothing is uploaded or stored.

Starting from scratch? The template has the column names SteadyPost recognises and two example rows.

What SteadyPost would see

Choose or drop a CSV file to check it.

The rules come from SteadyPost 1.3.0's own code: its CSV reader, automatic column mapping and importer. Dates were tested against PHP 8.4, which reads them for the plugin, and PHP's date formats documentation. Checked on 23 October 2026. Your site's settings, such as a saved column mapping, default status or row filter, can change the outcome, so the plugin's dry run has the last word.

What SteadyPost checks, column by column

ColumnAlso recognised asWhat SteadyPost does with it
Titlepost_title, headlineThe only required column. A row without a title is skipped.
Statuspost_status, wp_status, publish_statusAccepts draft, publish, published, live, pending, review, private, scheduled and future, in any case. Anything else, or a blank, gets the default status from Settings.
Publish Datepost_date, published_date, date_publishedRead in your site's timezone. A scheduled row needs one, or it becomes a draft. A column called just "Date" isn't picked up.
Categories, Tagscategory, tagSplit on commas or vertical bars. Terms that don't exist yet are created.
Featured Imagefeature_image, cover_image, thumbnail, imageA web address starting http:// or https:// is downloaded into the media library. Anything else is treated as a file name in your images zip or media library.
Slugurl_slug, post_name, permalinkSets the post's address, and identifies the row when you import the file again.
Post IDwp_post_id, wordpress_idUpdates that existing post. Written by SteadyPost's export, for bulk editing.
Content, Excerptbody, post_content, summaryPlain text, Markdown or HTML, detected per row.
Authorpost_authorA username, email address or user ID. No match means the default author.
Meta Title, Meta Description, Keywordsseo_title, seo_description, focus_keywordWritten to Yoast SEO, Rank Math or SEOPress, whichever is active.
meta:key, tax:taxonomy Custom fields and custom taxonomies, separated like tags. Underscores at the start of a key are dropped, so protected fields can't be written.

SteadyPost is lenient about a lot, so this checker doesn't complain about these:

  • Column order, and the case, spaces and punctuation in header names.
  • Blank rows, blank lines above the header, and spaces around values.
  • Semicolon-separated files, as Excel saves them in countries that use a decimal comma.
  • Files saved in Windows-1252 rather than UTF-8, with or without a byte order mark.
  • Rows with fewer cells than the header: the missing ones count as blank.
  • Dates typed into Excel that arrive as day numbers.

Common questions

Which columns does SteadyPost need?
Only a title. Every other column is optional, and columns it doesn't recognise are ignored unless you map them on the Import screen. Header names are matched without regard to case, spaces or punctuation, so "Publish Date", "publish_date" and "PUBLISH-DATE" are the same column.
What date format should I use?
Use YYYY-MM-DD HH:MM, for example 2026-11-01 09:00. SteadyPost reads it in your site's timezone. Dates with slashes are read month first, so 03/11/2026 becomes 11 March, and 13/11/2026 can't be read at all. Dates with dashes or dots, such as 03-11-2026, are read day first.
How do I separate categories and tags?
With commas or vertical bars, such as News, Events or News | Events. Semicolons are not separators. Categories and tags that don't exist yet are created during the import.
Why do accents or Chinese characters come out wrong?
SteadyPost reads a CSV as UTF-8. If the file isn't valid UTF-8, it assumes Windows-1252, the encoding Excel uses for plain CSV on Windows. That keeps Western European accents but garbles Chinese, Tamil and other scripts. In Excel, save as CSV UTF-8 (Comma delimited) instead.
Will importing the same file twice create duplicate posts?
No. Each row is matched to the post it created, by a Ref column, then the slug, then the title, and that post is updated. The same applies inside one file: two rows with the same slug or title become one post, and the later row's values win.
SteadyPost A free WordPress plugin that turns each row of a CSV or Excel file into a post, with a preview, a dry run and one-click undo. See how it works →