Title: Quicksloth Sticky Widget – Fixed Widgets, Blocks &amp; Sticky Sidebar
Author: quicksloth
Published: <strong>October 28, 2026</strong>
Last modified: October 28, 2026

---

Search plugins

![](https://ps.w.org/quicksloth-sticky-widget/assets/banner-772x250.png?rev=3769709)

![](https://ps.w.org/quicksloth-sticky-widget/assets/icon.svg?rev=3769709)

# Quicksloth Sticky Widget – Fixed Widgets, Blocks & Sticky Sidebar

 By [quicksloth](https://profiles.wordpress.org/quicksloth/)

[Download](https://downloads.wordpress.org/plugin/quicksloth-sticky-widget.1.0.1.zip)

 * [Details](https://wordpress.org/plugins/quicksloth-sticky-widget/#description)
 * [Reviews](https://wordpress.org/plugins/quicksloth-sticky-widget/#reviews)
 *  [Installation](https://wordpress.org/plugins/quicksloth-sticky-widget/#installation)
 * [Development](https://wordpress.org/plugins/quicksloth-sticky-widget/#developers)

 [Support](https://wordpress.org/support/plugin/quicksloth-sticky-widget/)

## Description

Keep a sidebar widget, a block or any element of your theme in view while visitors
scroll down a long page, and stop it before the footer instead of covering it. Works
with classic widgets, with any block (WordPress’s own Sticky setting covers only
Group blocks, on themes that turn it on) and with any element you point to with 
a CSS selector.

#### How to make something sticky

 * **Classic widget:** under **Appearance  Widgets**, open the widget and tick **
   Sticky (stays in view while scrolling)**.
 * **Block:** select it and turn on **Sticky** in the Sticky panel of the block 
   settings, in the post, site and block widgets editors. **Stop here** marks a 
   block that sticky blocks must not cover.
 * **Block theme** (no **Appearance  Widgets**): under **Appearance  Editor**, select
   a block in a template or template part and turn on **Sticky**.
 * **Any other element:** list its ID, class or tag under **Custom sticky elements**
   on the settings page, one per line.

#### Settings

One page under **Appearance  Sticky Widget** (also from the **Settings** link on
the Plugins screen):

 * **Margin top** (10 px by default) and **Margin bottom** (0): distance from the
   window edges and from stop elements.
 * **Stop elements:** selectors of elements that push the sticky element up, one
   per line. **Also stop before the theme footer (footer, #colophon, .site-footer)**
   is on by default.
 * **Custom sticky elements:** selectors of other elements that should stay in view.
 * **Minimum screen width** and **Minimum screen height:** below these window sizes
   nothing is sticky (0 = no limit).
 * **Devices:** Desktop, Tablet, Phone. Phone is a window under 768 px, tablet 768
   to 1024 px, desktop above.
 * **Layer (z-index)**, 50 by default: raise it if a sticky element hides behind
   the content, lower it if it covers a fixed header.

#### Coming from Fixed Widget

On activation the plugin imports your Fixed Widget (q2w3) settings automatically:
margins, stop elements, custom elements (bare IDs of version 5 included) and minimum
width and height. Widgets ticked as fixed there, and blocks with its `FixedWidget__fixed_widget`
and `FixedWidget__stop_widget` classes, stay sticky without a click. Its settings
are never changed or deleted, so you can switch back. While it is still active this
plugin keeps its script off (two scripts would make the same widgets jump) and the
settings page says so; deactivate it and everything starts by itself.

#### How it is built

 * `position: sticky` where the column allows it; otherwise a fixed-position fallback
   with a placeholder that recalculates the width on zoom, resize and rotation.
 * Several sticky elements in one column stack 10 px apart. An element taller than
   the window is left alone: pinned, it would hide its own end.
 * One script of about 5 KB compressed, loaded only on pages that have a sticky 
   element. No jQuery, no extra CSS, no external requests, no cookies.
 * No top-level menu and no dashboard notices, except one review request after 14
   days, gone for good once you answer it.

#### Tested with

Twenty Twenty-Five, Twenty Twenty-One, Astra, GeneratePress, Kadence and OceanWP;
Chromium, Firefox and WebKit (the engine of Safari); zoom from 50 to 200%; window
widths from 1280 to 800 px; LiteSpeed Cache 7.9.2 with JavaScript and CSS combined
and deferred.

#### What this plugin does not do

Sticky headers and menus, notification bars and popups: other plugins do that.

### Privacy

This plugin does not collect, send or share any personal data. No cookies, no tracking,
no telemetry and no requests to external servers, on your site or in your dashboard.

On your server it stores its settings (one option), the date of the first activation
and your answer to the review request, plus the Sticky tick in your widgets and 
the `qssw` attribute in your blocks. Deleting the plugin removes the options and
the tick from the widgets in use; it never touches the data of Fixed Widget. The
attribute stays in the block content and does nothing without the plugin.

## Screenshots

[⌊A sidebar widget stays in view while the visitor scrolls (GeneratePress).⌉⌊A sidebar
widget stays in view while the visitor scrolls (GeneratePress).⌉[

A sidebar widget stays in view while the visitor scrolls (GeneratePress).

[⌊Near the end of the page the sticky widget stops before the footer instead of 
covering it.⌉⌊Near the end of the page the sticky widget stops before the footer
instead of covering it.⌉[

Near the end of the page the sticky widget stops before the footer instead of covering
it.

[⌊The Sticky panel in the block settings, with the Sticky and Stop here switches(
Appearance → Widgets).⌉⌊The Sticky panel in the block settings, with the Sticky 
and Stop here switches (Appearance → Widgets).⌉[

The Sticky panel in the block settings, with the Sticky and Stop here switches (
Appearance  Widgets).

[⌊The settings page under Appearance → Sticky Widget, after the automatic import
of existing settings.⌉⌊The settings page under Appearance → Sticky Widget, after
the automatic import of existing settings.⌉[

The settings page under Appearance  Sticky Widget, after the automatic import of
existing settings.

[⌊A sticky block inside a column on a block theme (Twenty Twenty-Five).⌉⌊A sticky
block inside a column on a block theme (Twenty Twenty-Five).⌉[

A sticky block inside a column on a block theme (Twenty Twenty-Five).

## Installation

 1. In your dashboard go to **Plugins  Add Plugin** and search for “Quicksloth Sticky
    Widget”.
 2. Click **Install Now**, then **Activate**.
 3. Under **Appearance  Widgets**, tick **Sticky (stays in view while scrolling)** 
    in a widget’s form, or turn on **Sticky** in the Sticky panel of a block.
 4. Optional: margins, stop elements and devices under **Appearance  Sticky Widget**.
    With a caching plugin, clear its cache after saving.

To install by hand, upload the plugin folder to `/wp-content/plugins/` and activate
it under **Plugins**.

## FAQ

### I use Fixed Widget. What happens when I switch?

Activate this plugin before you delete Fixed Widget: deleting it removes its settings,
which this plugin imports on activation (the widgets and blocks you marked stay 
sticky either way). Then deactivate it on the Plugins page; until then this plugin
moves nothing. Not imported: “logged_in_req” (sticky only for logged-in users) and“
Improved version” (`position: sticky` is always tried first). The stop at the theme
footer starts off, as before. While pinned, elements also get the `FixedWidget__fixed_widget__pinned`
class, so your CSS keeps working. This plugin is not affiliated with Fixed Widget
or its authors.

### My theme is a block theme. Where is Appearance  Widgets?

Most block themes have no widget areas. Under **Appearance  Editor**, open the template
or template part that holds your sidebar, select the block to keep in view (for 
example a Group block inside a column) and turn on **Sticky** in its Sticky panel.

### Why is my widget not sticky?

Check these:

 * It is taller than the window (pinned, it would hide its own end): make it shorter
   or split it in two.
 * The window is below **Minimum screen width** or **Minimum screen height**, or
   its device (Desktop, Tablet, Phone) is unticked under **Appearance  Sticky Widget**.
 * Fixed Widget is still active: deactivate it on the Plugins page.
 * A caching plugin serves an old copy of the page: clear its cache after saving
   a widget or the settings.

### Does it work with caching and optimization plugins?

Yes; clear the cache after changing widgets or settings. We tested LiteSpeed Cache
7.9.2 with JavaScript and CSS minified and combined and **Load JS Deferred** set
to Deferred: sticky elements work as without it.

With **Load JS Deferred** set to Delayed, scripts run only after the first interaction,
so nothing is sticky until the visitor moves the mouse over the page, uses the wheel,
a key or a touch. If a widget must be sticky before that, add `quicksloth-sticky-
widget` to **JS Deferred / Delayed Excludes** (tested: the slug is enough). Other
plugins with a similar “delay JavaScript” feature behave the same way; we have tested
this only with LiteSpeed Cache.

### Will it slow down my site?

It adds one script of about 5 KB compressed, no CSS and no other request, only on
pages with a sticky element. In our Lighthouse test on mobile the score was the 
same with and without the plugin, 99 on Twenty Twenty-Five and 98 on Astra, with
Total Blocking Time 3 to 6 ms higher.

### The sticky widget hides behind the content or covers my header.

Under **Appearance  Sticky Widget** raise **Layer (z-index)** (50 by default) when
the element goes behind the content, lower it when it covers a fixed header; with
a fixed header also set **Margin top** to its height.

### Is it available in my language?

The plugin is ready for translation (`.pot` file in `languages/`). Translations 
into Italian, German, Spanish, French, Portuguese (Brazil) and Dutch were drafted
with AI (Claude) and submitted to translate.wordpress.org, where volunteer editors
review them before they reach your site. Until a language is approved there, the
texts are shown in English.

### Can developers refresh the positions after loading content?

After adding content with JavaScript (infinite scroll, tabs), call `window.qssw.
refresh()` to find and measure the sticky elements again. Classes: `qssw-sticky`
on an element to keep in view, `qssw-stop` on an element it must not cover, `qssw-
is-pinned` while it is pinned.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Quicksloth Sticky Widget – Fixed Widgets, Blocks & Sticky Sidebar” is open source
software. The following people have contributed to this plugin.

Contributors

 *   [ quicksloth ](https://profiles.wordpress.org/quicksloth/)

[Translate “Quicksloth Sticky Widget – Fixed Widgets, Blocks & Sticky Sidebar” into your language.](https://translate.wordpress.org/projects/wp-plugins/quicksloth-sticky-widget)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/quicksloth-sticky-widget/),
check out the [SVN repository](https://plugins.svn.wordpress.org/quicksloth-sticky-widget/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/quicksloth-sticky-widget/)
by [RSS](https://plugins.trac.wordpress.org/log/quicksloth-sticky-widget/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.1

 * The review request no longer has an X that hid it only until the next page: “
   Write a review” or “Dismiss” closes it for good.
 * Readme: the translations are now waiting for review on translate.wordpress.org.

Older versions: [changelog.txt](https://plugins.trac.wordpress.org/browser/quicksloth-sticky-widget/trunk/changelog.txt).

## Meta

 *  Version **1.0.1**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [fixed sidebar](https://wordpress.org/plugins/tags/fixed-sidebar/)[sidebar](https://wordpress.org/plugins/tags/sidebar/)
   [sticky block](https://wordpress.org/plugins/tags/sticky-block/)[sticky sidebar](https://wordpress.org/plugins/tags/sticky-sidebar/)
   [sticky widget](https://wordpress.org/plugins/tags/sticky-widget/)
 *  [Advanced View](https://wordpress.org/plugins/quicksloth-sticky-widget/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/quicksloth-sticky-widget/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/quicksloth-sticky-widget/reviews/)

## Contributors

 *   [ quicksloth ](https://profiles.wordpress.org/quicksloth/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/quicksloth-sticky-widget/)