Blog

The best time to post on X (Twitter), from 10,699 posts

Kevin Wang
Kevin Wang
Founder, AnyAPI · November 7, 2026
twitterxdata-studysocial-mediascheduling
The best time to post on X (Twitter), from 10,699 posts
Key findings
  • Weekend posts did about 8% better than weekday posts. Buffer, Sprout Social and SocialPilot say the opposite. The lead held for large and mid-size accounts and without viral posts.
  • The hour you post barely matters. Every time of day was within a few percent of average. About half the posts in every time block beat their account's usual views.
  • Tuesday to Thursday, the days most guides recommend, did worse than the rest of the week. Thursday was weakest and had the most posts.
  • Posts sent exactly on the hour, a sign of scheduling, did slightly worse than posts sent at other minutes.

Built on AnyAPI

475 scraping and data APIs behind one key.

Every endpoint in this post is one call away. Pay per request in USD from a prepaid wallet, with automatic failover when a provider breaks. No subscription, no card to start.

Get ~160 free requests$0.10 of credit on signup.

Every guide to posting on X recommends a time. Most recommend midweek mornings and say to avoid weekends and evenings. If you run company or client accounts, you may use that advice to time your best posts. But it comes from adding up engagement across millions of posts, which favors the hours when large, busy accounts post.

I compared recent posts from 236 public X accounts across 85 niches with each account's usual views. A brand with millions of followers and a founder with a few thousand count the same. A post scores high only if it beats that account's usual views. By this measure, the hour barely matters, and weekends do better despite most guides' advice.

