Seasonality Widget — Year-by-Year Performance
Some assets move with the calendar. Retailers build through autumn, energy leans on winter, and a good many stocks have a quiet stretch every summer. This widget lays several years of history on a single twelve-month axis so those patterns become visible: each year is one line, each line starts at 0% on its first trading day, and what you compare is the shape of a year rather than how big it was.
Sign up for free, add your website domain, and paste the embed code above into your HTML. Your widget will activate automatically.
The asset to chart. Seasonality needs a few years of history — very new listings will show fewer lines.
How many past years to draw. Fewer lines read more clearly in a narrow widget; more years make a seasonal pattern easier to trust.
Which view visitors see first. Both are always available from the toggle.
Let visitors switch between the chart and the month-by-month table. Turn off to lock the widget to the view selected above.
Percent rebases every year to 0% on its first trading day — that is what makes years comparable. Regular shows the actual price instead: the level each year traded at, though it squeezes the older years toward the bottom of the chart. Applies to both the chart and the table.
Show the Percent / Regular buttons above the chart. Turn off to lock the widget to the scale selected above.
Show the year legend below the chart. Clicking a year hides its line.
Show the Average button. It draws one dashed line through the middle of the completed years — the typical path, with the individual years' noise averaged out.
Draw the average line as soon as the widget loads. Off by default — the individual years are what most readers look at first.
Auto matches your site's language — when visitors switch it, the widget follows. Pick a language to keep it fixed.
Auto matches your site's dark/light mode — when visitors switch your site theme, the widget follows automatically. Choose Light or Dark to keep it fixed.
Remove the widget background color so it blends with your page.
If you have your own loading spinner or skeleton on the page, enter its ID or class here (e.g. #my-loader). The widget will remove it once data is ready.
Add your own CSS code to change fonts, colors, spacing, or any other styling in the widget.
Color for positive values (gains, up arrows).
Color for negative values (losses, down arrows).
Main background color of the widget.
Background color for cards, rows, and hover states.
Primary text color for headings and values.
Color for labels, descriptions, and muted text.
Color for borders, dividers, and outlines.
Every Year on One Axis
A normal price chart runs left to right through time, which makes it good at trends and poor at seasons — March 2022 and March 2026 sit years apart on the screen. Here they sit on top of each other. Each year is rebased to zero on its own first trading day, so a quiet year and a spectacular one can still be compared by where they rose and where they stalled. Hovering anywhere gives you every year's figure for that date at once, which is the question this chart exists to answer: "by late May, where was this usually?"
The Same Data as a Table
Charts show shape; tables show numbers. One button switches to a month-by-month grid — each cell is that month's own return, coloured green or red — with each year's total in the last column. Underneath, a row counts how often each month rose and how often it fell across the years shown. Five greens out of six in one column is a pattern worth a sentence in your article; three and three is not, and the table says so plainly.
How Many Years to Show
The default is five, which reads cleanly even in a narrow column and is recent enough to still describe the asset as it trades now. You can go up to ten where a longer record matters, or down to three for a young listing. A symbol with less history simply draws fewer lines rather than failing — a coin listed two years ago gets its two years.
Key Features
- Years overlaid — three to ten years on one twelve-month axis, each rebased to 0%.
- All years on hover — one cursor, every year's figure for that date.
- Month-by-month table — each month's return, each year's total, colour-coded.
- Rise and fall counts — how often each month finished up or down.
- Clickable legend — hide a year to read the rest more clearly.
- Stocks, indices, forex and crypto — anything with daily history.
- Drawn as SVG — sharp at any size, no charting library to load.
- Light and dark themes — follows the host page, with full color customization.
- Free to embed — no signup, no API key, no monthly fees.
Who Uses This Widget?
Market commentary that runs to a calendar — "the September effect", year-end rallies, summer lulls — needs a picture that actually shows the calendar, and this is it. Research pages pair it with a symbol's overview so a reader gets both the trend and the rhythm. Education sites use it to teach what seasonality is and, just as usefully, where it does not hold. For the current trend rather than the seasonal one, use symbol overview; for the fundamentals behind it, see financials.
A Note on Reading Seasonality
A pattern across five years is an observation, not a rule. Five Marches rising tells you something about those five years; it does not promise a sixth. The widget is built to make that honest — it shows every year, including the ones that break the pattern, rather than a single averaged line that hides them. Use it to notice something worth investigating, not to predict.