Overview
Christmas Snow for WordPress adds a falling snow effect to your site using a lightweight HTML5 Canvas engine. It works as soon as you activate it, and you can change every part of the effect from a single settings screen under Settings > Christmas Snow.
You choose what the flakes look like (snowflake characters, emoji, soft dots or your own image), how much snow falls and how it moves, where it appears, who sees it and which weeks of the year it runs. A live preview panel shows your changes before you save, and six one click presets give you a starting point.
The plugin is for any WordPress site that wants seasonal decoration: holiday campaigns, blogs, business sites and WooCommerce stores. It is completely free, with no locked features.
Requirements
- WordPress 5.0 or later
- PHP 7.0 or later
- Tested up to WordPress 7.1
Installation
Christmas Snow is a free plugin on WordPress.org. It does not need any other plugin. The snow starts working with its default settings as soon as you activate it.
Log in to your WordPress admin dashboard.
Go to Plugins > Add New.
Search for Christmas Snow.
Click Install Now, then Activate.
Optional: go to Settings > Christmas Snow to shape the effect. You can also click Settings next to the plugin on the Plugins page.
Quick start
- Open the settings screen
Go to Settings > Christmas Snow. The badge at the top right shows the current status, for example Snowfall is live. The snow is already running on your site with the default settings.
- Pick a preset
In the Presets panel on the right, click one of the looks: Gentle Drift, Classic Christmas, Heavy Blizzard, Golden Sparkle, Festive Emoji or Settling Snow. A preset fills in the Appearance and Motion settings and leaves your display rules and schedule alone. Watch the result in the Live preview panel.
- Fine tune the look and movement
Open the Appearance tab to change the flake type, characters, colours, size and opacity. Open the Motion tab to change how many flakes fall, their speed, the wind and how they react to the cursor. The live preview updates as you change each setting.
- Decide where and when it snows
On the Display Rules tab, choose where the snow appears and who sees it. On the Schedule tab, turn on Only show during a date range if you want the snow to run only during the holiday season.
- Save and check your site
Click Save changes. Changes apply to your site as soon as you save. Reload a page on your site to see the result.
#General settings
The General tab is the first tab on Settings > Christmas Snow. It holds the master switch and the options that control how the effect behaves on every page.
Snowfall
- Enable snowfall is the master switch. Turn it off to stop the effect everywhere without deactivating the plugin.
- Respect reduced motion skips the animation for visitors who asked their device to reduce motion. Leaving it on is recommended.
- Pause in background tabs stops drawing while the browser tab is not visible.
- Stop the snow after sets how many seconds the snow falls on each page view. When the time is up, no new flakes appear and the snow fades out. Use
0to keep it snowing. - Let visitors turn the snow off adds a small button in the bottom left corner. The visitor's choice is remembered in their own browser, and nothing is stored on your site.
Placement
- Layer (z-index) sets how high the snow sits in the page stack. Lower it if the snow covers a sticky header or a popup.
- Limit to a container takes an optional CSS selector, for example
.site-header. Leave it empty to cover the whole window.
The header of the screen shows the plugin version and a status badge. A dismissible banner about ProPluginsLab's WooCommerce plugins also appears on this screen. Close it with the × button if you do not need it.
#Live preview, presets and shortcode panels
The right side of every settings tab shows three panels, so you can use them while you work on any tab.
- Live preview shows the snow with your current settings and updates as you change any setting. Click Pause to stop the animation. Use the three Preview background swatches (dark, blue and light) to check how the flakes look on different backgrounds.
- Presets offers six one click looks: Gentle Drift, Classic Christmas, Heavy Blizzard, Golden Sparkle, Festive Emoji and Settling Snow. A preset fills in the Appearance and Motion settings. Your display rules and schedule are left alone. Click Save changes to apply the preset to your site.
- Shortcode shows
[christmas_snow]and an example with attributes, ready to copy. See the Shortcodes section on this page for details.
#Appearance
The Appearance tab controls what each flake looks like.
Flake style
- Flake type has three options: Characters and emoji for classic snowflakes and emoji, Soft dots (fastest) for heavy snowfall, and Custom image to use your own artwork from the media library. For a custom image, a small transparent PNG or SVG works best.
- Characters lists the characters to use, separated by a space. Snowflakes, sparkles, stars and holiday emoji all work.
- Colours sets the flake colour. Click + Add colour to add more colours. With more than one colour, the flakes mix them at random (up to eight colours).
Size and opacity
- Smallest flake and Largest flake set the size range. Flakes are sized at random between these two values.
- Minimum opacity and Maximum opacity set how see-through the flakes are. Lower both for a subtle effect that sits behind your content.
- Softness blurs the flakes for a dreamy look. Anything above 0 costs some performance.
- Depth effect makes distant flakes smaller, slower and fainter, so the snowfall gains a sense of depth.
Fields that do not apply to your current choices are hidden automatically.
#Motion
The Motion tab controls how much snow falls and how it moves.
How much snow
- Flakes on desktop and Flakes on mobile set the number of flakes. Keep the mobile count well below the desktop count, because phones have far less drawing power.
- Mobile breakpoint is a width in pixels. Screens narrower than this use the mobile flake count.
Falling and wind
- Slowest fall and Fastest fall set the speed range. A wider gap between the two looks more natural.
- Wind direction: negative values blow the snow to the left, positive values to the right.
- Gusts slowly swings the wind back and forth instead of holding one direction.
- Sway sets how much each flake drifts from side to side on its way down.
- Spin the flakes turns rotation on, and Spin speed sets how fast they spin.
Interaction
- Cursor interaction sets how flakes react to the mouse pointer: None, Push flakes away, Pull flakes in or Gentle wind towards the cursor. It costs a little performance on very dense snowfall.
- Interaction strength sets how strong that effect is.
Settling snow
- Let snow settle at the bottom builds a drift along the bottom of the screen as flakes land.
- Maximum drift height limits how tall that drift can grow.
#Display Rules
The Display Rules tab decides where the snow appears and who sees it.
Where the snow appears
Show on has three choices: The entire site, The home page only or Selected content types and pages. With the last option you can pick content types and list the post or page IDs where the snow should always show.
Never show on
- These IDs: a comma separated list of post or page IDs that should never show snow, for example
3, 27. - WooCommerce cart, checkout and account pages: keeps the effect off these pages. This is strongly recommended, so nothing decorative sits between a customer and the pay button.
- Search results and 404 pages: keep the snow off those pages.
Who sees it
- Devices: All devices, Desktop only or Mobile only. Device detection happens on the server, so a page cache that does not vary by device may serve the wrong result. Leaving this on All devices and lowering the mobile flake count is the safer choice.
- Visitors: Everyone, Logged in users only or Logged out visitors only.
- Hide from these roles: tick the user roles that should not see the effect. This is useful for keeping the snow away from staff while they work.
#Schedule
The Schedule tab lets the snow run only during a season.
- Turn on Only show during a date range.
- Set the start and end dates.
- Click Save changes.
The range repeats every year, so you set it once. Ranges that cross New Year work correctly, for example 1 December to 6 January. Outside the range, the status badge at the top of the screen shows that the snow is waiting for its season.
#Advanced
The Advanced tab holds performance and control options.
Performance
- Frame rate limit caps how many frames per second the animation draws. Lower it to save battery on laptops and phones. 30 still looks smooth for falling snow.
- Load the script in the footer keeps the snow out of the way of your page rendering. Leave it on unless something needs the script earlier.
Control
- Only load where the shortcode is used ignores the display rules entirely and waits for
[christmas_snow]to appear on a page. Use it when you want snow on a few chosen pages only. - Show the admin bar shortcut adds a snow indicator to the toolbar. It shows whether the snow is running on the current page and lets you preview the page with or without snow. Only administrators see it.
#Tools
The Tools tab helps you back up, move and reset your configuration.
- Export settings: click Download JSON file to save your configuration as a JSON file. Use it as a backup or to move the setup to another site.
- Import settings: paste the contents of an exported file into the text box and click Import settings. Everything is validated before it is saved.
- Reset: click Reset all settings to put every setting back to how it was when you first installed the plugin.
- Current configuration shows your saved settings as JSON, so you can check them at a glance.
#Plugins
The Plugins tab lists plugins and add-ons from ProPluginsLab, the team behind Christmas Snow. You do not need it to use the snow effect.
- Filter the list with All, Free plugins, Pro plugins and Add-ons.
- Click View details on a free plugin to see it, or Get plugin on a pro plugin or add-on.
- Plugins already on your site are marked as installed or active.
- Click Refresh to load the latest list. The list also refreshes once a day in the background, and a built in list is shown if your site cannot reach the internet.
To keep the list current, the plugin requests the catalogue from https://propluginslab.io/wp-json/cwg-feed/v1/products and the current offer from https://propluginslab.io/wp-json/cwg-feed/v1/promotion. The request sends only the plugin version and your site address. Your visitors never trigger these requests: the front end makes no external requests.
Settings reference
Settings > Christmas Snow > General
| Setting | Type | Default | What it does |
|---|---|---|---|
| Enable snowfall | checkbox | on |
Master switch. Turn it off to stop the effect everywhere without deactivating the plugin. |
| Respect reduced motion | checkbox | on |
Skips the animation for visitors who asked their device to reduce motion. |
| Pause in background tabs | checkbox | on |
Stops drawing while the browser tab is not visible. |
| Stop the snow after | number | 0 |
Seconds of snowfall per page view. When the time is up, the snow fades out. Use 0 to keep it snowing. |
| Let visitors turn the snow off | checkbox | off |
Adds a small button in the bottom left corner. The choice is remembered in the visitor's browser. |
| Layer (z-index) | number | 999999 |
How high the snow sits in the page stack. Lower it if the snow covers a sticky header or a popup. |
| Limit to a container | text | - | Optional CSS selector, for example `.site-header`. Leave empty to cover the whole window. |
Settings > Christmas Snow > Appearance
| Setting | Type | Default | What it does |
|---|---|---|---|
| Flake type | select | Characters and emoji |
`Characters and emoji`, `Soft dots (fastest)` or `Custom image` from the media library. |
| Characters | text | ❄ ❅ ❆ |
Characters or emoji to use as flakes, separated by a space. |
| Colours | text | #ffffff |
Flake colour as a hex value. Use + Add colour to mix several colours at random. |
| Colour 1 | color | #ffffff |
Colour picker for the first flake colour. |
| Smallest flake | range | 10 |
Smallest flake size in pixels. |
| Largest flake | range | 22 |
Largest flake size in pixels. Flakes are sized at random between the two values. |
| Minimum opacity | range | 0.45 |
Lowest flake opacity. |
| Maximum opacity | range | 0.95 |
Highest flake opacity. Lower both values for a subtle effect. |
| Softness | range | 0 |
Blurs the flakes, in pixels. Anything above 0 costs some performance. |
| Depth effect | checkbox | on |
Makes distant flakes smaller, slower and fainter. |
Settings > Christmas Snow > Motion
| Setting | Type | Default | What it does |
|---|---|---|---|
| Flakes on desktop | range | 120 |
Number of flakes on screens wider than the mobile breakpoint. |
| Flakes on mobile | range | 40 |
Number of flakes on phones. Keep it well below the desktop count. |
| Mobile breakpoint | number | 768 |
Width in pixels. Narrower screens use the mobile flake count. |
| Slowest fall | range | 0.4 |
Lowest fall speed. |
| Fastest fall | range | 1.2 |
Highest fall speed. A wider gap looks more natural. |
| Wind direction | range | 0 |
Negative blows the snow to the left, positive to the right. |
| Gusts | range | 0.5 |
Slowly swings the wind back and forth. |
| Sway | range | 1 |
How much each flake drifts from side to side on its way down. |
| Spin the flakes | checkbox | on |
Rotates the flakes as they fall. |
| Spin speed | range | 1 |
How fast the flakes spin. |
| Cursor interaction | select | - | `None`, `Push flakes away`, `Pull flakes in` or `Gentle wind towards the cursor`. |
| Interaction strength | range | 1 |
How strongly the flakes react to the cursor. |
| Let snow settle at the bottom | checkbox | - | Builds a drift along the bottom of the screen as flakes land. |
| Maximum drift height | range | 40 |
Maximum height of the settled snow drift, in pixels. |
Settings > Christmas Snow > Display Rules
| Setting | Type | Default | What it does |
|---|---|---|---|
| The entire site | radio | The entire site |
Show on: `The entire site`, `The home page only` or `Selected content types and pages`. |
| These IDs | text | - | Comma separated post or page IDs that should never show snow. |
| WooCommerce cart, checkout and account pages | checkbox | - | Keeps the snow off WooCommerce cart, checkout and account pages. Strongly recommended. |
| Search results | checkbox | off |
Keeps the snow off search results pages. |
| 404 pages | checkbox | off |
Keeps the snow off 404 pages. |
| All devices | radio | All devices |
Devices: `All devices`, `Desktop only` or `Mobile only`. Detection happens on the server. |
| Everyone | radio | Everyone |
Visitors: `Everyone`, `Logged in users only` or `Logged out visitors only`. |
| Administrator | checkbox | off |
Hide from these roles: hides the effect from administrators. |
| Editor | checkbox | off |
Hide from these roles: hides the effect from editors. |
| Author | checkbox | off |
Hide from these roles: hides the effect from authors. |
| Contributor | checkbox | off |
Hide from these roles: hides the effect from contributors. |
| Subscriber | checkbox | off |
Hide from these roles: hides the effect from subscribers. |
Settings > Christmas Snow > Schedule
| Setting | Type | Default | What it does |
|---|---|---|---|
| Only show during a date range | checkbox | off |
Runs the snow only between a start and end date. The range repeats every year. |
Settings > Christmas Snow > Advanced
| Setting | Type | Default | What it does |
|---|---|---|---|
| Frame rate limit | range | 60 |
Maximum frames per second. Lower it to save battery. 30 still looks smooth. |
| Load the script in the footer | checkbox | on |
Keeps the snow out of the way of page rendering. |
| Only load where the shortcode is used | checkbox | off |
Ignores the display rules and shows snow only on pages that contain `[christmas_snow]`. |
| Show the admin bar shortcut | checkbox | on |
Adds a snow indicator to the toolbar for administrators, with a preview with or without snow. |
Shortcodes
[christmas_snow]
Forces the snow on for the page or post where you add it, even where your display rules would normally hide it. Attributes override your saved settings for that page only. When **Only load where the shortcode is used** is on under Advanced, the snow appears only on pages that contain this shortcode.
[christmas_snow density="150" color="#ffd700" size="20" speed="1.5" wind="2"]
| Attribute | Default | Description |
|---|---|---|
density | - | How much snow falls on this page. |
color | - | Flake colour as a hex value, for example `#ffd700`. |
characters | - | Characters or emoji to use as flakes on this page. |
type | - | Flake type for this page. |
speed | - | Fall speed for this page. |
wind | - | Wind for this page. |
size | - | Flake size for this page. |
zindex | - | Layer (z-index) of the snow on this page. |
On your site
Visitors see snowflakes falling over your pages, drawn on a canvas layer that sits above the content. The look and movement follow your Appearance and Motion settings, and the pages where it appears follow your Display Rules and Schedule.
A few things visitors may notice:
- Depending on Cursor interaction, flakes move away from the mouse pointer, are pulled towards it, or blow towards it.
- With Let snow settle at the bottom on, a drift builds up along the bottom of the screen.
- With Let visitors turn the snow off on, a small button appears in the bottom left corner. The visitor's choice is remembered in their browser.
- With Stop the snow after set above 0, the snow falls for that many seconds and then fades out.
Visitors whose device asks to reduce motion do not see the animation (when Respect reduced motion is on). The canvas is marked as decorative, so screen readers ignore it.
Frequently asked questions
Do I have to configure anything?
No. The plugin works as soon as you activate it. The settings under Settings > Christmas Snow are there when you want to change something.
Will this slow my site down?
The script is small, loads in the footer and defers. Flakes are drawn from cached sprites, and the animation stops entirely when the tab is not visible. To be extra careful, lower the flake count on the Motion tab, lower the Frame rate limit on the Advanced tab, or set Flake type to Soft dots (fastest).
Does it work on mobile?
Yes. Phones use their own, lower flake count (Flakes on mobile on the Motion tab). You can also show the snow on desktop only under Display Rules > Devices.
Can I use it with WooCommerce?
Yes. Use the WooCommerce cart, checkout and account pages option under Display Rules > Never show on to keep the snow off those pages, so nothing decorative sits between a customer and the pay button.
Can I show snow on only one page?
Yes, in two ways. Set Show on to Selected content types and pages on the Display Rules tab and list the page ID. Or turn on Only load where the shortcode is used on the Advanced tab and add [christmas_snow] to that page.
How do I make the snow appear only in December?
Open the Schedule tab, turn on Only show during a date range and set your start and end dates. The range repeats every year, and ranges that cross New Year are handled correctly.
Can visitors turn the snow off?
Yes. Turn on Let visitors turn the snow off on the General tab. A small button appears in the bottom left corner, and the visitor's choice is remembered in their own browser. Nothing is stored on your site.
Will I lose my settings when I update or deactivate?
No. Settings are kept when you deactivate the plugin and across updates. They are only removed if you delete the plugin. To keep a copy, use Download JSON file on the Tools tab.
Troubleshooting
- The snow does not appear on my site.
Check these in order:
- Enable snowfall is on under General. The status badge at the top of the settings screen shows whether the snow is live.
- If Only show during a date range is on under Schedule, today must fall inside the range.
- On Display Rules, check Show on, These IDs, Devices, Visitors and Hide from these roles. If you hid the effect from your own role, you will not see it while logged in.
- If Only load where the shortcode is used is on under Advanced, the snow only shows on pages that contain
[christmas_snow]. - If your device is set to reduce motion and Respect reduced motion is on, the animation does not run for you.
- The snow covers my sticky header or a popup.
Lower the Layer (z-index) value on the General tab until the snow sits behind that element, then click Save changes. You can also use Limit to a container to confine the snow to one part of the page.
- Desktop only or mobile only targeting shows the wrong result.
Device detection happens on the server, so a page cache that does not vary by device may serve the wrong version. Set Devices to All devices on the Display Rules tab and lower Flakes on mobile on the Motion tab instead.
- The animation feels heavy on laptops or phones.
Lower Flakes on desktop and Flakes on mobile on the Motion tab, set Softness to 0 on the Appearance tab, switch Flake type to Soft dots (fastest), or lower the Frame rate limit on the Advanced tab (30 still looks smooth). Setting Cursor interaction to None also helps on very dense snowfall.
- I changed many settings and want to start over.
Open the Tools tab and click Reset all settings. Every setting goes back to how it was when you first installed the plugin. Download a JSON file under Export settings first if you might want your current setup back.