Best time to post on each social network (and how to find yours in 4 weeks)
Best time to post on each social network (and how to find yours in 4 weeks)
Every year a new batch of reports claims to have found the best time to post on social media. The numbers rarely agree with each other, and they almost never match what you see in your own analytics. That is not because the reports are wrong. It is because "best time" depends on who follows you, where they live, and what they do at 9am on a Tuesday.
This guide gives you two things. First, a set of sensible starting heuristics per network, so you are not posting into the void while you gather data. Second, a four-week testing routine that replaces those heuristics with slots that work for your audience specifically.
Why there is no universal best time
Industry benchmarks are averages across thousands of accounts. A B2B software company in Berlin and a fitness coach in Austin are both in that average, and neither of them is well served by it.
Three things move the "right" time around:
- Audience location. If 60% of your followers are in a different time zone, the published "best time" is already off by hours.
- Audience routine. Office workers check LinkedIn before meetings start. Parents scroll Instagram after bedtime. Developers read Bluesky late at night.
- Platform ranking. Most feeds are no longer chronological. Posting time still matters because early engagement feeds the algorithm, but it matters less than it did in 2016.
So treat every table you see, including the one below, as a place to start, not an answer.
Starting heuristics per network
These are general patterns, not measured data. They are a reasonable default for the first week before you have numbers of your own.
| Network | Starting heuristic | Why |
|---|---|---|
| LinkedIn (profile or page) | Weekday mornings, roughly 8 to 10am in your audience's local time | People check it as part of the work routine, before the day fills up |
| X | Spread across weekday daytime | Fast feed, short half-life; several posts a day at different hours beats one |
| Late morning and early evening | Lunch break scrolling and the post-work wind-down | |
| Facebook Pages | Mid-morning on weekdays | Older, broader audience with a steadier daytime habit |
| Threads | Evenings and weekends | Skews more personal and conversational |
| Bluesky | Evenings and weekends | Smaller, more niche communities that are active off-hours |
| Mastodon | Depends heavily on your instance's region | Federated, so check where your followers' servers are |
| Telegram and Discord | When your community is online, not when the algorithm wants | These are push channels; there is no feed to game |
A note on LinkedIn: company pages and personal profiles often behave differently. Profiles tend to get more reach from conversational posts early in the day, pages from announcements mid-morning. Test them separately.
The 4-week test
You do not need a data team for this. You need a schedule you can stick to, a spreadsheet, and the patience not to change everything after three days.
Week 1: pick your candidate slots
Choose three to four time slots per network based on the heuristics above, adjusted for where your audience actually lives. Most networks show follower location in their native analytics (Instagram Insights, LinkedIn Page analytics, X analytics). If 40% of your followers are in a time zone six hours away, add a slot for them.
Write the slots down. Something like:
- LinkedIn: Tue 8:30am, Wed 9:15am, Thu 8:00am
- Instagram: Mon 11:30am, Wed 6:00pm, Fri 12:00pm, Sun 7:00pm
- X: 9am, 1pm, 5pm on weekdays, rotating
Week 2 and 3: post consistently and tag each post
Schedule everything in advance so that time of day is the only thing you are varying. If you write and publish on the spot, you end up posting when you have time, which is a different experiment.
Any scheduler works for this: Buffer, Later, Publer, Postiz, Postfree, or the native tools. The requirement is that you can set the exact minute and that it publishes reliably. Postfree's queue runs every minute and retries transient network errors three times, which matters for a test like this because a post that lands 40 minutes late contaminates your data.
Keep a simple log with four columns: network, scheduled time, content type (text, image, link, carousel), and the engagement after 48 hours. Content type matters because a carousel will outperform a plain text post regardless of when you publish it. Try to rotate formats evenly across slots.
Week 4: read the results
Pull the 48-hour engagement number for every post. Group by slot. Look at the median, not the average, because one post that gets picked up will skew everything.
What you are looking for:
- A slot that is consistently top two across different content types. That is a winner.
- A slot that is consistently bottom. Drop it.
- Slots that trade places week to week. These are noise. Keep one and test a new candidate in its place.
Then run the same loop again with your new candidates. Two cycles (eight weeks) usually give you a dependable schedule. After that, re-check every quarter, because audiences drift.
What to measure (and what to ignore)
Measure within a fixed window. 48 hours is a good compromise. Shorter windows punish evening posts, longer ones blur the signal.
Use the metric that matches your goal. If you want reach, track impressions. If you want conversation, track replies and comments. If you want traffic, track link clicks, ideally with UTM parameters so you can see them in your web analytics. The free UTM builder at postfree-app.web.app/tools does this quickly, and so do several others.
Ignore follower count changes per post. They are too noisy to attribute to a single time slot.
Ignore likes alone on LinkedIn. Comments and reposts carry far more weight for reach there.
Common mistakes
Changing the content and the time at once. If you post a new format at a new time and it does well, you have learned nothing about either.
Testing for one week. Holidays, news cycles and a single viral post can make any week look unusual. Two weeks minimum, three is better.
Copying a benchmark report literally. Those numbers are usually in US Eastern time. If your audience is in Europe or Asia, convert before you schedule.
Posting at the "best time" everyone else found. If a report says Tuesday 10am is the peak for LinkedIn, Tuesday 10am also has the most competition. Sometimes the second-best slot with less noise wins.
Forgetting the queue is not the audience. Some tools, including Postfree on paid plans, offer suggested or "best time" slots based on your past posts. These are useful once you have data, but in the first month they are guessing as much as you are.
Scheduling around the results
Once you have your slots, build them into the scheduler as a repeating queue. Most tools support this in some form: Buffer calls them posting times, Publer and Postfree let you define time slots per channel and drop content into the next free one.
Keep one or two slots free for timely content that should go out immediately. Scheduling is a default, not a cage.
If you run several brands or clients, do the test separately for each. A client's law firm audience and your own startup's audience will not share a schedule, and a scheduler that supports separate workspaces (Postfree Growth and Agency, Publer and Buffer at their team tiers) makes it easier to keep the data apart.
FAQ
Does posting time still matter with algorithmic feeds?
Yes, but less than it used to. Early engagement in the first hour or two is still a ranking signal on most networks, so posting when your audience is active gives a post a better start. It will not save weak content, and strong content can recover from a bad slot.
How many posts do I need before the data means anything?
Aim for at least six to eight posts per slot before you draw conclusions. With three slots per network, that is roughly two to three weeks of daily posting. Fewer than that and a single outlier will decide the result.
Should I post at the same time on every network?
Not necessarily. Cross-posting the same content to X, LinkedIn and Threads at the same minute is convenient, but the audiences keep different hours. Schedulers let you set a different time per channel on the same post, so use that once your test shows the slots diverge.
My audience is global. What then?
Pick the two time zones that cover the most followers and run a slot for each. For X and Bluesky, where posts age fast, posting the same message twice at different hours is normal. For LinkedIn and Instagram it reads as spam, so choose the larger segment and accept the trade-off.
If you want to run the first week of the test without paying for a tool up front, Postfree's 7-day free trial of Growth includes analytics, best-time suggestions and up to 15 channels for the full experiment, and the free plan (no credit card) covers 3 channels and 15 posts a month if you only need the scheduling. You can sign up for the free plan at https://postfree.app/signup (no credit card) and set up your first test slots in a few minutes.
Schedule everything from one calendar
Postfree publishes to YouTube, TikTok, Instagram, X, LinkedIn, Threads, Bluesky, Mastodon and more, or let your AI assistant post for you through the included API and MCP server. Free plan, no credit card.