WordPress plugin · v0.1.0 · Free
Galleries that sort themselves out.
Five layouts – masonry, justified rows, grid, carousel and accordion – with category filters, scroll reveal effects and a native lightbox, for the block editor. Built on core blocks and the Interactivity API: 3 KB of JavaScript to start, the rest only when used. Zero dependencies. ⚡
The last WordPress gallery you’ll ever need.
Free and open source. Five layouts, category filters and a native lightbox – from 3 KB of JavaScript.
Features
Everything a gallery needs. Nothing it doesn’t.
Tune everything that matters: layout, columns and row height per device, filters, captions, hover effects, animations and the lightbox – plus colors, type and spacing through the regular block settings. All of it built on core blocks.
01
Five layouts
Masonry, justified rows, grid, carousel and accordion, with sizes per device and scroll reveal effects.
02
Filters, your way
Buttons, pills, tabs or a dropdown, with counts, multi-select, presets and shareable filter links.
03
A native lightbox
Built on <dialog>: zooms from the thumbnail, arrow keys, swipe, captions and a counter.
04
3 KB of JavaScript to start
One small module starts the gallery. Layout, carousel and lightbox code loads only where used. No jQuery.
05
Made for the editor
The editor shows the real layout, with presets, a device switcher and categories in the image sidebar.
06
Responsive on every screen
Columns and heights per device. On phones, an optional dropdown filter and a vertical accordion.
07
Accessible by default
Real buttons with aria-pressed, lightbox focus return, reduced motion. Works without JavaScript.
08
Adapts to your theme
Filter buttons use your theme’s button style, captions its caption style. The rest is block settings.
09
Images, posts, media
Hand-picked images, posts and Media Library queries in one gallery, with one filter and one lightbox.
Compare
Other gallery plugins charge you twice.
Once in money, once in load time. Here is Gallery Z next to four popular gallery plugins: what their free versions do, what the rest costs, and how much script lands on your page.
| Feature | Gallery Z | Envira Gallery | Modula | FooGallery | Visual Portfolio |
|---|---|---|---|---|---|
| Filter buttons | Free, 6 styles, counts, dropdown | Paid (Plus plan) | Paid (Starter plan) | Paid (PRO Expert) | Free, 3 styles |
| Carousel | Free: loop, autoplay, centered slide | Paid | Paid (Trio plan) | Free | Free: slide, coverflow, fade |
| Hover effects (free) | Zoom, lift, grayscale, dim others | None | Pufrobo, zoom (40 more paid) | Color, greyscale, scale, zoom, caption slides | Classic, fade, fly, emerge |
| JavaScript | ~8 KB, no jQuery | ~29 KB + jQuery | ~72 KB + jQuery | ~57 KB + jQuery | ~75 KB + jQuery |
| Editor | Native block, edited in place | Block picks a saved gallery | Block picks a saved gallery | Block with images or a saved gallery | Native block, edited in place |
| Layouts (free) | Masonry, justified rows, grid, carousel, accordion | Justified, column grid | Creative, grid, masonry, justified | 7, incl. masonry, justified, carousel | Tiles, masonry, grid, justified, slider |
| Lightbox | Native dialog, no library | Free (Fancybox 1.3 fork) | Free (Fancybox 5) | Free (own) | Free (Fancybox 3 or PhotoSwipe) |
| Scroll reveal | 10 effects, staggered, pure CSS | Paid (Pro plan) | Whole gallery scales in | Effects as thumbnails load | None |
| Filtered links (URL) | Free, rendered on the server | Not found* | Paid (Business plan) | Paid (PRO Expert) | Free, ?vp_filter= |
| Media Library categories | Free, shared with posts | None (tags paid) | None | Paid (PRO Expert) | None (per block) |
| Importers | Envira, NextGEN, Modula, FooGallery | Paid (NextGEN) | Free add-ons | Free add-on | None |
| Keyboard & screen readers | Arrow keys, Esc, focus return, pressed states | Lightbox: arrows, Esc | Lightbox: arrows, Esc | Lightbox: arrows, Esc, focus trap | Lightbox: arrows, Esc |
| Price for the full version | Free, everything included | $99.50 first year, then $199* | €83 first year, then €166 | $79.99 a year* | $49 a year |
Switching is easy. Gallery Z imports your Envira, NextGEN, Modula and FooGallery galleries: images, captions, links and tags, which become filter categories. Under Tools → Gallery Z import, or with wp gallery-z import. How the import works →
WordPress integration
Built into WordPress, not bolted on.
No settings screens of its own: Gallery Z works through the parts of WordPress you already use – the Media Library, the command palette, patterns, templates and the Abilities API.
Importers
Brings Envira, NextGEN, Modula and FooGallery galleries over as draft pages – tags become filter categories.
Media Library tagging
A category column, a filter and bulk actions in the Media Library, and a checklist in the media modal.
Command palette
Cmd+K → “Add filterable gallery”: a filter and a gallery, already connected.
Patterns
Portfolio, travel journal, food menu, team and carousels – filled with your own photos.
Archive template
Every Gallery Category gets a gallery page of its own, editable in the Site Editor.
AI abilities
Abilities API support: agents can find and tag images and draft gallery pages – with your permissions.
Live preview
A WordPress Playground blueprint for wordpress.org’s Live Preview: 12 photos, 4 categories, one demo page.
Every block option, the five layouts, editing tools and developer notes.
Read the docs →
Performance
Small enough to forget about.
The gallery is rendered on the server, laid out by CSS and enhanced by a few kilobytes of script. It loads only on pages that have a gallery – and every page here, including this one, is the proof.


