How We Built an Accessible Filter + Pagination System in Webflow


Creating an accessible filter and pagination system in Webflow isn’t as simple as wiring up components and following documentation — especially since the recent Finsweet Attributes updates changed expected behavior.
In this article, we break down how we built a fully accessible, WCAG-compliant blog experience for Alongside ABA. It covers everything from structuring the CMS, applying ARIA roles, and managing dynamic live regions, to fixing the filter + pagination conflict that tripped up many Webflow developers post-update.
What you'll learn:
If you’ve struggled with integrating filtering and pagination in Webflow post-Finsweet update, this walkthrough might save you hours of trial and error.
When Alongside ABA approached me to develop a fully accessible, user-centered Webflow website, I was thrilled. This project became a beautiful collaboration between accessibility-driven development and intentional, inclusive design.

Alongside ABA—a behavioral health startup dedicated to inclusion and community—needed their blog to do more than just display articles. It needed to work for everyone. To learn more about designing inclusive Webflow sites, read our Webflow Accessibility Overview article on building for all users.
The requirements were clear:
Together with the designer, I built out a clean, visually elegant blog landing page—powered by Webflow’s CMS and enhanced with accessible custom code and Finsweet’s Attributes system.
We started with three blog types: Blog, Press Release, and Event. I created the CMS fields we’d need not only for layout but also for dynamic filtering—Category, Date, Slug, and Tags. Each blog post was categorized clearly, and once the designer handed over the visual layouts, I built the CMS grid accordingly using a Collection List.
How to fix broken Finsweet pagination in Webflow:
fs-list-value on filter buttonsasync and type="module"aria-live for result updates and screen reader supportI used Finsweet's List Filter system, following their documentation step-by-step. (And I do mean step-by-step—until I hit a small hiccup.) I forgot to add the fs-list-value attribute to my category radio buttons… but surprisingly, the filters still worked! Lesson learned: always double-check the final step, even if your results appear functional.
After wiring up the search input with fs-list-search, I added:
Normally, I avoid placeholders entirely unless they're for supplemental guidance—but in this case, it wasn't obstructing anything critical.

To ensure proper radio button grouping I decided to use ARIA attributes. I manually wrapped the radio buttons in a <div> and added:
role="radiogroup" to the wrapperaria-labelledby="filters-label" tied to a visible headingAnd for the “Clear All” button, I gave it a role="button" to ensure proper screen reader announcement.
To announce the number of results after filtering, I wrapped the counter in a <p> tag and inserted the dynamic number into a <span>.
aria-live="polite"aria-atomic="true"That way, the entire paragraph gets read aloud when the results update dynamically—important for users relying on assistive technologies.
This is where things got messy. I followed Finsweet’s documentation to the letter again—this time for their pagination system—but it was far from plug-and-play. The filters were working. The search was working. But once I tried to paginate filtered results, everything broke.
I attempted to use Finsweet’s CMS Load feature. I followed the documentation, step-by-step—again. I rewatched tutorials. I Googled. I asked ChatGPT. I refreshed Webflow’s staging environment so many times my browser asked if I was okay. And still… nothing. Pagination simply wouldn’t work with the filters I had already wired up.
That’s when I decided to reach out to the Webflow community on LinkedIn. And the response I received blew me away.

Enter: Evgenii Tilipman—a seasoned Webflow developer, someone I’d been following and admiring from afar for quite some time. His comment on my post felt like a golden ticket:
“If you’d like, I can help out tomorrow. Have exp with this 😁”
Um… YES PLEASE. 🙋🏽♀️

