How to Compare Time Periods in Analytics Without Being Fooled by Seasonality
Comparing this week with last week often compares a holiday with a normal week. Learn how to choose fair comparison periods, account for weekday patterns, festivals, and campaigns, and annotate the events that explain your charts.
Short answer: compare like with like. Use whole weeks so weekday patterns cancel out, compare with the same period a year earlier when your business is seasonal, line up festivals and holidays that move between dates, and keep a log of campaigns and releases so you can explain a change. Most alarming week-on-week moves disappear once the comparison is fair.
Table of Contents
- Four Cycles Hiding in Your Data
- Choosing a Fair Comparison
- Moving Festivals and Holidays
- Keep an Annotation Log
- Separating Season From Change
- Key Takeaways
Four Cycles Hiding in Your Data
| Cycle | Pattern | Example |
|---|---|---|
| Time of day | Peaks and quiet hours | B2B during office hours; food delivery at meal times |
| Day of week | Weekday against weekend | B2B drops at weekends; leisure retail rises |
| Time of month | Paydays, billing cycles | Spending rises after salaries arrive |
| Time of year | Seasons, festivals, school terms, financial year end | Festive shopping, summer travel, tax season |
Any comparison that cuts across one of these cycles unevenly will show a difference that has nothing to do with your site.
Choosing a Fair Comparison
| Comparison | Use when | Watch out for |
|---|---|---|
| Week on week | Checking a recent change | Holidays; compare full weeks |
| Month on month | General trend | Months differ in length and number of weekends |
| Year on year | Seasonal business | Growth or decline in between; festival dates shifting |
| Same weekday, previous weeks | Daily monitoring | Needs several weeks of history |
| Rolling four-week average | Smoothing noise | Slow to show a sudden change |
Practical rules:
- Use complete weeks. Seven, fourteen, or twenty-eight days. Never eight or thirty.
- Start on the same weekday.
- Avoid "month to date" against a full month.
- For daily checks, compare a Tuesday with the last four Tuesdays.
- Prefer rates within segments to raw totals when traffic mix shifts (why).
Check that the tools you are comparing use the same reporting timezone, or the day boundary moves (timezones).
Moving Festivals and Holidays
A naive year-on-year comparison assumes the calendar repeats. Many of the events that matter most do not fall on the same date each year.
- Festivals set by lunar or other calendars, such as Diwali, Eid, Easter, and Lunar New Year.
- Sale events whose dates are set by retailers each year.
- Public holidays falling on a weekday one year and a weekend the next.
- School holidays and exam periods, which vary by region.
- Payday timing.
Align by event. Compare "the week before the festival" this year with "the week before the festival" last year, whatever the dates were. If you sell across regions, remember that their holidays differ.
Keep an Annotation Log
Six months from now, nobody will remember why traffic doubled in the second week of March. Write it down when it happens.
| Date | Event | Expected effect |
|---|---|---|
| 3 Mar | Email campaign to full list | Traffic spike, more returning visitors |
| 10 Mar | Checkout redesign released | Possible change in step conversion |
| 14 Mar | Regional holiday | Lower B2B traffic |
| 20 Mar | Price change | Conversion and order value |
| 27 Mar | Outage, 40 minutes | Lost sessions |
Include campaigns, releases, pricing, outages, press, tracking changes, and competitor events you know about. A shared spreadsheet is enough.
Tracking changes deserve special mention. A new consent banner or a tag moved to a different page can change the numbers without any change in behavior.
Separating Season From Change
You shipped a new checkout in November and conversion rose. Was it the checkout or the season?
- Compare with last year's lift over the same period. If conversion rose a similar amount then, with no redesign, the season explains it.
- Look at a segment the change did not touch. If desktop got the new checkout and mobile did not, mobile is your control.
- Look at the step that changed. A checkout redesign should move checkout-step conversion, not product-page conversion.
- Watch sessions. Is the friction you set out to remove actually gone?
- Wait. If the gain persists after the season ends, it was real (novelty and regression).
Avoid launching changes in your peak week
You will not be able to tell what caused what, and if something breaks, it breaks when it costs the most.
Key Takeaways
- Data contains daily, weekly, monthly, and yearly cycles.
- Compare complete weeks and matching periods.
- Align moving festivals by event, not date.
- Keep an annotation log of everything that could move the numbers.
Conclusion
A fair comparison answers most "why did this change?" questions before they are asked. Choose the period with care and write down what happened.
Frequently Asked Questions
Related articles
Stay in the loop
Get the latest insights on product analytics and user behavior delivered to your inbox.



