Bulk schedule CSV checker before you upload
Schedulers reject a bulk upload over one wrong date, or quietly skip the rows they dislike. Check the file first: dates, captions, image links and each scheduler's own rules, row by row. Runs in your browser; your file never leaves your device.
How to check a bulk upload CSV
Pick the scheduler you are uploading to
Its own bulk-upload rules are applied on top of the general checks. Choose "Another scheduler" for anything not listed.
Tick the networks the posts go to
Every caption is measured against each network's character limit, with the exact number of characters to cut.
Drop in the CSV, or paste it
It is read in your browser and never uploaded.
Fix what it lists, by row
Row numbers match your spreadsheet, header included, so each problem is one click away.
Upload to your scheduler
With nothing left for it to reject, or to drop without telling you.
What each scheduler's bulk upload requires
Taken from each scheduler's own help pages, linked below. These are the same rules the checker applies. Hootsuite is not listed because its help centre now needs a login, and Meta publishes no CSV rules for Business Suite.
| Scheduler | Date format | Most posts per file | Timing rules |
|---|---|---|---|
| Buffer | YYYY-MM-DD HH:mm in 24-hour time, zero-padded | 100 (10 on the free plan) | None stated |
| Publer | YYYY/MM/DD HH:MM preferred; phrases also read | 500 | None stated |
| SocialBee | yyyy-mm-ddThh:mm:ssZ, exactly, in 24-hour time | 300 | past dates fail |
| Sprout Social | dd/mm/yyyy or mm/dd/yyyy, plus a 24-hour time column | 350 | 10 min after upload, 10 min apart, rows in date order, past dates fail |
| Loomly | Not published; the template is only in the app | 60 | 30 min after upload, 30 min apart, past dates fail |
| Metricool | One format throughout, chosen when importing | No limit; 50 recommended | None stated |
The mistake nobody warns you about: 03/04
Is 03/04/2026 the 3rd of April or the 4th of March? When every date in a file has a first number of 12 or less, it could be either, and a scheduler that accepts both orders picks one without asking. The posts go out a month early or late, and nothing reports an error. The checker reads the whole column: one date like 25/04 settles it, and when nothing does, it says so and shows both readings. Writing dates year first, 2026-04-03, removes the doubt entirely.
Failures that happen silently
Buffer skips rows past its per-upload limit without an error, and says a time that is not zero-padded can fail to schedule with no error. Metricool can publish the word FALSE as text when a network column is filled in wrong. A test batch only catches what the scheduler chooses to report; these are exactly the ones it does not.
Image links that open a page, not an image
Every scheduler here wants a public link that returns the file itself. A Google Drive or Dropbox sharing link opens a viewer page instead, and fails. The checker flags those by their shape. It never opens your links, so it cannot tell whether one is still online.
Tired of collecting image links?
PlanBatch takes a spreadsheet of headlines and captions and renders a branded image for every row from your template, then schedules the lot. No image column, no hosting, no sharing links to get wrong.
A month of posts from one spreadsheet
Templates, brand kits, a calendar, and automatic publishing, with the images made for you.
More free tools
All free, all no signup, all running in your browser.
Grid crop checker
See exactly what the profile grid keeps of your post since the January 2026 change, and what gets cropped away.
OpenCarousel splitter
Split one wide image into seamless 1:1 or 4:5 carousel slides, entirely in your browser.
OpenCaption length checker
One caption against every network at once, with the exact number of characters to cut.
OpenImage size checker
See which post formats your image already fits, and what square, portrait, story and pin each crop away.
OpenLinkedIn carousel PDF
Turn slide images into the PDF LinkedIn needs for a swipeable carousel, every page the same size.
OpenCommon questions
Why does my scheduler reject my bulk upload CSV?
Usually one of four things: a date in a format it does not read, a time already in the past or too soon, a column name that differs from its template (several match names exactly, capitals included), or an image link that opens a web page rather than the image. The checker lists each by row.
What date format should a bulk upload CSV use?
The one your scheduler asks for, and it varies: Buffer wants YYYY-MM-DD HH:mm, zero-padded; SocialBee wants yyyy-mm-ddThh:mm:ssZ exactly; Sprout Social takes dd/mm/yyyy or mm/dd/yyyy chosen at import, with a separate 24-hour time. Year-first dates avoid any day-or-month confusion.
Which schedulers does it know the rules for?
Buffer, Publer, SocialBee, Sprout Social, Loomly and Metricool, each from its own help pages and linked on this page. Hootsuite is left out because its help centre now needs a login, so its current rules cannot be checked. Any other scheduler gets the general checks.
Does it check that my image links work?
It checks their shape: a real web address, and not a Google Drive or Dropbox sharing page, a Facebook-hosted image or a link to an HTML page. It never opens the links, so a link that points to a deleted file will still pass.
What time zone are the dates checked in?
Your browser's. Most schedulers do not say which time zone they read a CSV in; Sprout Social and Loomly use the one in your account or calendar settings, so check that it matches.
Is my file uploaded anywhere?
No. The file is read and checked in your browser. Nothing is sent to a server, and nothing is stored.