Qaiyo Clean Gallery is a focused, dependency-free WordPress gallery plugin built for performance and clean markup. Each gallery is a Custom Post Type with its own settings, usable through a Gutenberg block or a shortcode. The frontend ships zero JavaScript dependencies — no jQuery, no Swiper, no PhotoSwipe — just a few kilobytes of plain modern JavaScript.
Unlike most gallery plugins, Qaiyo Clean Gallery is genuinely portable and self-hostable: you can move a whole gallery — with its images — from one site to another in a single ZIP file, it syncs live with your HappyFiles media folders, and it never phones home or loads your images through a third-party CDN.
You pick one from a row of mock-ups above the images, not from a dropdown — each card draws what the layout actually does, and only the settings that layout uses are shown underneath it.
Not sure which one fits? The Suggest a layout button in the gallery editor analyses the aspect ratios of your images — how many are portrait, landscape or square, and how much they vary — and recommends the layout that suits them best, with a one-line explanation. It works before the gallery is even saved.
#qcg={id}&img={index}) so an exact image can be linked, bookmarked and sharedThe [qaiyo_clean_gallery_all] view lists every gallery as a paged card grid with:
open="lightbox" and a click on a card opens that gallery’s photos in the lightbox right there, instead of leaving for the gallery page. The photos are fetched only when a card is opened, so a listing of many large galleries stays light. A gallery the visitor may not see (password protected, for instance) still leads to its own page, where the password form is.If the site has Modula galleries, Clean Gallery Export / Import shows an Import from Modula card. It works even after Modula has been deactivated.
open="lightbox".A dedicated landing page under Clean Gallery Overview shows at-a-glance stats — number of galleries, published, drafts, total images, views, categories and HappyFiles status — plus quick actions for creating a gallery, finding duplicates, exporting/importing and opening help.
Waiting for the client’s photos? Turn on Placeholder images in the gallery editor, pick a number and an orientation mix, and the gallery renders neutral sample tiles with realistic proportions in whatever layout you chose — Masonry, Justified and Showcase behave exactly as they will with the real pictures. Placeholders are bundled with the plugin, never added to the Media Library, not counted as views, and disappear automatically as soon as a real image is added.
A private view counter shows which galleries people actually look at — in the gallery list (sortable), in the editor sidebar and as a total on the Overview page. A view is counted once per visitor session, when the gallery comes into view. It stores one number per gallery on your own site: no cookies, no IP addresses, no external service. Logged-in editors and known bots are not counted, and the counter can be switched off under Info & Help.
If you run Qaiyo Admin Booster, its WordPress Dashboard widget collects a small summary card from every active Qaiyo plugin. Clean Gallery’s card shows your galleries, images and your most viewed (or largest) gallery. With Qaiyo Social Video Embed active too, the two merge into one Media statistics card that also counts the video embeds in your published content. No data leaves your site.
Clean Gallery Duplicates scans your media library and finds pictures that are byte-for-byte identical, even if they were uploaded under different names (photo.jpg, photo-1.jpg, photo-scaled.jpg). Every image is fingerprinted with a content hash — the same technique the gallery importer uses to avoid re-uploading files it already has.
loading="lazy")ImageGallery, ImageObject and ItemListShortcodes:
[qaiyo_clean_gallery id="42"] — a single gallery. Optional attributes: layout, columns, lightbox, captions, lazy, gap, row_height, and ids="101,102" to render attachments directly without a gallery post.[qaiyo_clean_gallery_all] — all galleries as a paged card grid. Attributes: card_columns, gallery_columns, filter, orderby, order, per_page, category, and open="lightbox" to open a gallery’s photos in place instead of on its own page.Bundled translations: English, Hungarian, German, French, Spanish, Italian, Portuguese, Russian, Japanese, Turkish and Polish. Locale variants (for example de_CH, fr_BE, es_MX, pt_BR) automatically fall back to their base language.
Everything is namespaced under the qaiyo_clean_gallery prefix, with filters for customization:
qaiyo_clean_gallery_layouts — register your own layout (see HOOKS.md)qaiyo_clean_gallery_justified_row_height — target row height for the Justified layoutqaiyo_clean_gallery_happyfiles_taxonomy, qaiyo_clean_gallery_hf_orderby, qaiyo_clean_gallery_hf_order — HappyFiles folder source and orderingqaiyo_clean_gallery_compress_threshold, qaiyo_clean_gallery_compress_max_bytes, qaiyo_clean_gallery_compress_quality_step, qaiyo_clean_gallery_compress_quality_floor — image compression tuningqaiyo_clean_gallery_cpt_slug, qaiyo_clean_gallery_tax_slug — the single-gallery and category URL slugsQaiyo Clean Gallery is part of the Qaiyo plugin family — https://qaiyo-plugins.com — support: [email protected]
This plugin does not send any data anywhere on its own and does not use any tracking. It interacts with the following external services, in the ways described below.
When the Social share buttons setting is enabled (Clean Gallery Info & Help), the lightbox shows share links for Facebook, X and Pinterest. No connection to these services is made while browsing — a request happens only when a visitor clicks one of the share links, which opens that provider’s standard share page in a new browser tab.
What is sent on click, as URL parameters of the opened share page: the URL of the page containing the gallery (all three services), and for Pinterest additionally the URL of the shared image and its caption/title, so the provider can pre-fill the share dialog. The plugin itself transmits nothing; the visitor’s browser opens the provider’s page, where the provider’s own terms apply:
The copy-link button only copies the URL to the visitor’s clipboard locally; it contacts no service. If the Social share buttons setting is disabled, none of these links are rendered.
The admin-only Discover Qaiyo screen queries the official WordPress.org plugin directory API (api.wordpress.org) to list our other free plugins. The request is made only when an administrator opens that screen, contains only the plugin-author query (no personal data), and its result is cached for 12 hours. This is the same WordPress.org infrastructure the built-in “Add Plugins” screen uses. See the WordPress.org privacy policy. No request is made on the frontend of your site.