Works with all AI agents

Connect your AI agent

Choose your AI agent and connect in seconds.

Add to Claude

Works on every Claude plan, including free. Full Claude guide

  1. 1

    Add to Claude

    One click from Claude’s connector directory.

  2. 2

    Sign in or start your free trial

    New here? Create an account and start a 7-day free trial. It’s $0 today, and a card is needed. Then allow access and you’re sent back.

  3. 3

    Ask Claude

    “Plan and schedule my posts for next week.”

How to Bulk Schedule Social Media Posts with a CSV File

To bulk schedule social media posts, write one post per row in a spreadsheet, save it as a .csv and upload it to a scheduler that reads it. Here is the exact CSV template PostEverywhere uses, column by column, with carousel syntax, per-platform rules and the mistakes that make rows fail.

Jamie Partridge
Jamie Partridge
Founder··13 min read
The PostEverywhere app icon above the words Bulk scheduling with a CSV

How to bulk schedule social media posts: write one post per row in a spreadsheet (the date, the time, the text, the platforms and any media file name), save it as a .csv file and upload it to a scheduler that reads CSVs. In PostEverywhere, upload your images and videos to the Media library first, then upload the .csv on the Bulk Upload page: one file takes up to 200 posts, every row is checked against each platform's rules in a preview you can edit, and one click schedules the lot. See PostEverywhere's bulk scheduling for the feature itself.

This guide gives you the exact template, explains each column with examples, and lists the per-platform rules and the mistakes that make rows fail.

Posting one at a timeA CSV bulk upload
How posts are madeOpen the composer, fill it in, pick a time, repeatWrite every post in one spreadsheet, upload once
A month of daily posts30 trips through the composerOne file of 30 rows
Several platforms per postSelect them each timeOne cell, such as instagram+facebook
Mistakes caughtAs you goAll at once, in a preview before anything schedules
Best forA few posts a weekA batch, a campaign, or moving from another tool

What is social media bulk scheduling?

Social media bulk scheduling means loading many posts into a scheduler in one go instead of one at a time. The usual format is a CSV file, a plain spreadsheet where each row is a post and each column is a detail of it.

