Industry charts of the best time to post average millions of accounts across every niche and timezone. They’re a sensible default, and our best time to post on Twitter article covers them. What they can’t tell you is when your followers respond to your posts.
This guide covers the personal version of the question. It shows how Xholic’s free Best Time to Tweet tool builds its answer, how to read the heatmap without fooling yourself, how much data you need before trusting it, and how to confirm the result with a short posting test.
What the tool looks at
The tool only uses public data. For the handle you enter, it collects up to 30 of the account’s most recent original posts. Replies and reposts are left out, because they say more about when you were reading than about when your audience responds. For each post it reads the publish time and the public counts: likes, replies, reposts, bookmarks and views.
It does not see impressions from X Analytics, profile visits or when your followers are online. X doesn’t share follower activity publicly, so the tool measures when posts got a response, which is the closest public signal.
| Input or rule | What the tool does |
|---|---|
| Handle | @name, name or a profile link (x.com or twitter.com) |
| Timezone | Any IANA timezone, such as America/New_York. Your browser’s timezone is filled in for you |
| Sample | Up to 30 recent original posts. Replies and reposts are excluded |
| Minimum for personal results | 10 dated original posts. Below that you get starter times |
| Output | One suggested time for each day of the week, a 7 × 24 heatmap, insights and caveats |
| Protected accounts | Refused, because their posts aren’t public |
How to run it, step by step
Here is a full result for our own account, @xholicai. The numbers match the steps.

Step 1: Enter the handle
Type a handle or paste a profile link into the first field (1). Use your own account, or a peer with a similar audience if you don’t have enough posts yet.
Step 2: Choose the timezone
The timezone field (2) starts with your browser’s timezone. Change it to where most of your audience lives, not where you happen to be. The next section explains why this matters more than it looks.
Step 3: Press Find times
Press Find times (3). The profile card and results appear after a few seconds. The same handle and timezone return the same result for about 10 minutes, so re-running straight away won’t change anything.
Step 4: Read the suggested times
The Suggested posting slots list (4) gives one time for each day of the week, in week order. The summary above the results names the single best time, such as “best time to post is around 7:47 PM”, without a day, because the scores rank hours rather than days. The line under the list tells you how much to trust it:
- Smart signals · 30 posts sampled means the account had at least 10 usable posts and the times are personal.
- Starter defaults with “few posts, so general X activity fills the gaps” means the account had fewer than 10. The times come from a general activity curve, not from the account.
Step 5: Check the heatmap and insights
The heatmap (5) shows where the account actually posted and how those posts did. Insights and caveats (6) sit underneath. “Strongest timing window” names the single hour the tool rated highest.
How the suggested times are calculated
The method explains results that look odd at first, like @xholicai getting only evening suggestions despite rarely posting after 3 PM.
- Score each post. Each post gets likes + 3 × replies + 4 × reposts + 5 × bookmarks + log10(views + 1). The score is then compressed on a log scale, so one viral post can’t decide an hour on its own.
- Average by hour of day. Posts are grouped by the hour they went out in your chosen timezone, across all seven days. Each hour’s average is blended with two “average” posts, so an hour with a single lucky post is pulled back toward normal.
- Compare with the account’s own average. An hour where posts beat the account’s average gets a boost, up to 2×. An hour where they did worse is cut, down to 0.5×. Hours with no posts stay neutral.
- Apply it to a general activity curve. The boost multiplies a baseline that reflects when X is generally busy: highest in the late morning, mid-afternoon and from 6 PM to 10 PM, lowest overnight. Each hour is then smoothed with its neighbours.
- Pick a time for each day. The tool takes the best-scoring hours and sets a time a few minutes past the hour, such as 7:12 or 8:47. It avoids :00 and quarter-hours so your posts don’t land alongside every other scheduled post, and it gives each day a different time.
Two things follow from this:
- Untested evening hours often win. With 30 posts and the 2× limit, an hour you’ve posted in needs to beat your average by roughly double before it outranks an evening hour you’ve never tried. That’s what happened with @xholicai. The tool is effectively saying “nothing in your history beats the general evening peak, so try it.” That’s a hypothesis to test, not a finding.
- The days are a spread, not a day-of-week finding. Hour scores are pooled across the week, so the tool lists the slots in week order and doesn’t rank one day above another. To compare days, look at the heatmap rows, and confirm with your own test.
How to read the heatmap
Rows are days (Sunday to Saturday) and columns are hours (12 AM to 11 PM), both in the timezone you chose. Each post adds its score to its cell. The cell with the highest total is shaded darkest and the rest are scaled against it. Empty cells mean no posts, not a bad hour.
Because cells add up, a dark cell can mean either strong posts or simply more posts. In the @xholicai map, Friday at 1 PM is the darkest cell, and it holds three posts. Screen readers announce each cell’s score and post count. Sighted users only see the shade, so keep in mind that a dark cell may be a busy slot rather than a strong one.
One exceptional post can also light up a cell on its own. Here is @NASA, a much larger account, run in America/New_York:

