6 min read

How to Bulk Create Posts in WordPress: 4 Ways Compared

By Jonas Lindemann

Updated

Part of the guide: Programmatic SEO and local landing pages in WordPress

Developer at night working on two monitors showing long lists of posts

WordPress has no built-in way to create many posts at once, so you need a plugin or the command line. Which one fits depends on what you start with. With only a list of titles, a title-list plugin creates empty drafts. With the content of every post in a spreadsheet, an import plugin turns each row into a post. With posts that share one layout and differ in their data, a template plugin fills one designed post per row. Developers can script the whole job with WP-CLI.

The four ways at a glance

Method

You start with

What you get

Free tool

List of titles

A list of post titles

One post per title, ready to fill in

Mass Pages/Posts Creator

Import a spreadsheet

A CSV, Excel or Google Sheets file with the content of every post

One post per row, each column in the field you mapped it to

WP All Import

Template post and spreadsheet

One finished post with {placeholders} and a sheet of values

One post per row in the template's layout, with that row's values

LPagery

WP-CLI

Shell access to your server

Posts created by commands you can script

WP-CLI

Two plugins that older guides recommend for this, Simple Add Pages or Posts and BulkPress, are no longer available. wordpress.org closed both for security issues, BulkPress on November 14, 2024 and Simple Add Pages or Posts on December 30, 2024. If one of them is still installed on your site, remove it.

We make LPagery, one of the tools below. The other plugins are listed with what their wordpress.org pages say, read in October 2026.

1. Create posts from a list of titles

Use this when you need the posts to exist, for example as drafts that writers fill in later. Mass Pages/Posts Creator, with more than 1,000 active installs, takes a comma-separated list of names or a number range and creates a page or post for each, with an optional prefix and suffix in every title.

Its wordpress.org page lists the Publish status, templates and the author option as Pro features, and says it was last tested with WordPress 6.9. The free version is enough for a batch of drafts.

2. Import posts from a spreadsheet

Use this when every post's content is already written, one row per post, for example articles moved from another system or a product feed. WP All Import, with more than 100,000 active installs, reads CSV, XML, Excel and Google Sheets files. In its import steps you drag each column onto a post field, such as the title, the content or the categories, and it creates one post per row. According to its listing, importing into custom fields, downloading images into the media library and recurring imports need WP All Import Pro.

Moving posts from another WordPress site is a different job. Export them under Tools > Export on the old site and import the file under Tools > Import with the WordPress importer on the new one.

3. Create posts from a template post and a spreadsheet

Use this when the posts share one layout and differ in their data: a guide for each neighborhood, an event in each city, a job in each location. You write one post with placeholders such as {neighborhood} where the text changes, and the spreadsheet holds the values, one row per post. This is what LPagery does, and the free version from wordpress.org covers the basics.

  1. Write the template post under Posts > Add Post and put placeholders in curly braces where the text changes. Put at least one in the title, such as "Living in {neighborhood}", because in the free version the title also becomes the URL. Save it as a draft.
  2. Make a spreadsheet with the placeholder names in the first row, without braces, and one row per post. Save it as CSV or XLSX.
  3. Go to LPagery > Create Pages and select your post under Template Post. When the template is a post, LPagery creates posts.
  4. Under 2. Input Selection, choose CSV / XLSX, upload the file and click Review & Create Posts.
  5. Check the Pre-flight Check for Problems, such as a title without a placeholder, then click the create button, such as Create 25 Posts.

Our guide on how to create WordPress pages from a spreadsheet explains how to lay out the columns, and it works the same for posts.

Settings that matter for posts

Posts have no parent, so the Parent Post field stays greyed out. The other settings depend on your plan:

  • Free: up to three placeholder columns and 100 posts per run, and every post is published right away.
  • Standard: the Post Status field with Publish, Draft, Private or Future (Future lets you pick one publish date for the whole run), the URL Slug field, and category and tag fields for the whole run.
  • Extended: columns that set each post's own categories, tags, author and publish date, so one run can schedule posts across several weeks. Image processing gives each post its own featured image, and custom post types can be the template too.

The column names for per-post settings are lpagery_categories, lpagery_tags, lpagery_author and lpagery_publish_date. A column called lpagery_ignore with true skips a row in every plan. Plans are on the pricing page.

Each post needs facts of its own to be worth publishing. Google's spam policies call many pages generated mainly to manipulate rankings "scaled content abuse", so give every row real details in its own columns, and swapping a neighborhood name alone isn't enough.

4. Create posts with WP-CLI

If you can run commands on your server, WP-CLI creates posts without any plugin. wp post create creates one post, and it can read the content from a file, for example wp post create ./post-content.txt --post_title='Post from file'. New posts are drafts unless you add --post_status=publish. A short shell loop over a CSV file turns that into a bulk job.

wp post generate --count=10 creates posts with dummy content. That's useful for testing a theme, and those posts shouldn't stay on a live site.

Edit many existing posts at once

For posts that already exist, WordPress has a bulk edit. On the Posts screen, select the posts, choose Edit under Bulk actions and click Apply. You can then change the author, status and other settings, and add categories and tags, for all of them in one go. For posts created with LPagery, the Update screen on the Extended plan applies template and data changes to the whole set.

FAQ

Can I bulk create blog posts with AI?

Yes, but check what each post is worth before you publish it. Our guide to the AI blog post generator for WordPress covers plugins that write whole posts. For posts built from a spreadsheet, LPagery AI writes a column of text, such as an intro, for every row, which you then place in the template with a placeholder.

Can I bulk create pages the same way?

Yes. Every method above works for pages too. For pages, see our guide on how to bulk create pages in WordPress.

How many posts can I create in one run?

With LPagery's free version, 100 per run, and the paid plans have no limit. On Extended, large runs can run in the background on the server, so you can close the browser tab while LPagery works. More on the LPagery Bulk Page Generator page.

About the Author

I've worked in SEO for more than ten years and helped over 100 businesses rank higher, mostly local businesses, e-commerce stores and SaaS companies. As co-founder of LPagery I work on local SEO, programmatic SEO and AI search visibility, and I test the strategies in these articles on our own sites and with our customers.

This post may contain affiliate links which we earn a commission on when purchasing a given product.

About the Author

I've worked in SEO for more than ten years and helped over 100 businesses rank higher, mostly local businesses, e-commerce stores and SaaS companies. As co-founder of LPagery I work on local SEO, programmatic SEO and AI search visibility, and I test the strategies in these articles on our own sites and with our customers.