Mon 12a ET: 0.99× (n=167)Mon 1a ET: 1.03× (n=149)Mon 2a ET: 1.04× (n=158)Mon 3a ET: 1.00× (n=160)Mon 4a ET: 1.00× (n=177)Mon 5a ET: 0.98× (n=200)Mon 6a ET: 0.96× (n=250)Mon 7a ET: 0.98× (n=295)Mon 8a ET: 0.99× (n=374)Mon 9a ET: 1.03× (n=454)Mon 10a ET: 1.03× (n=522)Mon 11a ET: 1.04× (n=533)Mon 12p ET: 1.03× (n=557)Mon 1p ET: 1.04× (n=511)Mon 2p ET: 1.02× (n=467)Mon 3p ET: 1.02× (n=413)Mon 4p ET: 1.03× (n=374)Mon 5p ET: 1.03× (n=319)Mon 6p ET: 1.00× (n=287)Mon 7p ET: 0.98× (n=250)Mon 8p ET: 0.98× (n=233)Mon 9p ET: 0.95× (n=211)Mon 10p ET: 0.98× (n=190)Mon 11p ET: 0.98× (n=184)Tue 12a ET: 1.01× (n=178)Tue 1a ET: 1.03× (n=166)Tue 2a ET: 1.06× (n=183)Tue 3a ET: 1.06× (n=180)Tue 4a ET: 1.07× (n=209)Tue 5a ET: 1.09× (n=243)Tue 6a ET: 1.10× (n=281)Tue 7a ET: 1.06× (n=330)Tue 8a ET: 1.06× (n=409)Tue 9a ET: 1.03× (n=455)Tue 10a ET: 0.99× (n=543)Tue 11a ET: 0.98× (n=574)Tue 12p ET: 0.96× (n=574)Tue 1p ET: 0.96× (n=576)Tue 2p ET: 0.96× (n=570)Tue 3p ET: 1.00× (n=476)Tue 4p ET: 0.98× (n=437)Tue 5p ET: 0.99× (n=414)Tue 6p ET: 1.00× (n=342)Tue 7p ET: 1.01× (n=328)Tue 8p ET: 0.98× (n=324)Tue 9p ET: 1.00× (n=282)Tue 10p ET: 1.01× (n=259)Tue 11p ET: 0.98× (n=232)Wed 12a ET: 1.01× (n=190)Wed 1a ET: 1.07× (n=161)Wed 2a ET: 1.05× (n=179)Wed 3a ET: 0.98× (n=179)Wed 4a ET: 1.01× (n=211)Wed 5a ET: 0.98× (n=262)Wed 6a ET: 0.97× (n=307)Wed 7a ET: 0.95× (n=341)Wed 8a ET: 0.96× (n=452)Wed 9a ET: 0.96× (n=492)Wed 10a ET: 0.99× (n=550)Wed 11a ET: 0.98× (n=594)Wed 12p ET: 0.99× (n=628)Wed 1p ET: 0.98× (n=572)Wed 2p ET: 1.00× (n=584)Wed 3p ET: 0.97× (n=526)Wed 4p ET: 0.98× (n=485)Wed 5p ET: 0.98× (n=441)Wed 6p ET: 1.00× (n=395)Wed 7p ET: 0.97× (n=346)Wed 8p ET: 0.98× (n=321)Wed 9p ET: 0.97× (n=275)Wed 10p ET: 1.01× (n=240)Wed 11p ET: 0.99× (n=219)Thu 12a ET: 1.15× (n=240)Thu 1a ET: 1.06× (n=195)Thu 2a ET: 1.01× (n=179)Thu 3a ET: 1.00× (n=191)Thu 4a ET: 0.99× (n=212)Thu 5a ET: 1.01× (n=247)Thu 6a ET: 1.00× (n=312)Thu 7a ET: 0.97× (n=387)Thu 8a ET: 0.93× (n=504)Thu 9a ET: 0.93× (n=582)Thu 10a ET: 0.90× (n=670)Thu 11a ET: 0.89× (n=730)Thu 12p ET: 0.89× (n=760)Thu 1p ET: 0.91× (n=723)Thu 2p ET: 0.90× (n=710)Thu 3p ET: 0.91× (n=638)Thu 4p ET: 0.93× (n=571)Thu 5p ET: 0.95× (n=495)Thu 6p ET: 0.96× (n=414)Thu 7p ET: 1.00× (n=362)Thu 8p ET: 1.07× (n=343)Thu 9p ET: 1.13× (n=310)Thu 10p ET: 1.13× (n=295)Thu 11p ET: 1.15× (n=275)Fri 12a ET: 0.98× (n=191)Fri 1a ET: 0.95× (n=212)Fri 2a ET: 0.94× (n=229)Fri 3a ET: 0.96× (n=238)Fri 4a ET: 0.99× (n=275)Fri 5a ET: 1.00× (n=305)Fri 6a ET: 0.97× (n=351)Fri 7a ET: 0.96× (n=415)Fri 8a ET: 0.97× (n=502)Fri 9a ET: 0.96× (n=589)Fri 10a ET: 0.97× (n=618)Fri 11a ET: 0.98× (n=600)Fri 12p ET: 0.98× (n=572)Fri 1p ET: 0.97× (n=520)Fri 2p ET: 0.99× (n=431)Fri 3p ET: 0.99× (n=366)Fri 4p ET: 1.02× (n=335)Fri 5p ET: 1.06× (n=296)Fri 6p ET: 1.08× (n=243)Fri 7p ET: 0.99× (n=229)Fri 8p ET: 0.98× (n=225)Fri 9p ET: 0.97× (n=198)Fri 10p ET: 0.92× (n=206)Fri 11p ET: 0.92× (n=189)Sat 12a ET: 1.04× (n=135)Sat 1a ET: 1.04× (n=135)Sat 2a ET: 1.05× (n=129)Sat 3a ET: 0.99× (n=133)Sat 4a ET: 1.00× (n=140)Sat 5a ET: 1.07× (n=165)Sat 6a ET: 1.17× (n=181)Sat 7a ET: 1.19× (n=217)Sat 8a ET: 1.18× (n=253)Sat 9a ET: 1.19× (n=276)Sat 10a ET: 1.14× (n=295)Sat 11a ET: 1.07× (n=307)Sat 12p ET: 1.06× (n=291)Sat 1p ET: 1.05× (n=296)Sat 2p ET: 1.05× (n=291)Sat 3p ET: 1.06× (n=262)Sat 4p ET: 1.08× (n=241)Sat 5p ET: 1.03× (n=217)Sat 6p ET: 1.02× (n=173)Sat 7p ET: 1.02× (n=163)Sat 8p ET: 0.98× (n=167)Sat 9p ET: 0.98× (n=163)Sat 10p ET: 1.07× (n=164)Sat 11p ET: 1.07× (n=161)Sun 12a ET: 1.06× (n=130)Sun 1a ET: 1.05× (n=125)Sun 2a ET: 1.04× (n=116)Sun 3a ET: 1.09× (n=115)Sun 4a ET: 1.15× (n=121)Sun 5a ET: 1.08× (n=138)Sun 6a ET: 1.13× (n=158)Sun 7a ET: 1.14× (n=179)Sun 8a ET: 1.14× (n=218)Sun 9a ET: 1.10× (n=249)Sun 10a ET: 1.12× (n=271)Sun 11a ET: 1.09× (n=275)Sun 12p ET: 1.05× (n=293)Sun 1p ET: 1.05× (n=285)Sun 2p ET: 1.06× (n=278)Sun 3p ET: 1.05× (n=283)Sun 4p ET: 1.04× (n=278)Sun 5p ET: 1.04× (n=253)Sun 6p ET: 1.04× (n=216)Sun 7p ET: 0.99× (n=223)Sun 8p ET: 1.01× (n=193)Sun 9p ET: 1.01× (n=176)Sun 10p ET: 1.00× (n=168)Sun 11p ET: 0.99× (n=169)MonTueWedThuFriSatSun12a3a6a9a12p3p6p9p1.19×1.00×0.89×
Views relative to the sample average, by weekday and hour in US Eastern, each cell smoothed over a five-hour window. Blue beats the average post, grey trails it. Every cell's window holds at least 115 posts. 10,699 posts from 236 accounts.

