---
title: Import posts from a CSV file
description: Create many text posts at once from a spreadsheet. The CSV format, the import steps, and the limits.
---

# Import posts from a CSV file

Use a CSV file when your posts are already in a spreadsheet. CSV import creates **text posts only** — to post images or video in bulk, use [Create many posts from files](/help/posts/bulk-compose).

## Prepare your CSV file

The first row must be the column names. Only `content` is required.

| Column | Required | What to put in it |
|---|---|---|
| `content` | Yes | The post text, up to 10,000 characters. It must also fit every selected platform's limit. |
| `scheduled_at` | No | When to publish. Leave empty to save the post as a draft. |
| `first_comment` | No | A first comment, up to 5,000 characters |

Example:

```csv
content,scheduled_at,first_comment
"Monday tip: batch your content on Sunday.",2026-09-21T09:00:00+06:00,
"New blog post is live!",2026-09-22T09:00:00+06:00,"Read it here: https://example.com"
```

Rules:

- Up to **100 rows** and **1 MB**.
- **Always add your time zone offset** to `scheduled_at`, like `+06:00` in the example. A time without an offset is read as UTC.
- Keep each caption on **one line**. A caption with line breaks inside it is split into broken rows.
- Column names are not case sensitive.

## Import the file

1. In the left menu, click **Posts**.
2. Click **Bulk Schedule**, then **Import a CSV**.
3. Drop your file into **Upload CSV file**, or click to browse. Click **Next**.
4. Check the **CSV Preview**. It shows the columns it found and the first 5 rows. Fix any yellow warning, then click **Next**.
5. In **Post to accounts**, select the channels. Every row goes to all the channels you select.
6. Under **Schedule strategy**, choose **Use dates from CSV**.
7. Click **Import**.

You see **Import started**. The import runs in the background. A progress bar on the **Posts** page shows how many rows are done. When it finishes you see **Import Complete** with the number of imported and failed posts.

## Good to know

- Choose **Use dates from CSV**. The **Auto-fill schedule template** option currently saves every row as a draft without a time.
- A `platforms` column is ignored. Pick the channels in step 5 instead.
- The import tells you how many rows failed, but not which ones. Compare the posts on the **Posts** page with your file to find the missing rows. The usual reasons are a caption that is too long for a platform, or an empty `content`.
