The Best Time to Post on TikTok, From 2,487 Videos: It Barely Matters
For most creators, the time you post on TikTok makes very little difference. We measured 2,487 videos from 131 US creators against each creator's usual views. Every three-hour block of the day landed within a few percent of normal. The one day that stood out was Friday, about 11% below usual.
Most "best time to post" advice names an hour, like Tuesday at 9am. We wanted to see whether that holds up when you compare each creator with themselves, so a big account posting at 6pm doesn't make 6pm look good. It mostly didn't.
The short answer
- Day of the week: Friday was the weakest day, at 0.89 times the creator's usual views. Sunday (1.07) and Thursday (1.04) were slightly above. The rest were at about 1.00.
- Time of day: no block stood out. Late morning, 9am to noon New York time, was the highest at 1.04, and the range barely cleared 1.0.
- Posting twice a day: didn't hurt. Videos posted within six hours of the previous one did as well as videos posted after a week off.
- What to do instead: post when you can reply to comments in the first hour, skip Friday if you have the choice, and spend the energy on the video.
The best day to post on TikTok
A score of 1.0 means a video got the creator's usual views. The lines show the 95% range: if a line crosses 1.0, that day isn't clearly different from normal.
| Day | Videos | Vs usual views | 95% range | Got 2x the usual |
|---|---|---|---|---|
| Monday | 423 | 1.00 | 0.93 to 1.07 | 26% |
| Tuesday | 330 | 1.01 | 0.94 to 1.07 | 26% |
| Wednesday | 370 | 0.96 | 0.83 to 1.00 | 21% |
| Thursday | 370 | 1.04 | 1.00 to 1.13 | 25% |
| Friday | 344 | 0.89 | 0.83 to 0.97 | 19% |
| Saturday | 316 | 1.00 | 0.92 to 1.07 | 23% |
| Sunday | 334 | 1.07 | 1.00 to 1.21 | 26% |
Friday is the only day whose whole range sits below normal. Its videos were also the least likely to break out, with 19% getting double the usual views against 26% on Sunday and Monday. A plausible reason: people have plans on Friday evenings, and the videos posted that day get their crucial first hours while their audience is out.
Weekends overall were close to weekdays, at 1.03 against 1.00. Sunday's edge is small and its range touches 1.0, so treat it as "fine," not "best."
The best time of day to post on TikTok
| Time (New York) | Videos | Vs usual views |
|---|---|---|
| Midnight to 3am | 102 | 1.00 |
| 3am to 6am | 33 | 0.91 |
| 6am to 9am | 160 | 0.97 |
| 9am to noon | 447 | 1.04 |
| Noon to 3pm | 596 | 1.01 |
| 3pm to 6pm | 529 | 1.00 |
| 6pm to 9pm | 446 | 1.00 |
| 9pm to midnight | 174 | 1.00 |
From 9am to midnight, every block was within 4% of normal. The early-morning dip rests on very few videos, so it's a weak signal at best.
Why does timing matter so little? TikTok doesn't show your video only to followers who are online right now. The For You feed keeps testing a video with new viewers for days, so a video posted at 2pm and one posted at 8pm both get their chance. Most of a video's views arrive after its first few hours.
Does posting twice a day hurt your views?
No. We looked at how long each creator waited since their previous video:
Videos posted within six hours of the last one got their usual views, and so did videos posted after a week off. There's no sign that a new video "steals" views from the previous one, or that a break makes the next video do better. The creators in our wider study posted a median of 6 to 7 times a week, and their videos held up.
When TikTok creators actually post
The creators in this study posted most often between noon and 6pm New York time, and least often overnight. Monday was the busiest day and Saturday the quietest. Since timing makes so little difference to views, the best schedule is the one you can keep.
What to do instead of chasing the perfect hour
- Post when you can reply. Early comments and replies help a video, and you can only do that if you're around.
- Avoid Friday when you can. It's the one day that was clearly below normal.
- Don't hold a finished video for a "better" time. Waiting doesn't earn more views. Posting it, and the next one, does.
- Post as often as you can make good videos. A second video the same day did as well as the first.
- Check your own numbers. Your audience might differ from the average. The script below shows your views by day.
Find your own best day
This pulls a creator's recent videos and shows their views by posting day, against their own median. In JavaScript (Node 18 or later, as an .mjs file):
const API = "https://api.sociavault.com/v1/scrape";
const HEADERS = { "x-api-key": process.env.SOCIAVAULT_API_KEY };
const TZ = "America/New_York"; // use your audience's time zone
// Lists can come back as arrays or as objects with numbered keys
const asList = (x) => (Array.isArray(x) ? x : Object.values(x ?? {}));
const median = (xs) => {
const s = [...xs].sort((a, b) => a - b);
const mid = Math.floor(s.length / 2);
return s.length % 2 ? s[mid] : (s[mid - 1] + s[mid]) / 2;
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
let videos = [];
let cursor;
for (let page = 0; page < 5; page++) {
// about 50 videos
const params = new URLSearchParams({
handle: "khaby.lame",
sort_by: "latest",
});
if (cursor) params.set("max_cursor", cursor);
const res = await fetch(`${API}/tiktok/videos?${params}`, {
headers: HEADERS,
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = (await res.json()).data ?? {};
videos.push(...asList(data.aweme_list));
if (!data.has_more) break;
cursor = data.max_cursor;
await sleep(1000);
}
const now = Date.now() / 1000;
videos = videos.filter((v) => !v.is_top && (now - v.create_time) / 86400 >= 7);
const usual = median(videos.map((v) => v.statistics.play_count));
const weekday = new Intl.DateTimeFormat("en-US", {
weekday: "long",
timeZone: TZ,
});
const byDay = {};
for (const v of videos) {
const day = weekday.format(new Date(v.create_time * 1000));
(byDay[day] ??= []).push(v.statistics.play_count / usual);
}
Object.entries(byDay)
.map(([day, scores]) => [day, median(scores), scores.length])
.sort((a, b) => b[1] - a[1])
.forEach(([day, score, n]) =>
console.log(`${day.padEnd(10)} ${score.toFixed(2)}x usual (${n} videos)`),
);
And in Python:
import os
import time
from collections import defaultdict
from datetime import datetime, timezone
from statistics import median
from zoneinfo import ZoneInfo
import requests
API = "https://api.sociavault.com/v1/scrape"
HEADERS = {"x-api-key": os.environ["SOCIAVAULT_API_KEY"]}
TZ = ZoneInfo("America/New_York") # use your audience's time zone
def as_list(x):
# Lists can come back as lists or as dicts with numbered keys
return list(x.values()) if isinstance(x, dict) else (x or [])
videos, cursor = [], None
for _ in range(5): # about 50 videos
params = {"handle": "khaby.lame", "sort_by": "latest"}
if cursor:
params["max_cursor"] = cursor
r = requests.get(f"{API}/tiktok/videos", headers=HEADERS, params=params, timeout=60)
r.raise_for_status()
data = r.json().get("data") or {}
videos += as_list(data.get("aweme_list"))
if not data.get("has_more"):
break
cursor = data.get("max_cursor")
time.sleep(1)
now = datetime.now(timezone.utc).timestamp()
videos = [v for v in videos if not v.get("is_top") and (now - v["create_time"]) / 86400 >= 7]
usual = median(v["statistics"]["play_count"] for v in videos)
by_day = defaultdict(list)
for v in videos:
day = datetime.fromtimestamp(v["create_time"], TZ).strftime("%A")
by_day[day].append(v["statistics"]["play_count"] / usual)
for day, scores in sorted(by_day.items(), key=lambda kv: -median(kv[1])):
print(f"{day:<10} {median(scores):.2f}x usual ({len(scores)} videos)")
It costs 1 credit per page of about 10 videos. With only a few videos per day, expect noise. Run it again after a month of posting.
How we did it
- Videos: 2,487 videos from 131 creators whose videos TikTok tagged as US, out of our wider sample of 230 creators across 15 niches, pulled on 19 October 2026 with SociaVault's TikTok videos endpoint.
- Filters: videos 7 to 180 days old, so their views had settled, and not pinned, from creators with at least 8 such videos.
- Score: each video's views divided by the creator's median, then the median score per day or time block. The 95% ranges come from resampling the videos 1,000 times.
- Time: posting times converted to New York time.
- Gaps: time since the same creator's previous post, across all 194 creators with enough videos.
- Cost: part of the 742 credits behind our TikTok benchmarks.
Limits. Creators choose when to post, so this measures the times they picked, not a random experiment. The US spans four time zones and we used one. A few hundred videos per day is enough to spot a large effect, not a tiny one. If your audience is outside the US, run the script with your own time zone. The tables are in the CSV download.
Frequently Asked Questions
What is the best time to post on TikTok?
In our data, time of day barely mattered. Every three-hour block from 9am to midnight New York time was within 4% of the creator's usual views. Late morning was the highest, at 1.04.
What is the best day to post on TikTok?
Sunday and Thursday were slightly above normal, at 1.07 and 1.04. Friday was the only clearly weak day, at 0.89 times the creator's usual views.
Is it bad to post twice a day on TikTok?
No. Videos posted within six hours of the creator's previous video got the same views as videos posted after a longer gap.
Does the time you post on TikTok matter?
Much less than most guides suggest. TikTok keeps testing videos with new viewers for days, so the first hour's timing has little effect on total views.
What time zone should I use for TikTok posting times?
Your audience's. Our figures use New York time for US creators. If most of your audience is elsewhere, check your own videos by day in their time zone.
Want to find the posting pattern that works for a specific creator? Sign up for 50 free credits and run the script above.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.