Every major spreadsheet app exports one: Google Sheets through File, then Download (Google's download help page), and desktop Excel through Save As, where Microsoft's CSV help page notes that Excel for the web can't save CSV files.

Native apps rarely do this. Most schedule one post at a time, and YouTube Studio, one of the more generous, takes up to 15 uploads at once according to its Shorts upload help, with the details for each still filled in one by one.

A CSV upload to a scheduler is how most teams get a month of posts in one sitting.

It pairs naturally with batching: write a week or a month of posts in one session, turn one long piece into many as our guide to repurposing one piece of content into a week of posts describes, then upload the result.

How to bulk schedule social media posts with a CSV

This is the flow in PostEverywhere today.

Bulk schedule posts from a CSV in PostEverywhere

On a computer, which is easier for spreadsheets.

  1. Connect your accountsIn Accounts, connect every profile the batch will post to. The Bulk Upload page lists them with their account IDs.
  2. Upload the media firstPut every image and video the batch uses in your Media library, by upload or from Google Drive on the Media page.
  3. Download the templateOn Bulk Upload, download the blank template or the example CSV, which is filled in with your connected platforms.
  4. Fill one row per postDate, time, text, platforms and the media file name. Save it as a .csv.
  5. Upload the .csvDrop the file on Bulk Upload. Every row appears in a preview grid with the number of valid rows, errors and destinations.
  6. Validate, fix and scheduleClick Validate to check media and accounts, edit any flagged cell in place, check the time zone, then click Schedule N Posts.
PostEverywhere's Bulk Upload flow. Each post then publishes on its own at its date and time.

Limits to plan around: a file of up to 200 posts and 5 MB, and up to 10 uploads a day. A batch of 300 posts is simply two files. Posts themselves are unlimited on every plan.

The CSV template, column by column

The header row PostEverywhere's template uses is:

date,time,content,platforms,media,cover,cover_timestamp

Only date, content and platforms are required. You can also download our bulk upload template, a ready-made month of example rows in these columns. Here is a small batch as it would look in the file:

date,time,content,platforms,media,cover,cover_timestamp
2026-11-02,09:00,Monday tip: plan the week before you open the inbox.,linkedin+x,,,
2026-11-02,12:30,"New menu, same coffee. Come say hi.",instagram+facebook,menu-photo.jpg,,
2026-11-03,,Behind the scenes from the roastery.,instagram,roast-1.jpg|roast-2.jpg|roast-3.jpg,,
2026-11-04,17:00,How we pour a latte heart in 20 seconds,youtube,latte-heart.mp4,latte-thumb.jpg,
2026-11-05,19:00,Three grinder mistakes and the fix for each.,tiktok,grinder.mp4,,2.5
ColumnWhat goes in itAlso accepted as a header
dateThe day it goes out, as YYYY-MM-DD, for example 2026-11-02schedule date, post date, when
timeHH:MM on a 24-hour clock, for example 14:30. Optionalpost time, hour
contentThe post textcaption, text, post, message
platformsPlatform names or account IDs joined with +channels, networks, accounts
mediaA Media library file name; several joined with | make a carouselimage, video, file
coverA custom thumbnail for a video: a library file name or an https link. Optionalthumbnail, cover photo
cover_timestampA frame of the video to use as the cover, in seconds, such as 2.5. Optionalcover time, thumbnail time

Because common header names are mapped for you, a sheet exported from another scheduler with a "Caption" or "Channels" column usually works as it is.

Date and time: what happens with a blank time

Dates are YYYY-MM-DD and times are 24-hour HH:MM, read in the time zone shown above the preview, which you can change before scheduling. Leave the time empty and PostEverywhere spreads that day's posts across set slots (9:00, 12:00, 15:00, 17:30 and 20:00), then moves each to a suggested best hour on the same date where it has results for those accounts.

PostEverywhere looks at when your posts have done best and suggests those times; our page on how suggested posting times work explains it.

A date and time already in the past isn't an error: the row is flagged with a warning and publishes straight away, so check those before you schedule.

Platforms: names or account IDs

The platforms cell takes platform names joined with a plus sign: instagram, facebook, x, linkedin, tiktok, youtube, threads, pinterest, bluesky, telegram, discord, wordpress and google_business. instagram+facebook+threads sends one row to all three.

If you have more than one account on a platform, such as two Facebook Pages for two clients, use the account ID from the Bulk Upload page instead of the name, so each row lands on the right profile. You can mix the two, as in instagram+4472.

If a name could mean two accounts, the preview asks you which one. This is how agencies run several brands from one upload; PostEverywhere's multi-account management covers the wider set-up.

Media goes in by file name, not by link: upload the files to your Media library first, then type each name in the media column. Matching is forgiving:

  • Extension and case don't matter. Image.JPG in the CSV matches image.png in the library.
  • The newest upload wins when two files share a name.
  • Typos get a suggestion, so a near miss is flagged with the closest match.

For a carousel, list several file names in one cell separated by a pipe, in the order you want them: slide1.jpg|slide2.jpg|slide3.jpg. Leave the media cell empty for a text-only post.

Covers for video posts

For a video row, the cover column sets a custom thumbnail from your library or an https link, and cover_timestamp picks a frame from the video instead, in seconds. Covers apply to TikTok, YouTube, Facebook and Instagram videos and are ignored for carousels, where the first slide is the cover.

What a CSV can't set

The file carries the essentials, not every platform option. A Pinterest board, Pin title and destination link, and settings such as YouTube tags or TikTok privacy, have no column, and a column named link is read as media.

Set those in the post editor after the upload, or send them through the API. The full column rules are also in our bulk upload help article.

A month of posts, one upload. Write the batch in any spreadsheet, check it in the preview and let every post go out on time. See PostEverywhere's bulk scheduling.

Per-platform rules your CSV is checked against

Every row is checked against the rules of each platform it names before anything schedules. These are the ones that catch people out:

PlatformMediaFiles per postText
InstagramAn image or video is requiredUp to 102,200 characters
TikTokA video or images is requiredUp to 35 imagesSee our TikTok guide
YouTubeOne video is required1The first line becomes the title; the rest is the description
FacebookOptionalUp to 10Long posts are fine
LinkedInOptionalUp to 9 images3,000 characters
X (Twitter)OptionalUp to 4 images280 characters on a free account
ThreadsOptionalCarousels supported500 characters
PinterestAn image is required1500 characters
BlueskyOptionalUp to 4 images300 characters
Telegram and DiscordOptionalUp to 10Long messages are fine
WordPressOptionalUp to 20; the first is the featured imageThe first line becomes the post title
Google Business ProfileOne photo, no video11,500 characters, posted as an update

When one row goes to several platforms, the strictest rule applies to the shared text. A 400-character post to linkedin+x is flagged because of X. Give X its own row with shorter text, or drop it from that row.

Google Business Profile rows go out as updates with one photo; for events and offers, see how to schedule Google Business Profile posts. For TikTok captions and photo posts in detail, see our guide to scheduling TikTok videos and photo posts.

Why bulk-uploaded rows fail, and how to fix them

Most problems show up in the preview, before anything is scheduled.

What you seeLikely causeFix
Missing required columnsNo date, content or platforms headerAdd the header, or rename yours to one of the accepted names
Every row has a date errorDates like 11/02/2026, which spreadsheets often produceFormat the column as YYYY-MM-DD before you export
Media not foundThe file isn't in your Media library yet, or the name is misspeltUpload the file first, or accept the suggested match
Not a valid platformA name like twitter or igUse x, instagram and the other names listed above, or an account ID
Over the character limitShared text is longer than one platform allowsSplit that platform into its own row with shorter text
Instagram or TikTok row flaggedNo media in the rowAdd a file name, or remove that platform from the row
Text split into the wrong columnsA comma inside the post textWrap that cell in double quotes; most spreadsheet apps do this when they export
File rejectedMore than 200 rows, or over 5 MBSplit it into two files
Some X posts held backX posts are capped at 100 a day per teamThey go out when the window reopens, or spread them over more days

The quoting rule is part of the CSV format itself: RFC 4180 says fields containing commas, double quotes or line breaks should be enclosed in double quotes, and a double quote inside a field is written twice.

Spreadsheet apps handle this for you when they export; it matters if you write the CSV by hand or with a script.

After the upload

Once the batch is scheduled, every post sits in the content calendar like any other, so you can drag one to another day, edit its text or delete it until it goes live.

Want a post on more networks, or different wording on each? Open it and use Customise per platform, or see how PostEverywhere's cross-posting handles one post across all top platforms.

PostEverywhere calendar in week view showing scheduled posts spread from Sunday to Saturday
PostEverywhere's calendar in week view. A bulk-uploaded batch lands here, one post per day and time from your file.

If you would rather give each post a recurring slot than a fixed time, a queue of weekly openings does that, and works alongside bulk uploads. For filling the spreadsheet itself, our free content calendar templates are a good starting grid.

Bulk scheduling with an AI agent or the API

A CSV isn't the only way to load a batch. Connect Claude, ChatGPT or any MCP client to PostEverywhere and hand it your list of topics: it can write each post for each platform and schedule the whole set, up to 50 posts per request, with no spreadsheet at all.

Developers get the same through the REST API, which creates up to 50 posts per call on every plan.

Comparing how other schedulers handle CSV imports? Our roundup of bulk schedulers and their upload limits puts them side by side. For the wider field beyond CSV imports, see our comparison of the best social media scheduling tools.

Hand the batch to your agent. Give Claude or ChatGPT a month of topics and let it write and schedule every post through PostEverywhere. See bulk scheduling in PostEverywhere.

FAQ

How many posts can you bulk schedule at once?

In PostEverywhere, up to 200 posts per .csv file of up to 5 MB, and up to 10 uploads a day. An AI agent or the API can create up to 50 posts per request.

What columns does a bulk upload CSV need?

At least date, content and platforms. Add time, media, cover and cover_timestamp when you need them. The full header row is date,time,content,platforms,media,cover,cover_timestamp.

Can you bulk schedule carousels?

Yes. Put several Media library file names in the media cell separated by a pipe, such as slide1.jpg|slide2.jpg|slide3.jpg. Each platform's own limit applies, for example up to 10 on Instagram.

Can you bulk schedule videos and Reels?

Yes. Upload the videos to your Media library, then put each file name in the media column. TikTok and YouTube rows need a video, and the cover column sets a custom thumbnail.

Not in the media column. Media goes in by Media library file name, so upload the files first. Only the cover column also accepts an https link.

What happens if I leave the time blank?

PostEverywhere spreads that day's posts across set times, then moves each to a suggested best hour on the same date where it has results for those accounts.

Can I edit posts after a bulk upload?

Yes. Edit any cell in the preview grid before scheduling, then edit, move or delete any post in the content calendar until it goes live.

Is bulk scheduling included on every plan?

Yes. Bulk Upload is on every PostEverywhere plan, from $9 a month, and every plan starts with a 7-day free trial. Plans are compared on the pricing page.

Sources

Outside facts in this guide come from the pages below. Product details for PostEverywhere come from the app itself.

Jamie Partridge
Written by Jamie Partridge

Founder & CEO of PostEverywhere. Writing about social media strategy, publishing workflows, and analytics that help brands grow faster.

Related articles

Strategy

How Often Should You Post on Social Media? (Our 2026 Data From 39,500+ Posts)

How often should you post on social media? We analysed 39,500+ posts scheduled with PostEverywhere. When an account doubled its posts in a week, the week's total results roughly doubled, while each post did only slightly worse. Our findings for Instagram, TikTok, LinkedIn and YouTube, plus guidance for Facebook, X (Twitter) and Threads.

16 min read

Social media scheduler

Post everywhere from one dashboard

Schedule a month of posts in one sitting, tailor each one per platform, and let your AI agent handle the rest.

  • Unlimited posts to all top platforms
  • AI Studio for posts, images and video
  • Connect ChatGPT, Claude or any AI agent

7-day free trial on every plan. $0 due today, cancel anytime.

  • Lite

    2 social accounts

    $9/mo

  • Starter

    5 social accounts

    $19/mo

  • GrowthRecommended

    10 social accounts

    $29/mo

  • Scale

    20 social accounts

    $39/mo

Compare every plan