At a glance

QuestionWhat the data says
Best time to post on XNo hour stands out. Every time of day sits within a few percent of the average post
Best daysSaturday and Sunday. Weekend posts beat weekday posts by about 8%
Worst dayThursday, about 5% behind the rest of the week
Are weekday mornings best?No. Weekday 9am to noon did about the same as the rest of the weekday
Are evenings bad?No. 6pm to 11pm did the same as other hours
Does scheduling help?Posts sent exactly on the hour did slightly worse, about 7% fewer views
When do accounts actually post?Half of all posts go out between 8am and 4pm ET on any day, and fewer than one in five on a weekend

Weekend posts did better than weekday posts

Saturday and Sunday posts got about 8% more views than weekday posts from the same accounts. They were the two best days, and weekend mornings did best on the heatmap.

Mon ET: 1.01× (n=1487)1.01×MonTue ET: 1.01× (n=1713)1.01×TueWed ET: 0.98× (n=1790)0.98×WedThu ET: 0.96× (n=2069)0.96×ThuFri ET: 0.98× (n=1667)0.98×FriSat ET: 1.07× (n=991)1.07×SatSun ET: 1.06× (n=982)1.06×Sun
Views relative to the sample average, by weekday in US Eastern. Saturday and Sunday are the two days clearly above the rest, and Thursday is the lowest (n=10,699).

I'd trust this result most because I chose the test before seeing the data. Buffer, Sprout Social and SocialPilot all call weekends the worst time to post on X. I compared weekends with weekdays and tested their other claims. I also checked whether the weekend lead held:

  • Without viral posts: the lead was about 9%.
  • Likes instead of views: the lead was about 7%.
  • Accounts with 10,000 to 100,000 followers, and larger accounts: both groups led by about 8%.
  • Days with the same number of posts: weekend posts still did better. Accounts post less on weekends, but the lead held when comparing days with the same post count.

Accounts post less on weekends. Fewer than one post in five went out on Saturday or Sunday, compared with closer to three in ten if posts were evenly spread. Weekend posts face less competition, and people have more time to scroll. But accounts may save better posts for weekends, so the day itself might not explain the lead.

If you only post on weekdays, try one of your better posts on Saturday or Sunday morning and compare its views with your usual results.

The hour you post barely matters

No time of day helped enough to plan around. After smoothing across nearby hours, results stay within about 4% of average. The six four-hour blocks are all within about 3%.

