New: schedule posts from Claude or ChatGPT

How to bulk schedule social media posts (with a CSV template)

What a bulk scheduling CSV needs, the caption and image limits for nine platforms, the five mistakes that break an import, and a template you can copy.

William Lindberg

William Lindberg, Customer Success

A laptop showing a spreadsheet of planned social media posts

Some weeks you have 3 posts to write, and the composer is the right tool. Then there's the week you have 40. A month of evergreen tips. A launch that hits 6 platforms a day for 2 weeks. Two hundred posts stuck in a tool you're leaving. Typing those in one at a time is how a Sunday disappears.

Bulk scheduling fixes that. You plan every post in a spreadsheet, one row each, export it as a CSV, and upload it once. This guide covers what the file needs, the platform limits to respect while you write, the workflow that keeps mistakes out, and a template you can copy.

What a bulk file needs

A bulk scheduler reads a CSV: a plain text file where each row is one post and each column is one field. You don't write it by hand. Plan in Google Sheets, Excel, or Numbers, then export. These are the columns worth having, and the rule each one has to pass.

ColumnWhat goes in itThe rule
DateThe day the post publishesMust be in the future. Past dates get rejected. Use one format for every row (2026-09-14 is the safe one).
TimeThe clock time, in the timezone you set24-hour format avoids the AM/PM mix-up. 09:00, not 9.
CaptionThe post textCan't be empty. A row with no caption gets flagged.
Media URLA link to the image or videoMust be a public link that points straight at the file. Leave it empty for a text-only post and attach media after import.
PlatformsWhere the post goesEvery platform in the cell has to be connected to your account. Unconnected ones get flagged.
First comment (optional)Hashtags or a link to post as the first commentOnly some platforms support it (Instagram, LinkedIn, Facebook, YouTube). Leave it empty where it doesn't apply.

Past dates and unconnected platforms are the errors people hit first. Both are cheap to fix before upload: check today's date, and check your connected accounts.

A row is a promise to publish. If any cell in it is wrong, you want the tool to say no, not guess.

Per-platform limits to respect in the sheet

One row can go to several platforms, but it carries one caption. So the shortest limit among the platforms in that row is the one that counts. A 600-character caption is fine for LinkedIn and useless for X in the same row.

Keep this table next to your sheet.

PlatformCaption or text limitImages per post
Instagram2,200 characters, 30 hashtagsUp to 10 in a carousel
TikTok2,200 charactersUp to 35 in a photo post
FacebookLong captions are fine; the first lines show before See moreUp to 10
LinkedIn3,000 charactersUp to 20
X280 charactersUp to 4
YouTubeTitle 100 characters, description 5,000One video
PinterestTitle 100 characters, description 500One image or video per pin, and every pin needs a board
Threads500 charactersUp to 10
Bluesky300 characters, a hard limitUp to 4

The practical move: sort your sheet by platform before you write. Rows that include X or Bluesky get short captions. Rows that go to LinkedIn alone get the longer take. If one post needs both, give it two rows with the same date and media, and a caption sized for each.

The workflow

This is the order that keeps a bad row from becoming a broken post.

  1. Write in a sheet. One row per post, using the columns above.
  2. Export as CSV. File, then Download or Export, then CSV. The spreadsheet app quotes the commas and line breaks in your captions for you.
  3. Map your columns. On upload, match each column in your file to a field in the scheduler.
  4. Fix flagged rows. The importer checks every row and lists the ones with a past date, an empty caption, or a platform you haven't connected. Fix them in the sheet and export again.
  5. Review as drafts on the calendar. Imports should land as drafts, not live posts. Look at the month view. Gaps and pile-ups jump out.
  6. Drag to fine-tune. Two posts on the same morning? Drag one to the afternoon. Open any post to adjust the caption per platform.
  7. Schedule the batch. Once it looks right, confirm. Every post is now scheduled for its time.

No plan yet? Build a content calendar first, or start from the content calendar template, which maps onto Lemonpost's bulk CSV. Bulk upload moves a planned month onto the calendar fast, but it can't plan the month for you.

Bulk scheduling in Lemonpost, step by step

