Switch from Buffer, Hootsuite, Later or Postiz
Short answer: export while the old plan is still active, then import the rows as drafts. Hootsuite's calendar CSV and a Postiz posts JSON file import on Import CSV. Buffer and Later do not give you a queue file with confirmed column names, so those rows need a rename into the template first. Nothing is scheduled or published until you approve it.
Start free and import the queueBy the TimeToPost team. Last reviewed 2026-11-05.
This page is for people leaving Buffer, Hootsuite, Later or Postiz. It covers what each tool will actually export, the steps on that tool's own help page, what stays behind, and how to import the queue into TimeToPost as drafts. Competitor prices were read on 4 November 2026. Export steps this page re-opened are dated 5 November 2026 in that section. TimeToPost's importer was read from the product on 5 November 2026. TimeToPost prices were read from the pricing page and plan configuration on 4 November 2026.
Save this before you cancel
Do this while the old plan is still paid. Several exports are paid features, and some download links expire.
- List every connected account and which network it is.
- Export the future queue, or copy it into a spreadsheet if the tool has no queue export.
- Export published history and analytics for at least the last 90 days, or as far as the plan allows.
- Download original media. Links inside an export often expire.
- Note recurring or evergreen rules. Those rarely come out as rules.
- Rebuild the next two weeks in the new tool and pause the old queue before both are live, so nothing posts twice.
- Cancel the old plan only after the new queue has published for a few days.
What each tool will give you
| Tool | Queue | Analytics | Import CSV | Better pick when |
|---|---|---|---|---|
| Buffer | No in-app export. API can list scheduled posts. | CSV zip, Markdown or PDF on paid plans. | Rename posts.csv first. The header row is not published. | You want a free plan, a community inbox, or networks TimeToPost does not publish. |
| Hootsuite | CSV up to 365 days, or a one-week PDF. | Separate from the calendar export. | Calendar headers import directly. | You run ads, listening, or a large approval team. |
| Later | Instagram share link on Growth and up. No file. | Instagram CSV on Starter and up. | No confirmed CSV headers. Copy into the template. | Instagram grid planning, Link in Bio, or Snapchat, Pinterest, YouTube or Facebook is the job. |
| Postiz | Public API returns queue, drafts and history as JSON. | Separate post and channel analytics endpoints. | Posts JSON imports directly. | You need Facebook, YouTube, Reddit, Pinterest, Discord, or you self-host. |
Move from Buffer
Buffer's calendar article says it does not currently support exporting scheduled posts directly. Re-opened 5 November 2026. For published posts, paid plans can export post details and performance from Insights. The calendar help and the analytics getting-started article are the sources.
Export Insights
- Open Insights, on one channel or on All Channels.
- Set the date range and any tag or channel filters. The file matches what is on screen.
- Click Export at the top of the page, near the date range.
- Choose Export to CSV (a zip with summary.csv, posts.csv and timeseries.csv), Export to Markdown, or Export as PDF. Download Snapshots (chart images) is on every plan, including Free. CSV, Markdown and PDF need a paid plan. A view-only member can see Insights but cannot export.
Save the scheduled queue
For a short queue, open each channel and copy date, time, network, account, text and media into a spreadsheet. For a long queue, Buffer's GraphQL API can list posts filtered by status. The get scheduled posts example posts to https://api.buffer.com with Authorization: Bearer YOUR_API_KEY and filter: { status: [scheduled] }. Page with first and after. The introduction says the same API can also retrieve sent and draft posts. Free includes 1 API key and 1,000 requests per channel per month, up to 3,000.
curl -X POST 'https://api.buffer.com' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{"query":"query { posts(first: 20, input: { organizationId: \"your_org_id\", filter: { status: [scheduled] }, sort: [{ field: dueAt, direction: asc }] }) { edges { node { id text status dueAt channelId } } pageInfo { hasNextPage endCursor } } }"}'What does not come out
- The queue, unless you copy it or call the API. Zapier to Google Sheets is the workaround Buffer documents in the calendar article.
- Ideas that were never turned into posts. Copy those by hand.
- Community inbox history. The Insights export is performance, not the comment thread.
- Media files. Download originals before you cancel.
Bring the file to Import CSV
Open Dashboard, then Posts & history, then Import CSV. Buffer's queue is not a file you can drop there. The file you can download is Insights posts.csv (inside the CSV zip), and that file is published posts plus metrics, not the future queue.
Buffer's Using Insights article, re-opened 5 November 2026, describes each posts.csv row in prose. It does not print the header row. The only header word it names is a Statistics column, which holds leftover metrics. Open your file and rename the column that holds each field below. Do not guess a spelling this page has not seen.
| What the help article names | Rename that column to | Header string confirmed? |
|---|---|---|
| post excerpt | text | No. Named in a sentence, not as a header. |
| published date and time | scheduled_at | No. Named in a sentence, not as a header. |
| post URL | link | No. Named in a sentence, not as a header. |
| Buffer tags | tags | No. If your header is exactly tags or Tags, it already matches. |
| Post ID, post type, metrics, Statistics | Leave them | Statistics is the one header word Buffer prints. Unknown columns are ignored. Analytics are not imported. |
The same article does not name a network column, an account column, a timezone, or a media URL. Add network and account yourself. Import CSV requires a network column, and it uses the account cell unless that network has exactly one connected account. Media must be an http(s) URL you host. The importer does not fetch a file from Buffer. A date with no timezone uses your browser timezone in the dashboard. On the API, send defaultTimezone.
If you copied the queue by hand, use the template columns instead of inventing headers: text, scheduled_at, timezone, network, account, media_urls, link. Download that template from the Import CSV dialog (the file name is timetopost-drafts-template.csv). Signed in, the same file is GET /api/drafts/import-template.
Pricing, from buffer.com/pricing.md on 4 November 2026: Free is $0 for up to 3 channels and 10 scheduled posts per channel. Essentials is $6 per channel per month for the first 10 channels on monthly billing, and the yearly example for 1 channel is $5 per month. Team is $12 per channel per month monthly, $10 per month yearly for 1 channel. Yearly billing is about two months off. Buffer is the better pick when you want that free plan, a community inbox, or channels TimeToPost does not publish (the pricing page lists Facebook, YouTube, Pinterest, Google Business Profile and Substack among others).
Export posts from Hootsuite
Hootsuite's article Export your content calendar (updated 21 September 2026, help page dated 21 October 2026) is the source. Re-opened 5 November 2026. The article dates were unchanged, and the article still does not print the CSV header row. Use CSV if you are switching.
| CSV | ||
|---|---|---|
| Date range | Up to 365 days, as far back or forward as one year | Up to 1 week |
| More than 500 posts | CSV only | Not supported |
| Unscheduled posts pending approval | Optional include | Not offered in the CSV step |
- Go to Perch and select Calendar. Filters you set also apply to the export.
- Select Export, then choose a file format.
- For CSV, choose whether to include unscheduled posts in your organization that are pending approval.
- Select a date range, then select Export.
- Download from the link Hootsuite sends. The link expires one week from the export date. Media links in the file are valid for one week too. A new export refreshes them.
The CSV includes, for each post published through Hootsuite, the author, the type of media attached, links to that media, approval history, and internal team comments (author, date and comment text). The same article says exports do not currently include post targeting details, location tags on Instagram posts, ads, or unscheduled drafts. Copy those drafts somewhere else before you cancel.
Bring the CSV to Import CSV
A Hootsuite calendar CSV imports directly when the headers are Message, Date, Time, Social network and Social profile. Those are the names TimeToPost accepts, matched without caring about case, spaces or punctuation. Checked in the importer on 5 November 2026. Hootsuite's help article does not publish that header row, so confirm the first line of your file. If a name differs, rename it to one of these, or to the template column on the right.
| Header TimeToPost accepts | Lands on |
|---|---|
| Message | text |
| Date | scheduled_at |
| Time | time, combined with Date |
| Social network | network |
| Social profile | account |
Extra columns, including author, approval history and internal comments, are ignored. They are not stored as an approval record. A US-style date such as 06/01/2027 is read as MM/DD/YYYY and the dialog warns you. A date with no timezone uses your browser timezone in the dashboard. Download media before the one-week link expires and put an http(s) URL you control in the media column. The importer does not download Hootsuite's files. Open Dashboard, then Posts & history, then Import CSV, or send the file to POST /api/drafts/import-csv. The template download is the Download template button in that dialog, and GET /api/drafts/import-template while you are signed in.
The calendar file is posts, not performance. Export any Analytics reports you still need before the plan ends. This page did not re-check a separate analytics-export click path on 4 November 2026, so follow whatever Hootsuite Analytics shows in your account.
Hootsuite's plans page FAQ says paid plans start at $99 for Standard, $199 for Professional, and up to $399 for Advanced. The page says displayed prices are based on annual billing, per user, and do not include tax. Standard manages up to 10 social accounts. Professional and Advanced say unlimited. Hootsuite is the better pick when you need ads, social listening, a shared inbox, or approval workflows across a large team. It also has Bulk Composer, which schedules from a CSV you prepare. That is the opposite direction of a move: it does not read another tool's export into TimeToPost.
Leave Later
Later documents an Instagram analytics CSV, and a share link for the Instagram calendar. It does not document a queue file you can download.
Instagram analytics CSV
From Export Later's Instagram Analytics as a CSV, available on Starter, Growth and Scale, for Instagram business and creator profiles:
- On Later for desktop, open the Analytics tab that holds the data you want.
- In that section, select the date range.
- Select Export CSV.
Each section downloads as its own CSV. Graphs cannot be exported as files. Re-opened 5 November 2026. The article lists the reports you can export, including Instagram Detailed Post Performance, and it does not name a single CSV header. Later's plan guide also lists LinkedIn analytics CSV on Growth and Scale. This page did not open a separate how-to for Facebook, TikTok, Pinterest or Threads CSV files, so do not assume those exist, and do not assume their column names.
The scheduled calendar
Share Your Instagram Content Calendar is a view link, not a file. On the Instagram Visual Planner, select Share Calendar at the bottom of the page. The link shows scheduled posts with media, caption, date and time, and it expires 48 hours after you create it. Later's draft article and the share article both say draft posts are not included. The plan guide limits Share Calendar to Growth and Scale, and to Instagram only.
To move the queue, copy each post into the TimeToPost template and download media from the media library. Do that for every network, not only Instagram. The share article, re-opened 5 November 2026, shows media, caption, date and time. It is a link, not a file, and it does not name spreadsheet columns.
Bring it to Import CSV
There is no confirmed Later header to rename, because neither the analytics article nor the share article prints one. Copy what you can see into the template, then open Dashboard, then Posts & history, then Import CSV. Download template in that dialog saves timetopost-drafts-template.csv. Signed in, the same file is GET /api/drafts/import-template.
| What you can see | TimeToPost column | Later CSV header |
|---|---|---|
| caption on the share link | text | Not published. Do not invent one. |
| date and time on the share link | scheduled_at | Not published. Do not invent one. |
| the Instagram profile you shared | account | Not published. Do not invent one. |
| network | network. Use instagram for that share link. | Not published. The share link is Instagram only. |
| media on the share page | media_urls, as an http(s) URL you host | Not published. The importer does not fetch Later files. |
The share link expires 48 hours after you create it, and draft posts are not on it. Analytics CSVs are metrics. Unknown columns are ignored, and follower or performance numbers are not imported as analytics.
Yearly prices on later.com/pricing on 4 November 2026, with the yearly toggle on: Starter $18.75, Growth $37.50 and Scale $82.50 per month, billed yearly (the page says 3 months free, 25% off, taxes extra). Starter is 1 social set (8 profiles) and up to 30 posts per profile. Later is the better pick when the visual Instagram planner, Link in Bio, or Snapchat, Pinterest, YouTube or Facebook is why you pay. TimeToPost does not publish those last four on the public network list.
Postiz alternative: get the posts out first
Postiz's docs do not describe an Export button for posts. They do describe a public API. The key lives in Settings, Developers. On Postiz Cloud that tab is Standard and above. A self-hosted install has it on every install. Requests send the key itself in the header, Authorization: your-api-key, and the API allows 30 requests per hour. Source: Developer settings and List Posts.
- Copy the API key from Settings, Developers.
- Call
GET /postswithstartDateandendDatein UTC ISO format. Cloud base URL:https://api.postiz.com/public/v1. Self-hosted:https://{your-domain}/api/public/v1. Ask for a wide range so you stay inside 30 requests an hour. - Save the JSON. Each post includes
id,content,publishDate,state(QUEUE,PUBLISHED,ERRORorDRAFT),releaseURL,error,settings, andintegration(id,providerIdentifier,name,picture).
curl -H "Authorization: YOUR_API_KEY" \ "https://api.postiz.com/public/v1/posts?startDate=2026-01-01T00:00:00.000Z&endDate=2026-12-31T23:59:59.000Z"
Bring the JSON to Import CSV
Save that JSON and upload it on Dashboard, then Posts & history, then Import CSV. A body shaped as { posts: [...] } with content, publishDate and integration imports directly. Checked in the importer on 5 November 2026. integration.providerIdentifier is the network. integration.name is the account. state is ignored, so a queued or published post still lands as a pending draft. Nothing is scheduled or published until you approve it. An array of posts with content and publishDate is accepted too. Image and media values are used only when they are http(s) URLs. The template button in the dialog is for CSV. This JSON does not need that rename.
| Postiz field | Lands on |
|---|---|
| content | text |
| publishDate | scheduled_at |
| integration.providerIdentifier | network |
| integration.name | account |
| image or media, when the value is an http(s) URL | media_urls |
| tags | tags, stored on the draft, not applied as a campaign |
The list response has no like, view or reach fields. Analytics is a different call: GET /analytics/post/{postId} with a date query for how many days to look back. The docs index also describes List Media for files already in the library (newest first, 18 per page). The List Posts schema has no comment or inbox fields.
Postiz Cloud prices in Plans and limits, which says the pricing page wins if the two disagree: Standard $29 per month or $278 per year (5 channels), Team $39 or $374 (10), Pro $49 or $470 (30), Ultimate $99 or $950 (100). Posts per month are unlimited on every paid plan. There is no free plan. A 7 day trial is the usual start. The public API, CLI and MCP are on every paid plan. Postiz is the better pick when you need platforms TimeToPost does not publish publicly (the API overview names Facebook, YouTube, Reddit, Pinterest, Discord and Slack among its 27), or when you want to self-host. Postiz's introduction says it schedules to 34 social platforms. Both numbers are theirs. We did not try to reconcile them.
Import the queue in TimeToPost
TimeToPost imports posts as pending drafts. Checked against the product on 5 November 2026. Open Dashboard, then Posts & history, then Import CSV. The same import is POST /api/drafts/import-csv and the MCP tool import_posts_csv. Nothing is scheduled or published until a person approves it.
Caps are 200 rows and 1 MB per upload. A file over either cap is refused and nothing is written. Duplicates are skipped: the same connected account, the same time, and the same text, including a draft you already imported. It does not import analytics, followers or media files. A media cell must be an http(s) URL. The server does not fetch it. Pinterest rows are rejected because a Pin needs a board in the composer. Threads, Bluesky and Mastodon rows are rejected because those networks are not draft platforms in this importer.
Download the template in the Import CSV dialog. The file is timetopost-drafts-template.csv, with columns text, scheduled_at, timezone, network, account, media_urls, first_comment, link and tags. Signed in, GET /api/drafts/import-template returns that same file. Header names are matched without caring about case. first_comment and tags are stored on the draft. They are not posted as a comment and they are not applied as a campaign. A status column is ignored. In the dashboard, a date with no timezone uses your browser timezone. The API field is defaultTimezone. The MCP field is default_timezone, and dry_run is required there. The dialog checks the file first, then you confirm the drafts.
Analytics history does not transfer. TimeToPost measures posts it publishes, from the day you connect the account. A draft never publishes on its own. These other paths still create drafts if you would rather not use the file:
- Short queue. Paste each post into the composer, attach the media you downloaded, and save it as a draft or schedule it.
- AI assistant. Connect it to
https://api.timetopost.co/mcpand ask it to callcreate_draftsonce per row of your CSV. That tool always files drafts as pending approval. Passaccount_idsfromlist_integrationswhen you have more than one account on a network.schedule_hintcan beoptimalor a future ISO time. Approve withapprove_draftor in the dashboard. See how an AI agent schedules posts. - CLI.
npx timetopost(Node 18+).draftnever sends a schedule time. - REST API.
POST https://api.timetopost.co/api/postswithAuthorization: Bearer ttp_.... LeavescheduledAtoff and the post is stored as a draft. The token is created in Settings, API. Details are in the API docs. - n8n. Install the community node
n8n-nodes-timetopost, then use resource Draft, operation Create. The node description says the draft waits for approval and never publishes on its own. Setup is on the n8n page.
npx timetopost login npx timetopost accounts npx timetopost draft --text "The caption from your export" --account "Account name"
Before you rebuild, run the captions through the free Bulk Caption Counter. It shows which lines break a network's length limit.
TimeToPost publishes to 15 networks: Instagram, X, Bluesky, Mastodon, Pixelfed, Telegram, Tumblr, WordPress, Ghost, DEV, Whop, Buttondown, TikTok, LinkedIn, and Threads. TikTok public posting: Coming soon. Facebook is not on the public network list. If Facebook, YouTube, Pinterest, Snapchat or Reddit is most of the old queue, stay on the tool that already posts there.
Plans, from the pricing page: Starter is $12 a month ($9.60 a month billed annually) with unlimited connected accounts and up to 30 scheduled posts a month. Pro is $49.99 a month. Growth is $99 a month. Annual billing is 20% off. A busy queue that needs more than 30 posts a month needs Pro or Growth. The $12 plan breakdown covers what counts as one post.
Client approvals exist on every paid plan. Approval history and internal comments from the old tool do not move. Keep the export as the record. Prices and limits for Buffer, Hootsuite, Later and the other tools we checked sit on the alternatives overview. Buffer, Hootsuite and Later are also compared on one page.
How we checked
Competitor steps and prices were read on each company's own help, docs or pricing page on 4 November 2026. Where a page did not state a fact, this guide leaves it out. TimeToPost's network list is the public proven set, prices match the pricing page, the 30-post Starter cap is the plan default, and the other draft paths are the MCP create_drafts tool, npx timetopost draft, POST /api/posts without scheduledAt, and the n8n Draft operation. The importer facts (Import CSV, POST /api/drafts/import-csv, import_posts_csv, the 200 row and 1 MB caps, duplicate skipping, and the header names) were read from the product on 5 November 2026. Buffer's calendar article, Buffer's Using Insights article, Hootsuite's export article, Later's Instagram CSV article and Later's share-calendar article were re-opened the same day. Where a vendor page did not print a CSV header, this guide says so.
Frequently asked questions
Can I export scheduled posts from Buffer?
Not from the calendar. Buffer's calendar help says it does not currently support exporting scheduled posts directly. Paid plans can export Insights (published post details and metrics) as a CSV zip, Markdown or PDF. The GraphQL API can list posts with status scheduled. Checked 4 November 2026.
How do I export posts from Hootsuite?
In the Social OS calendar, open Perch, select Calendar, filter if you need to, then select Export and choose CSV or PDF. A CSV can cover up to 365 days. The download link and the media links expire after one week. Unscheduled drafts, ads, Instagram location tags and targeting details are left out. Checked 4 November 2026.
Does Later export the content calendar as a file?
No file export for the queue is documented. Growth and Scale can share an Instagram calendar link that expires 48 hours later and shows scheduled posts only, not drafts. Instagram analytics CSV is on Starter, Growth and Scale. LinkedIn analytics CSV is on Growth and Scale. Checked 4 November 2026.
How do I export posts from Postiz?
Postiz documents a public API, not an export button. Settings, Developers holds the API key on Postiz Cloud Standard and above (every self-hosted install). GET /posts with startDate and endDate returns each post's content, publishDate, state and channel. The limit is 30 requests per hour. Checked 4 November 2026.
Does TimeToPost import a CSV from another scheduler?
Yes. Open Dashboard, then Posts & history, then Import CSV. The same import is POST /api/drafts/import-csv and the MCP tool import_posts_csv. Rows become pending drafts. Nothing is scheduled or published until a person approves. Caps are 200 rows and 1 MB. Duplicates are skipped. It does not import analytics, followers or media files. Media cells must be http(s) URLs. Pinterest, Threads, Bluesky and Mastodon rows are rejected. A Hootsuite calendar CSV and a Postiz posts JSON file import directly. Buffer and Later files need their columns renamed first. Download the template from the Import CSV dialog. Checked 5 November 2026.
What should I save before I cancel Buffer, Hootsuite, Later or Postiz?
The future queue, published history, analytics for the period you care about, and the original media files. Do it while the old plan is still active. A new scheduler, including TimeToPost, starts measuring on the day you connect it and cannot see the old numbers.
Import the queue in TimeToPost: Dashboard, Posts & history, Import CSV. Drafts wait for your approval. Unlimited accounts from $12 a month.
Start free