The short answer
Your best time to post is the weekday and hour at which your own posts most often beat your own median. Work it out from your account's history, one platform at a time, rather than from a chart of when the average account posts.
The hard part is not the arithmetic but restraint. An hour with one great post in it is luck, not a pattern, so an honest answer is sometimes "not enough data yet".
Why generic charts mislead
Published best-time charts average together accounts with different audiences, countries and habits. Your followers wake, commute and scroll on their own schedule, and a chart built from someone else's followers cannot know it.
They also measure raw engagement, which mostly tells you when large accounts post. The question that matters is narrower: at which hours do your posts do better than your posts usually do?
How to work it out
- Collect your posts, one platform at a time. Date, time posted, platform, kind of post (a reel and a single image behave differently) and one engagement figure, read at the same age for every post. Keep platforms and kinds apart.
- Let each post settle. Leave out posts younger than two days or so; their numbers are still moving. As a rule of thumb, read every post at the same age, such as seven days.
- Compare each post with your median. Divide each post's engagement by the median of your recent posts on that platform. A ratio above 1 beat your usual; below 1 did not. See how to measure against your median.
- Group by weekday and hour. Use the time zone your audience lives in, so Monday 9am means the same thing every week. Average the ratios in each weekday-and-hour cell and count how many posts sit in it.
- Discount thin cells. A cell with one or two posts should barely move your view. A simple fix is to add a few imaginary posts at a ratio of 1 to every cell before averaging, so a cell only stands out once several real posts agree.
- Wait for enough history. With fewer than a handful of measured posts of one kind on one platform, say so rather than naming a best time. Then post at a few different times on purpose, so the next reading has something to compare.
Doing it by hand
One spreadsheet row per post: platform, kind, posted at, engagement, and a ratio column dividing engagement by a MEDIAN over the previous rows for that platform. Add a weekday column with TEXT(date, "ddd") and an hour column with HOUR(time).
A pivot table with weekday down the side, hour across the top, the average ratio in each cell and the count beside it is the whole report. Conditional formatting that shades cells above 1 and greys out cells with fewer than three posts does most of the reading for you.
Re-run it every month or so. Audiences shift with seasons, school terms and festivals, and an answer that was right in spring may not be in December.
Reading the result
- Treat a best time as a starting point for the next few posts, not a rule. Keep a few posts at other times so you can tell if it changes.
- Content beats timing. A strong post at an ordinary hour usually does better than a weak one at the best hour; timing is the last few per cent, not the first.
- Keep kinds apart. If reels do best in the evening and carousels at lunchtime, one combined answer hides both.
- Do not chase single hours. If 6pm, 7pm and 8pm all do well, the answer is the early evening.
How CampaignFlow does this
CampaignFlow works out best times to post nightly from your own results: each post's engagement against your account's median, by weekday and hour, separately for each platform and kind of post, with thinly posted hours pulled towards the platform's typical pattern so one lucky post cannot decide it. Until at least five posts of that kind on that platform have results, it says there is not enough data yet rather than guessing.
Best times show on the Tracking page, and "Use the best time" in the publish dialog moves a single post there. It has no limit on any plan. See the features page.
Questions