Bulk scheduling is included on every Lemonpost plan, including the 7-day trial. Here's the flow.

  1. Grab the template. Download Lemonpost's CSV template so your columns line up from the start. Or bring your own sheet and map it in step 3.
  2. Fill a row per post. Date, time, caption, a public image or video URL, and the platforms it goes to. Any of the nine: Instagram, TikTok, Facebook, LinkedIn, X, YouTube, Pinterest, Threads, and Bluesky. Add as many rows as you want.
  3. Upload and map. Drop the file in and match each column to its field. Lemonpost remembers the mapping, so the next upload is one click.
  4. Fix what's flagged. Every row is checked before a single post is created. Past dates, missing captions, and unconnected platforms are flagged so you can fix them first.
  5. Review on the calendar. Imported posts land on the content calendar as drafts. Nothing publishes on its own. Open any post to customize it per platform in the full composer, add a first comment, or turn it into a Reel. Drag it to a new slot if you need to.
  6. Schedule the batch. Confirm, and every post is scheduled for its time.

Media comes in by public URL, and Lemonpost fetches and attaches it. For a text-only row, open the post after import and attach media from your media library, which can pull from Canva, Google Drive, or Pexels.

Mistakes that break a bulk import

Five things cause most failed uploads.

1. Dates in the wrong format, or in the past. 03/09 means March 9 in one app and September 3 in another. Use YYYY-MM-DD for every row. And check the year: a sheet copied from last month's plan imports 30 rows dated in the past.

2. Commas in captions without quotes. In a CSV, a comma is a column break. "Fresh drop, in three colors" splits into two cells unless it's wrapped in quotes. Spreadsheet apps add the quotes on export. Editing the CSV by hand in a text editor is how they go missing.

3. Media links that aren't file links. A Google Drive or Dropbox share link opens a preview page, not the file. The importer needs a public URL that ends at the image or video itself. Private links, expiring links, and preview pages all fail.

4. One long caption for a row that includes X or Bluesky. The row's caption has to fit the shortest limit among its platforms. Split the post into two rows, or trim the caption to 280 characters, before you upload. The X character counter counts links and emoji the way X does.

5. Platforms you haven't connected. The sheet says TikTok, but TikTok isn't connected yet. Connect every account before the upload, and spell platform names the way the template does.

A CSV template you can copy

Paste this into a blank sheet, or save it as a .csv file. The first row is the header; each row after it is one post.

date,time,caption,media_url,platforms,first_comment
2026-09-14,09:00,"Fresh drop, in 3 colors. Link in bio.",https://example.com/fall-drop.jpg,"Instagram, Facebook","#newarrivals #fallstyle"
2026-09-15,12:30,"3 ways to plan a week of posts in one sitting.",,X,
2026-09-16,17:00,"How we shoot a month of content in one afternoon.",https://example.com/bts.mp4,"TikTok, Instagram, Threads",

Row 1 is an image post to 2 platforms with hashtags in the first comment. Row 2 is text-only, so the media cell is empty; attach media after import if you want one. Row 3 is a video to 3 platforms, and its caption fits every limit in the row.

Keep it as a tab in your planning sheet. When the tab is full, export and upload.

FAQ

What is bulk scheduling? Bulk scheduling means creating many social media posts at once from a spreadsheet instead of typing them in one at a time. You fill one row per post, upload the file as a CSV, and every post is scheduled in one step.

What file format do I need? A CSV. Google Sheets, Excel, and Numbers all export one. Keep the header row so the importer can map your columns to its fields.

Can I bulk schedule to Instagram and TikTok? Yes. In Lemonpost one upload can schedule to all nine platforms: Instagram, TikTok, Facebook, LinkedIn, X, YouTube, Pinterest, Threads, and Bluesky. You list the platforms for each post in its own row.

How do I add images and videos in bulk? Put a public link to each file in the media column. Lemonpost fetches the file from that URL and attaches it to the post. For a text-only row, open the post after import and attach media from your library.

Do bulk-uploaded posts publish straight away? No. Imported posts land on the content calendar as drafts. You review the whole batch, fix anything wrong, and then schedule it. Nothing from an upload goes live on its own.

Does bulk scheduling cost extra? No. It's on every Lemonpost plan, starting with Creator at $29 a month for 5 channels, and every plan has unlimited seats. The 7-day free trial includes it too. See pricing for the full comparison.

Put it into practice

Plan, schedule, and publish to nine platforms from one calendar. Free for 7 days, unlimited seats on every plan.