How do I analyze my Twitter analytics CSV export?
Drop the file into the Twitter Analytics CSV Analyzer. It reads the CSV in your browser, finds the impressions, engagements and time columns, and shows totals, engagement rate, your top 10 posts and your best weekday and hour. X's post activity export covers up to 30 days and 3,000 posts per file.
You can do this with spreadsheet pivot tables, but it's slow, and the time zone math is easy to get wrong because the export uses UTC. A CSV export is just text, so a browser can do the boring part in a second.
How to use the Twitter Analytics CSV Analyzer
- Export your post data from X analytics as a CSV. Choose a date range first, then use the Export option.
- Drop the file on the box, or click it to pick the file. You can also press "Load sample data" to try it with made-up posts.
- Open "Column mapping" if a number looks wrong, and pick the right column.
- Read the totals and engagement rate at the top.
- Switch the best-time charts between average impressions and engagement rate.
- Sort the top 10 posts by impressions or by engagement rate, and set a minimum impressions filter for the rate view.
What does X's analytics export contain?
X's export is a CSV with one row per post and one column per metric. According to X's post activity dashboard help page, you can export up to 30 days at a time, each file holds up to 3,000 posts, and times are in UTC. The same page says metrics can take up to 36 hours to settle.
Column names have changed over the years ("Tweet text" in older files, "Post text" in newer ones, and so on). That's why the analyzer matches names loosely and ignores case. It skips promoted columns, so paid numbers don't mix into your organic results. If it guesses wrong, fix it in the mapping panel.
As of October 2026, access depends on your account. Reports from June 2024 say X made account analytics paid-only, and x.ai lists Advanced Analytics on the Plus plan and above.
What do the numbers mean?
The analyzer uses X's own definition of engagement rate: engagements divided by impressions. X's CSV definitions page says engagements include reposts, replies, follows, likes, link clicks, hashtag clicks, media clicks, username and profile photo clicks, and post expansions. That's why engagements are usually much bigger than likes plus replies.
If your file has no engagements column, the analyzer adds up the columns it can find and labels the total "estimated." The result will undercount, because things like post expansions are missing.
| Number | How it's worked out |
|---|---|
| Engagement rate | Total engagements / total impressions |
| Avg impressions | Total impressions / posts |
| Median impressions | The middle post when sorted by impressions |
| Best weekday or hour | Highest average among slots with 3 or more posts |
Watch the median. One viral post can pull the average way up, while the median shows what a normal post does.
Why are the best times shown in my local time?
X exports times in UTC, but your audience lives in real time zones. The analyzer converts each post's time to your browser's time zone before grouping by weekday and hour. A post at 14:00 UTC shows up at 19:30 if you're in India.
Treat the result as a hint, not a rule. Big studies disagree too: Sprout Social's 2026 data favors afternoons, while Buffer's favors weekday mornings. Your own data beats both, but only once a slot has enough posts. Slots with fewer than 3 posts are faded and never picked as "best."
Is my analytics file private?
Yes. The file is read with your browser's file reader and analyzed on this page. Nothing is uploaded, stored or sent anywhere, and the page makes no network requests with your data. Close the tab and it's gone.
Tips and common mistakes
- Export the same window each month. Comparing 30 days to 30 days keeps the numbers fair.
- Use the minimum impressions filter. A post with 40 impressions and 4 likes has a 10% rate, but it tells you little.
- Don't judge yesterday's posts. Numbers can take up to 36 hours to settle.
- Don't compare rates across tools blindly. Some tools divide by followers instead of impressions.
When should you use a different tool?
For one post, the Twitter Engagement Rate Calculator is quicker. To put a few posts or accounts side by side, use the Twitter Engagement Comparison Tool. Turn your best hours into a weekly plan with the Twitter Best Time Planner. For more on the export itself, read how to export Twitter analytics data and how to find your best performing tweets.
Frequently Asked Questions
Why can't the analyzer find my columns?
The Twitter Analytics CSV Analyzer matches column names like "impressions," "engagements" and "time," and X has renamed columns over the years. If a column is missing or wrong, open "Column mapping" and pick it from the list. Only the impressions column is required. The rest add more detail when present.
Can I analyze more than 30 days at once?
Yes, if you combine files first. X's post activity export covers up to 30 days per file, so export several months, paste them into one spreadsheet with a single header row, and save it as CSV. The analyzer handles thousands of rows without trouble, all inside your browser.
Do I need X Premium to export my analytics?
It depends on where you export from. X's ads help page describes the post activity dashboards at ads.x.com as free features, while reports from June 2024 say account analytics on x.com became paid-only. As of October 2026, check what your own account shows before paying for anything.
Why is my engagement rate different from other tools?
Engagement rate changes with the formula. This analyzer divides engagements by impressions, which matches X's own definition. Benchmark reports like Rival IQ divide interactions by follower count, which gives much smaller numbers. Compare rates only when both use the same formula and the same kind of engagements.
Does the analyzer work with exports from other tools?
Often, yes. Any CSV with one row per post and an impressions or views column will work. Tools like Buffer or Typefully use their own column names, so check the mapping panel after loading. Comma, semicolon and tab separated files are all detected automatically.