Evgenii Tilipman, is the founder of Tilipman Digital. They build Webflow websites for B2B tech startups, with strategy at the center of everything they do. For them, strategy means building systems that support growth. That includes structuring the CMS in a way that’s flexible, making sure filters and pagination work together cleanly, and designing user flows that don’t just function, but make sense.
We scheduled a call for 7:30 AM PST on July 1st. I was up early, coffee in hand, ready for my Webflow redemption. I shared my read-only link and we jumped right in.
It didn’t take Evgenii long to spot the first missing piece—the radio button filter values were missing the required fs-list-value attributes. I let out a loud “OOPSIE!” and then, when he told me I had followed the wrong version of the documentation, I immediately palm-slapped my forehead. Of course. Rookie mistake… veteran move catching it.
The new attributes have been exciting and more difficult to interpret and use in my experience.
Here’s the part that showed his genius: he explained how I was filtering the field, but not the specific category values. Since Webflow’s default binding behavior had changed, it wasn’t propagating those values automatically anymore. That tiny little oversight was tanking the whole integration.
Evgenii patiently walked me through the changes. Here's what we did, step by step:
<script> to the bottom of the <head> with async and type="module"fs-list-value was present and accurateThen, he offered to hop in as a Webflow guest reviewer to rewire it for me. (By this point, I was feeling like I’d just been offered a masterclass in Finsweet Attributes, for free.)
And then, just like that… it worked. Pagination + filters = beautiful harmony. I was over the moon. Not only had we solved the issue, I’d learned so much in the process. Evgenii closed out our conversation with these wise words:
“It's always these silly little things that take us off track.”
Ain’t that the truth.
After the implementation was complete and pagination was finally cooperating with the filters, I didn’t stop there. At Graceful Web Studio, accessibility isn’t an afterthought—it’s part of the foundation. So I ran through a full post-launch accessibility testing checklist to ensure everything was functioning exactly as it should:
<nav> with aria-label="Pagination"It passed. Every bit of it. Filters, search, clear button, pagination—all accessible, all functioning beautifully.
And after verifying that everything met both client expectations and accessibility standards, I circled back with Evgenii to thank him sincerely. This had become more than a technical implementation. It was a genuine collaboration—and one I’m deeply grateful for.

Collaboration, curiosity, and community helped turn a tricky integration into a shared success.
This blog filtering system with integrated pagination was built not just with code, but with community. With humility, persistence, and the generosity of a Webflow expert who was willing to help me debug early in the morning just because he believed in sharing knowledge.
The lesson? Even when you think you've followed the documentation to the letter, there’s often one little thing standing between “almost works” and “works perfectly.” Don't be afraid to ask. Don’t be afraid to troubleshoot. And always test for accessibility, not just functionality.
Because beautiful design should always be usable—for everyone.
Looking for more accessibility-first Webflow implementations? Check out our article on Accessible Swiper Sliders at Graceful Web Studio.
Need expert development support? Check out Tilipman Digital Webflow Development Agency.
Huge thanks to Evgenii for his time, expertise, and kindness. I’m proud to say that Alongside ABA now has a fully functional, accessible, filterable, and paginated blog landing page that performs beautifully across devices.
You can see the live result here: Alongside ABA Resources
If you’re a Webflow dev working with Finsweet Attributes, learn from my mistake:
We’re all better when we build in community.
Pagination often breaks when Finsweet filters aren't configured with the correct version of the Attributes system. Missing fs-list-value attributes or using outdated documentation can also cause issues.
Yes, just make sure each checkbox has the correct fs-list-value and is grouped using appropriate ARIA roles for accessibility.
Wrap inputs in a container with role="radiogroup" or role="group", link it to a visible label using aria-labelledby, and avoid using only placeholder text.
Use screen readers like NVDA or VoiceOver to confirm that dynamic updates are announced properly.
Absolutely. It’s fully responsive, and all filtering and pagination functionality is preserved across screen sizes, with proper reflow and accessible touch targets.
We build accessible, conversion-focused Webflow websites for businesses across Yakima and the US. Crystal Scott is a Certified Professional in Web Accessibility (CPWA) with 11+ years of front-end experience.
Our services:
Transparent pricing on every service page. Request a quote and get a response within one business day.
We would love to meet with you face-to-face. Whether virtually or for a coffee. Book a call, and let’s find the right solution for you! We review your site, map goals, and then deliver a clear plan and quote.