Use the heatmap to answer three questions:
- Where do I actually post? A tight cluster means your sample only covers a few hours, so every other hour is untested.
- Is a dark cell one post or several? Treat a cell with one post as an anecdote. Look for hours that are dark across several days.
- Do the suggested times sit inside or outside my cluster? Inside means your own data supports them. Outside means they come from the general curve and need testing.
Timezones: pick your audience’s, not yours
X stores every post with a universal timestamp. The tool converts each one into the timezone you enter, so hours and days move. A post at 10 PM on Friday in New York is 3 AM on Saturday in London, and it lands in a different row.
Zones with half-hour offsets change the picture even more. Here is the same set of 30 @xholicai posts in New York time and in India Standard Time (UTC+5:30):

The choice also changes the suggestions, because the general activity curve is applied in the local hours of the zone you pick. With New York selected, @xholicai’s suggestions landed between 7 PM and 9 PM Eastern. With Kolkata selected, they landed between 8 PM and 9 PM India time. Those are completely different moments.
Practical rules:
- Enter the zone where most of your audience lives. If your followers are mostly in the US, use a US zone even if you live in Berlin or Bengaluru.
- Split audiences need two runs. Run it in each main zone and look for times that work in both, such as a US morning that’s also a European afternoon.
- Match your scheduler. Copy the times into a scheduler set to the same timezone, or convert them first.
- Mind the clock changes. The US and Europe change clocks on different weekends, so the gap between them shifts by an hour for a few weeks around each change. Named zones like
Europe/Londonhandle daylight saving for you. A fixed offset does not.
How many posts you need
The tool asks for 10 original posts before it shows personal results and never uses more than 30. Those are the tool’s limits. Here is how to judge your own sample:
| Your sample | What you can trust |
|---|---|
| Under 10 posts | Nothing personal yet. Use the starter times, or check a peer account with a similar audience |
| 10 to 20 posts | Which hours you post in, and whether one or two hours clearly lead |
| 20 to 30 posts | Hour-of-day patterns where an hour holds 4 or more posts |
| Any sample | Day-of-week differences need far more data than 30 posts. Confirm them with a test |
The sample is your most recent posts. A prolific account’s 30 posts may span three days, which means most of the week has no data at all. A slower account’s 30 posts may cover two months and include older posts written for a different audience. Look at how many weekdays the heatmap actually covers before you act on it.
Confirm it with a 2–4 week posting test
The tool gives you a candidate. A test tells you whether it’s better than what you already do.
- Pick two windows. Window A is the tool’s top suggestion. Window B is the hour you post in most now, usually your darkest heatmap cluster.
- Alternate days. Post in A on one day and B the next for two weeks. Use four weeks if you post less than once a day. Aim for at least 6 to 8 posts in each window.
- Keep everything else equal. Spread the same mix of formats and topics across both windows. Don’t save your best post for the window you expect to win.
- Measure after a fixed delay. Record each post’s numbers 24 to 48 hours after posting. Compare engagement per view rather than raw likes, so one widely seen post doesn’t decide the test. The engagement rate calculator does that sum for you, and our guide on calculating Twitter engagement rate explains the formula.
- Compare medians, not averages. The median ignores the one post that took off.
- Decide and re-run. If one window wins clearly in both weeks, make it your default. If the results are close, timing isn’t what’s holding you back, and topics, hooks or posting frequency deserve the attention. Then run the tool again. Your test posts are now part of the sample.
If your account has access to X’s own analytics, use its impressions alongside the public view counts. They capture more than the public numbers the tool can see.
Troubleshooting
“X handles use 1–15 letters, numbers, or underscores. Check the spelling.” The handle contains spaces or other characters. Paste the profile link instead, or type only the part after x.com/.
“Check the handle and timezone. Timezones look like America/New_York or Europe/London.” The timezone isn’t a valid IANA name. Abbreviations like EST or IST and city names alone often fail. Use the Region/City form.
“This account is protected, so its posts aren’t public.” Protected posts can’t be analysed. Check a public account with a similar audience instead.
“We couldn’t find that account on X.” The handle is misspelled, or the account was renamed, suspended or deleted.
“You’ve run a lot of checks in a short time.” Wait a few minutes. When the tool knows how long, the message tells you.
It says Starter defaults. The account has fewer than 10 recent original posts with dates. Post more, then run it again.
Frequently asked questions
Is the Best Time to Tweet tool free?
Yes. There’s no signup and you don’t connect your X account. It reads public data only.
Does it show when my followers are online?
No. X doesn’t publish follower activity. The tool shows when the account’s posts earned engagement and combines that with a general activity curve.
Why are the suggested times outside the hours I usually post?
Hours with no posts stay neutral, and the general curve peaks in the evening. Unless one of your usual hours beats your average by a wide margin, an untested evening hour can rank higher. Test it before you switch.
Which timezone should I enter?
The one where most of your audience lives. Both the heatmap and the suggested times change with it.
How many posts does it need?
At least 10 original posts for personal results. It never uses more than the 30 most recent.
Can I check someone else’s account?
Yes, any public account. It’s useful for studying peers before you have enough history, but their audience and timezone may differ from yours.
How often should I re-run it?
After each posting test, and whenever your audience changes, for example after a post brings in followers from another region. Monthly is plenty for most accounts.
Related guides and tools
- Best time to post on Twitter: industry benchmarks and the general case, before you personalise it.
- How often to post on Twitter: frequency matters as much as timing.
- How to schedule Twitter posts: put your tested times into a schedule.
- X Profile Analytics guide: the full content and engagement breakdown for any public account.
- Twitter engagement rate calculator: compare test windows fairly.