3.1KB
JavaScript to start, gzipped. Layout, carousel and lightbox code loads on demand – about 12 KB with every feature on one page.
2.3KB
Base CSS, gzipped. Carousel, accordion, reveal and lightbox styles load only where they are used.
0
Dependencies. Only WordPress’s own Interactivity API.
0px
Layout shift. Width and height come from the server.
100×4
Lighthouse 13.5 · home and article · mobile and desktop
100 photos, one page
One masonry gallery with a filter and a lightbox. The first row loads at once, the rest as you scroll. On the plugin’s own 100-photo test page that means an LCP of about 0.3 s on a throttled phone and a layout shift of 0.001 on desktop.
What’s in the box
- Server-rendered markup that works without JavaScript
- Native lazy loading and responsive
srcsetfrom core - View Transitions for filtering, CSS
@starting-stylefor the lightbox - Assets load per block, only on pages that use them
What isn’t
- jQuery, Isotope, Masonry.js or any layout library
- A lightbox library, icon fonts or web fonts
- A settings page, custom tables or shortcodes
- Tracking, upsells or admin notices
FAQ
Questions, answered.
Something missing? The docs cover every block setting, the importers and the developer details.
Can I filter a WordPress gallery by category?
Yes, that is what Gallery Z is for. Put a Gallery Filter block next to a Filterable Gallery and visitors filter the photos by the categories you assigned, with an animated transition. The selection can optionally be shared in the URL, like ?category=nature. Step by step: Getting started.
How is it different from the core Gallery block?
The core Gallery block shows one grid. Gallery Z adds category filters, five layouts (masonry, justified rows, grid, carousel and accordion), scroll reveal effects, a lightbox that pages through the visible photos, and posts or Media Library queries as gallery items. Inside, the photos stay regular Image blocks. See Blocks & options.
Will it slow down my site?
No. A page with a gallery loads about 3 KB of JavaScript to start and 2.3 KB of CSS; carousel, accordion, lightbox and effect code loads only where a gallery uses it, and nothing loads on pages without a gallery. Images lazy-load in the right size, and masonry is placed before the first paint, so nothing shifts. The details are in the performance notes.
Does it work with my theme?
Yes. Gallery Z uses block supports and your theme’s own styles: filter buttons start from the theme’s button style, captions from its caption style, spacing from its gap. It works in block themes and in classic themes that use the block editor.
How do the categories work?
Gallery Z adds a Gallery Categories taxonomy that media, posts and pages share. Assign categories in the image sidebar inside a gallery or in the Media Library. Many images at once? Use the bulk actions in the Media Library. A gallery can also filter by any other taxonomy, such as regular post categories. More in Categories & Media Library.
Can I switch from Envira, NextGEN, Modula or FooGallery?
Yes. Under Tools → Gallery Z import (or with wp gallery-z import), each gallery becomes a draft page with a Filterable Gallery: images, captions, alt text, links and columns come along, and tags become filter categories. Lightbox themes, spacing and hover effects are not carried over. See Switching from other plugins.
Can I show posts instead of images?
Yes. Put a Query Loop inside the gallery – there is a “Gallery Posts” variation – and the featured images become gallery items with their titles as captions. Images, posts and Media Library queries can be mixed in one gallery. See Gallery Posts.
What happens without JavaScript?
Every item shows, rows and grids keep their layout (masonry becomes a plain column grid), and links still work. Lightbox links point to the full image file. See How it works.
Which browsers are supported?
All current browsers. View Transitions, @starting-style, color-mix(), scroll-driven animations and backdrop-filter are progressive enhancements: older browsers get the same features with simpler animations.
What does it need?
WordPress 6.6 or newer and PHP 7.4 or newer. No build step, no API keys, no external services.
Is it really free?
Yes. Gallery Z is licensed under the GPL v2 or later. There is no pro version, no license key and no upsell.
Free · GPL v2 or later · No account
Get Gallery Z.
It’s free.
Download the zip, upload it under Plugins → Add New → Upload, and add a Filterable Gallery to any page. No license key, no pro version, no upsell.