12a ET: 1.04× (n=270)12a1a ET: 1.03× (n=191)2a ET: 1.02× (n=206)3a ET: 1.00× (n=243)3a4a ET: 1.02× (n=263)5a ET: 1.02× (n=293)6a ET: 1.02× (n=340)6a7a ET: 1.01× (n=421)8a ET: 1.01× (n=523)9a ET: 1.00× (n=587)9a10a ET: 1.00× (n=841)11a ET: 0.98× (n=725)12p ET: 0.98× (n=793)12p1p ET: 0.98× (n=667)2p ET: 0.98× (n=649)3p ET: 0.99× (n=649)3p4p ET: 1.00× (n=573)5p ET: 1.00× (n=426)6p ET: 1.01× (n=424)6p7p ET: 0.99× (n=363)8p ET: 1.00× (n=284)9p ET: 1.00× (n=404)9p10p ET: 1.02× (n=331)11p ET: 1.02× (n=233)
Views relative to the sample average by hour, US Eastern, smoothed over five hours. Bars above 1.00 beat the average post. Hover a bar for the posts sent in that hour (n=10,699).

Close to half the posts in every time block beat their account's usual views, from overnight to evening.

Early afternoon, noon to 4pm, had the most posts and did worst, about 3% below the rest of the day. I noticed this only after comparing all six blocks, so I wouldn't change your schedule for it.

Tuesday to Thursday trailed the rest of the week

Posts from Tuesday to Thursday did about 4% worse than posts on the other four days. Buffer, Sprout Social and SocialPilot all recommend these days. Thursday did worst and had the most posts.

Thursday did poorly mostly during working hours. About 8am to 5pm ET on Thursday was the worst period on the heatmap, while late evening looked fine.

Sprout Social recommends Tuesday to Thursday from noon to 6pm, which did about 5% worse than all other times. Buffer's top choice, Tuesday at 9am, was exactly average.

Scheduled posts did slightly worse

About one post in eight went out in the first minute of an hour. People rarely publish manually at exactly 2:00, so most were scheduled. They got about 7% fewer views than the same accounts' other posts.

Scheduling may not be the cause. People often schedule planned posts, such as launches, webinars and blog links. Those might do worse whenever they're posted; this data can't tell. The gap in likes was smaller and could be chance. If you schedule everything, try posting off the exact hour to look less scheduled, but don't expect much improvement.

How this compares to what's already published

  • Buffer studied millions of posts sent through its tool. It recommends Tuesday at 9am, weekday mornings from 9am to 11am as most reliable, and Wednesday as the best day. Saturday and evenings from 6pm to 11pm rank worst. Times are local to each poster.
  • Sprout Social studied engagement across about 307,000 profiles on six networks. It recommends Tuesday to Thursday from noon to 6pm for X, with Saturday and Sunday ranked worst.
  • SocialPilot studied about 700,000 posts scheduled through its tool. It recommends weekday mornings and 3pm Eastern, with Tuesday to Thursday ranked best and weekends worst.
  • Social Champ studied 3.5 million posts. Unlike the others, it recommends Sunday from 9am to 10am, followed by Monday lunchtime.

These results disagree with the first three on weekdays and weekends, but agree with Social Champ about Sunday. Sunday at 9am also did well here, but with only 42 posts, there's too little data to say more. None of these guides gives a margin of error.

The methods answer different questions. Total engagement across millions of posts favors hours when more people are online and more accounts post, especially large, busy accounts. Comparing each post with its account's usual views tells you more about when to post. You can't change who else posts at 9am on a Tuesday.

How I measured it

The sample contains 10,699 posts from 236 accounts, between three days and a year old. Collecting them through two AnyAPI X endpoints took 1,576 calls and cost $0.75.

  1. Find accounts. I ran one twitter.search_users search per niche across 85 niches, including SaaS founders, growth marketers, nurses, golfers and coffee roasters. Keeping up to five accounts per niche with at least 500 followers and 300 posts gave 423 accounts.
  2. Get each account's posts. I fetched up to four pages of twitter.user_tweets per account, newest first, with about 20 posts per page and their times, views, likes and reposts. I stopped at posts older than a year.
  3. Keep only the account's own posts. I removed 4,588 replies, 4,161 reposts and 37 pinned posts. One more twitter.user_tweets call per account identified pinned posts using a source that marks them. Every post had a time and view count, so none needed a separate twitter.tweet lookup.
  4. Allow time for views. I removed 2,668 posts less than three days old and 1,211 older than a year. I also removed accounts with fewer than eight posts left or identical view counts on every post. That left 236 accounts and 10,699 posts.
  5. Compare each post with its account. I divided views by the account's median and capped scores at 6x either way so one viral post counts once. 308 posts reached the upper cap.
  6. Group and compare. I converted times to US Eastern, grouped posts by weekday, hour and four-hour block, and took each group's geometric mean score. I resampled each comparison by account 1,000 times to check how much different accounts could change it. I recorded the seven guide claims before calculating any results.

This request gets one account's posts. The response shows only the fields used:

curl -sS -X POST https://api.getanyapi.com/v1/run/twitter.user_tweets \
  -H "Authorization: Bearer $ANYAPI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"handle":"HubSpot"}'
{"output":{"found":true,"data":{"nextCursor":"cur_...","tweets":[{"id":"2114778098956739016","createdUtc":1793037364,"views":2953,"likes":15,"retweets":0,"replies":9,"isReply":false,"authorHandle":"HubSpot"},"..."]}},"costUsd":0.00045}

The sample by follower count: 155 accounts over 100,000, 68 between 10,000 and 100,000, 12 between 1,000 and 10,000, and 1 under 1,000.

The limits of this data

  • Total views, not first-day views. I collected view counts three days to a year after posting. They don't show how posts did in their first hour.
  • US Eastern for everyone. The account search returned no location, so I used Eastern time throughout. Results for accounts in London or Lagos are offset by their time difference.
  • Mostly big accounts. People search finds established accounts. Two thirds of the sample has more than 100,000 followers; only 13 accounts have fewer than 10,000. The weekend lead held in both larger groups, but tells you little about small accounts.
  • Better posts may go out on better days. Accounts may save their best posts for weekends, making weekends look better regardless of the day.
  • More recent posts. Four pages holds at most about 80 posts. For accounts posting several times daily, that covers only the last few weeks.
  • Accounts found through search. The 85 English niche searches sometimes returned fan or news accounts instead of people in that niche. Different searches could change an effect this small.
  • Views and a likes check only. I didn't measure replies-per-view, link clicks or follower growth.

The weekend lead is about 8%. Different accounts could put it between about 4% and about 12%. Hourly differences are smaller.

What to do with it

  1. Post at an hour that suits you. No hour consistently did better.
  2. Save one of your better posts for the weekend. Weekend posts did about 8% better, while most accounts posted less.
  3. Don't plan around Tuesday to Thursday mornings. The big guides' recommended times did about average or worse.
  4. Post less during Thursday working hours if you can. This period did worst and had the most competition.
  5. Keep scheduling if you want, but don't expect it to help. Posts sent exactly on the hour did slightly worse, probably because of their content.
  6. Check your own account. Get your posts with twitter.user_tweets. Remove replies, reposts and posts less than three days old. Divide views by your median and compare weekends with weekdays. One page of about 20 posts costs $0.00045.

Frequently asked questions

What is the best time to post on X?
No hour clearly beats the rest. In 10,699 X posts from 236 accounts, each scored against its own account's usual views, every time of day landed within a few percent of the average post. The day mattered more than the hour: weekend posts did about 8% better than weekday posts.
What is the best day to post on X?
Saturday and Sunday. Weekend posts got about 8% more views than weekday posts from the same accounts, and the lead held when the viral posts were set aside. Thursday was the weakest day, about 5% behind the rest of the week.
Is Tuesday at 9am the best time to post on X?
Not in this sample. Posts that went out on a Tuesday in the 9am hour did exactly as well as an average post, though only 93 posts fell in that hour.
Is it bad to post on X on the weekend?
No. Buffer, Sprout Social and SocialPilot all call the weekend the weakest time, but here weekend posts beat weekday posts from the same accounts by about 8%. Accounts posted much less on weekends, fewer than one post in five.
What time zone are these X posting times in?
US Eastern for every account. The account data didn't include a usable location, so accounts outside the US have their hour results shifted by their own time difference. The day results move much less.

The Threads study, LinkedIn study and TikTok study use the same method. Use the X endpoints to check your account or a client's.

Use data responsibly and follow AnyAPI's Acceptable Use Policy.