Visual Portfolio, Photo Gallery & Post Grid


Gallery & Portfolio Plugin For WordPress

Portfolio websites are the most popular nowadays. We created Visual Portfolio, Photo Gallery & Post Grid WordPress plugin, to help every creative, agency, and photographers get access to the powerful tools they need to showcase their beautiful works and attract more love from their potential and existing customers.

See Live Demo | Documentation | GitHub

Create beautiful, clean, and powerful photo galleries and portfolio layouts using the Visual Portfolio gallery plugin. It is easy for simple photo galleries, but powerful enough for professionals. Whether you’re a photographer, agency, or anything in between, Visual Portfolio will boost your online presence.

🏆 Visual Gallery Builder

Build your portfolio and gallery blocks with no coding knowledge. Thanks to Gutenberg page builder you are able to create and customize galleries visually.

Convenient visual block editor with support to various layouts such as Masonry, Justified, Tiles, Grid, Slider and Carousel. A well thought out design, powerful features, and years of development by the nK team make Visual Portfolio a game-changing Portfolio and Gallery plugin that will level the WordPress showcases playing field in your favor to help increase visitors engagement.

🚀 Optimized to be Fast as Native

Despite the rich functionality, the Visual Portfolio is optimized as much as possible, to be fast and lightweight.

Due to the modular code structure, all scripts and styles are loaded only when they are needed for the current page that displays your gallery. So, your pages will never load unused features.

Pictures are not loaded in the main thread due to lazy loading. Moreover, our plugin is compatible with third-party WebP providers and image optimization plugins.

Smart adaptive image sizes fully supported in any gallery, created with Visual Portfolio plugin.

📱 Layouts

Our gallery plugin shipped with popular layouts such as Masonry and Justified (Flickr). Every feature optimized and works seamlessly with all of these layouts, you just need to set up and go with no headache. See it in action:

🎨 Prebuilt Skins

Showcase your projects ang gallery images with clean and beautiful skins. See it in action:

⚙️ Easy to Customize

The gallery block with live preview includes a lot of design settings that are point-and-click, no coding knowledge required. If you’re a bit more adventurous, the custom CSS module and PHP filters are set up to be easily used by developers.

📁 Portfolio Post Type

Optional custom post type portfolio will ensure all your portfolios to keep in a single post type. In this way, you can distinguish your portfolios from other post types. Taxonomies are used to categorize your portfolio types, it will help you to group and sort your portfolios. Moreover, you can use these portfolios as a source for your showcase gallery using Visual Portfolio block.

Customize and rename Portfolio archive templates using visual gallery and page builder

In case you want to use Visual Portfolio plugin for photo gallery only you can disable custom post type registration.

💎 Posts Query Builder

Fine-tune the source of your galleries. Display posts, portfolios, and any other post types, filter by taxonomies, author, and date ranges, include or exclude specific posts, and much more options.

🖼️ Photo Galleries

Create galleries using image sets right inside block editor, just drop your images and the gallery is ready. You can create unlimited galleries with different styles, there is no limitation.

⚡ Powerful Lightbox

Visual Portfolio uses only modern solutions, and lightboxes are not an exception. High performance, mobile optimization, retina-ready, and a wide range of features available in Fancybox and PhotoSwipe plugins, that you can choose for your gallery lightboxes.

Mobile Optimized
Looks great on every device. Swipe to navigate, spread/pinch to zoom in/out supported on touch devices.

GPU Accelerated
Hardware accelerated animations for better performance and seamless user experience.

Smart Loading
Gallery images are responsive and loaded progressively using lazy loading on demand.

Social Sharing
You can allow users to share photos on Facebook, Twitter, and Pinterest with social sharing buttons.

📹 Video and 🎵 Audio Support

Visual Portfolio plugin allows you to work with audios and videos within a single gallery. You just need to copy the URL of the video or audio and it will work automatically in the popup gallery. The full list with supported vendors see below (mostly thanks to the Pro plugin).

Supported Video Vendors:

  • Youtube
  • Vimeo
  • IGTV (Instagram)
  • TikTok
  • Twitch
  • Facebook Video
  • DailyMotion
  • Wistia
  • VideoPress
  • TED
  • Rutube
  • Metacafe
  • Coub
  • Self Hosted Video

Supported Audio Vendors:

  • Spotify
  • SoundCloud
  • Mixcloud
  • Beatport
  • Self Hosted Audio

📈 SEO-Friendly

Visual Portfolio plugin is built keeping SEO and performance in mind by defining proper structure and tags. Furthermore, due to optimization, it is lightweight and fast when it comes to page load.

In addition our plugin add images in the sitemap for All In One SEO, Rank Math, and Yoast SEO plugins

🏳️ Multilingual & Translation Ready

Visual Portfolio adds a new layer of compatibility for WPML. All blocks are compatible with it and ready for translation.

🛠 Built For Developers

Visual Portfolio gives you a wide range of filters and actions to customize every part of your gallery. Also, it allows you to overwrite templates and change it in the theme directory. Moreover, you can customize separate portfolio lists using custom CSS and CSS Variables.

🔥 Visual Portfolio Pro

The Visual Portfolio plugin is also available in a professional version which includes more features and enhanced performance! Learn more about Visual Portfolio Pro

In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. The Pro version allows you to:

  • Advanced Skin Settings

    • Image Filters and Blend Mode – apply Instagram-like filters on images for Normal and Hover states
    • Transformations – control the image transformation and border radius for Normal and Hover states
    • Typography – control every text part of gallery captions and overlays
    • Dimensions – controls paddings, margins and border radius of captions and overlays
  • Stylish Interaction Effects

  • Social Feeds
    Automatically fetch posts from your social networks to display in gallery on your site.

  • Theft Protection

    • Watermarks – add your logo on top of your images to make them harder to steal
    • Password Form – add a password to gallery blocks and send it to your clients
    • Age Gate – Protect visitors from viewing adult content
  • Photos Proofing
    Communicate with your clients in a modern way:

    1. Create Proofing Gallery – Easily create a gallery with photos, as you did before. Change styling, layout, etc. if you want.
    2. Send to a Client – Send photos collection to your client for proofing. The client will be able to leave comments on individual photos and communicate with you.
    3. Get Approval – Once the client approves the selection, you will be able to see the selected photos and copy filenames for post-production.
  • Advanced Click Actions
    Manually configure how to open specific item types and filter clicking on title or on image.

  • Responsive Breakpoints Settings
    Manually control the screen sizes, which used by the automatic responsive function to adapt your gallery layouts.

  • AJAX Improvements
    Requests properly cached and links preloaded before you click.

  • Advanced Query Settings
    Filter by Author, Date Range, Ignore Sticky Posts, exclude posts without Featured Image, and much more…

  • Quick View for Posts and Pages
    Display posts and pages in popup iframe, not only image and video galleries. It’s like works preview in Dribbble and Behance, but on your own site.

  • Popup Gallery Deep Linking
    Makes URL automatically change when you open popup and you can easily link to a specific popup image.

  • White Label
    Possibility to use your brand name and logo instead of our “Visual Portfolio”.

Find much more portfolio and gallery features of Visual Portfolio Pro today!

🌟 More Features

  • Lightboxes for Standard WordPress Images
    Image lightbox available for Visual Portfolio galleries as well as for standard WordPress images and galleries in your content.

  • AJAX Loading and Pagination
    Every dynamic part of the Visual Portfolio plugin is using AJAX to update the gallery content in live mode.
    Organized galleries and portfolio …


  • Gutenberg Blocks
  • Gutenberg Block Settings
  • Projects Admin


Automatic installation

Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of Visual Portfolio, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.

In the search field type “Visual Portfolio” and click Search Plugins. Once you’ve found our plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.

Manual installation

The manual installation method involves downloading our Visual Portfolio plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains instructions on how to do this here.


Does Visual Portfolio has documentation?

Yes, our plugin has documentation to easily get started with galleries. Read it here – Visual Portfolio Documentation

What themes does Visual Portfolio support?

Visual Portfolio has been tested with many WordPress themes and supports all major WordPress themes. Since we follow WordPress’ plugin development guidelines, you can rest assured that Visual Portfolio galleries will work perfectly, no matter what theme you use. If you’ve installed Visual Portfolio and are facing issues, it might not be because of a theme incompatibility. Please get in touch with the support team by opening a support ticket in our support forum, and we will fix it for you.

Do I have to remove other Gallery and Portfolio plugins if I install Visual Portfolio?

That is recommended. Visual Portfolio is designed to be an all in one Gallery and Portfolio plugin. If you use other Gallery plugins with Visual Portfolio on your website, not only will the performance of your website be negatively affected, but both plugins working together can produce unexpected conflicts or errors.

Are the galleries mobile friendly?

Yes, Visual Portfolio built with mobile optimization in mind. It will automatically fit your screen size, so you don’t need to worry about. Furthermore, we prepared lazy loading, which significantly increases page loading speed. Before making a decision, just check by yourself how Visual Portfolio works on mobile devices.

Can I upload multiple images at once?

Yes, you can batch upload entire photo galleries at one time thanks to WordPress media library functionality.

Is there pagination for photo galleries?

Yes, you can use 3 type of pagination when displaying photo galleries or posts. Choose the number of photos to display and select Paged, Load More or Infinite Loading pagination. Examples with all gallery pagination types are available on the Visual Portfolio website.

Can I filter images and projects by categories?

Yes, our plugin has built in support for AJAX Filter by items categories. See a couple of examples:

Can I add an external links to galleries?

Yes, you can add external links to your gallery items.

Is Visual Portfolio developers friendly?

Yes, we prepared a lot of filters and actions for developers, so you can easily extend default functionality for your need. Read here more info for developers.

Is Visual Portfolio translation ready?

Yes, Visual Portfolio has full translation and localization support via the visual-portfolio textdomain. To submit a translation, see

More Information

For more information, feel free to visit Visual Portfolio official website.


फेब्रुअरी 14, 2024
More than 5 years using this plugin, and I absolutely love it !
फेब्रुअरी 14, 2024
Thank you very much for this awesome plugin! Works nice and easily!
फेब्रुअरी 1, 2024
It’s perfect, simple, and intuitive  I happy to use this!
जनवरी 15, 2024
I happy to use this!
डिसेम्बर 8, 2023
This plugin is great. After struggling to create a portfolio grid with Cornerstone, I was about to give up and find a new theme (I am currently using X theme) that was more conducive to a portfolio page, but then I found this plugin! It's perfect, simple, and intuitive unlike the built in Wordpress portfolio mechanisms. Thank you so much for creating this and making it free to use. HUGELY APPRECIATED!!!
सबै 267 समीक्षाहरू पढ्नुहोस्

योगदानकर्ता र डेभलपरहरू

“Visual Portfolio, Photo Gallery & Post Grid” खुला स्रोत सफ्टवेयर हो। निम्न व्यक्तिहरूले यो प्लगिनमा योगदान गरेका छन्।


“Visual Portfolio, Photo Gallery & Post Grid” 3 लोकेलहरूमा अनुवाद गरिएका छन्। योगदानको लागि अनुवादकहरूलाई धन्यवाद।

“Visual Portfolio, Photo Gallery & Post Grid” लाई आफ्नो भाषामा अनुवाद गर्नुहोस्

विकासमा रुचि छ?

आरएसएस द्वारा कोड ब्राउज गर्नुहोस्, एसभीएन रिपजिटरी हेर्नुहोस्, वा विकास लग को सदस्यता लिनुहोस्।


v3 Migration Guide –

3.2.4 – Feb 26, 2024

  • Free + Pro:
  • added stagger delay for Masonry, Grid and Tiles layouts
  • added proper horizontal order for Masonry layout
  • added possibility to edit gallery images in bulk
  • added gallery images filter by category in editor
  • fixed Portfolio menu item name change when on Taxonomy archive page
  • fixed duplicating Portfolio page after WordPress XML file import

  • Pro:

  • added Twitch avatar caching to fix missing link
  • added possibility to add any block on Proofing pages
  • fixed Grid vertical align option
  • minor fixes

3.2.3 – Dec 12, 2023

  • fixed displaying editor block when creating new Saved Layout

3.2.2 – Nov 29, 2023

  • added support for asset file change time when enqueue without .asset.php – better support for caching plugins
  • fixed Elementor preview stopped working

3.2.1 – Nov 29, 2023

  • fixed Pro plugin path and url detection – now it should work correctly when Free plugin is removed
  • fixed sitemap fatal error

3.2.0 – Nov 25, 2023

  • Free + Pro:
  • added support for proper SEO meta URLs in Portfolio archives and Filtered pages in Yoast SEO, AIOSEO, Rank Math
  • added Skin option to change item title tag
  • added vpf_extend_posts_source filter
  • added check for image existence when resave the gallery from the popup
  • added check for caption is empty and don’t print the figcaption
  • added support for new Ghost Kit extensions
  • updated blocks apiVersion to 3 to allow iframe usage in editor
  • fixed PHP 8.* warning
  • fixed lazy loading script styles added event when 3rd-party lazy loading used
  • fixed lazy loading without srcset
  • fixed lazy loading placeholder displaying when used Hover image
  • fixed width calculation for lazy loading and picture tag
  • fixed lazysizes script version number
  • fixed lazy loading conflict with WP Rocket Delay JS setting
  • fixed typo in DONOTCACHEOBJECT constant
  • fixed featured image focal point control conflict in WP 6.3
  • fixed Grid layout preview JS error in editor
  • simplified lazy loading placeholder animation
  • changed lazy loading styles to use modern :has() CSS (with fallback for old browsers)
  • removed jQuery usage from lazy loading script

  • Pro:

  • IMPORTANT: changed the Pro plugin to standalone, which is not requires the Free version installed anymore
  • added Setup Wizard support to all Social Account controls
  • fixed Share URL and paged gallery wrong URL
  • fixed mime detection for images in Flickr social feeds
  • fixed init conditionize script once opened Social settings panel

3.1.3 – Jul 1, 2023

  • improved PhotoSwipe popup zoom for large vertical images
  • changed ‘Projects’ CPT label to portfolio page name
  • changed images and overlay border-radius to clip-path (better performance)
  • fixed unexpected JS error when Sortable control have an undefined value (happens in Advanced Click Action for a single user after migration from older plugin version)

3.1.2 – Jun 6, 2023

  • renamed Portfolio Items to Projects
  • fixed playing videos in background in PhotoSwipe
  • fixed portfolio archive hidden pagination in some cases
  • fixed portfolio archive friendly URL in load more button
  • fixed portfolio archive filter and sort paged URLs

3.1.1 – May 17, 2023

  • fixed Archive mapping PHP notice when no Archive Page ID available
  • renamed Carousel to Slider

3.1.0 – May 12, 2023

  • added support for gradients in overlay backgrounds
  • added Restore Focus setting to the Popup gallery
  • added support for GET variables vp_page, vp_filter, vp_sort, vp_search in canonical and short links
  • added PHP filter vpf_global_data
  • changed CSS to use Gap instead of hack with margins
  • changed popup data <div> to <template>. We need this change for 3 reasons:
    • prevent popup data from indexing
    • prevent a lot of not needed content rendering
    • in some cases this content causes bugs with layout styles
  • changed default popup title and description source for Posts content. Use Image title and description, and not the post title and content
  • changed overlay displaying from focus to focus-visible
  • fixed Popup data displaying even when Click Action is URL
  • fixed transition caption transition CSS variable name in the Classic skin
  • fixed Skin editor error on WP 6.0 because of using NavigatorToParentButton component
  • fixed Select control dropdown is not visible in editor when opened popup

3.0.0 – Apr 13, 2023

  • completely reworked Skin options and some UI elements of block controls this helped us to structure deep Skin customizations such as:
    • Typography control
    • Dimensions control (overlay padding, caption items gap, etc)
    • Blend Mode for overlay
    • Image transform for normal and hover states
    • Image border radius for normal and hover states
  • changed the structure of Skin templates – use classes and CSS variables with overlay and caption names where appropriate
  • added caption support for popup in video items
  • improved controls dynamic CSS rendering – merge all styles with same selector with better formatting
  • improved filter and pagination URLs to friendly on portfolio archive page (good for SEO)
  • updated Swiper to v8.4.7
  • changed template styles version – use dynamic value based on filemtime function return
  • fixed portfolio category archives redirect when portfolio archive set as Front Page
  • fixed pagination on portfolio taxonomy archive pages
  • fixed canonical tags usage on portfolio category archives (fixes problems with SEO)
  • fixed wrong Current Query generated when changed Portfolio on Front Page setting
  • fixed Slider dynamic items height with Classic Style wrong items width
  • fixed Slider dynamic items height with FireFox wrong items width
  • fixed Slider items height incorrect size when used Items Height and Minimal Height options
  • fixed conflict with Elementor new Swiper library (added in Elementor v3.11.0)
  • fixed Elementor double lightbox on the pages, which does not use the Elementor page builder
  • removed hardcoded CSS for popup top position based on admin bar height, use --wp-admin--admin-bar--height variable instead
  • fixed error when using an array in control sanitize_callback (only in custom user controls)
  • renamed Items StyleSkin
  • renamed Items Click ActionClick Action
  • new hooks for developers:
    • added more data to vpf.editor.controls-render-inner-data JS filter
    • PHP vpf_register_block_attribute_data
    • PHP vpf_register_block_attributes
    • PHP vpf_items_style_builtin_controls
    • PHP vpf_pagination_item_data
    • PHP vpf_controls_dynamic_css_value
    • PHP vpf_controls_dynamic_css_styles_array
    • JS vpf.editor.controls-dynamic-css-value
    • JS vpf.editor.controls-dynamic-css-styles-object
    • jQuery afterShowFancybox
  • minor changes

2.22.0 – Feb 12, 2023

  • added support for Youtube Shorts in popup
  • added possibility to start AJAX loading when already in loading state (fixes the Search module conflict with concurrent requests)
  • added support for displaying Portfolio Categories and Portfolio Tags in the post-terms block
  • fixed filter, sort and pagination URLs to display absolute URLs
  • fixed creating notices over on over again if no items found after AJAX requests
  • fixed deprecated Elementor warnings
  • fixed saving permalink error in WordPress 6.1
  • fixed src data: escaping in lazy load images
  • fixed minimal pagination active item wrong circle size
  • fixed Fly overlay z-index when add Hover Image from Pro plugin
  • fixed block crash in the Widgets and Templates editor
  • fixed go pro link error when no Visual Portfolio admin menu exists
  • changed defaults for popup title and description sources
  • removed white background from Fancybox popup for better support vertical videos
  • removed clipboard-polyfill and use native navigator.clipboard.writeText instead
  • minor changes

2.21.2 – Nov 25, 2022

  • fixed JS error when open WordPress images in Lightbox
  • fixed JS error when changing gallery image data

2.21.0 – Nov 24, 2022

  • added templates for popup data in /templates/popup/, so developers can override it now in the theme templates
  • added auto height to filter/sort dropdown
  • added support for HTML tags in the popup title
  • added groups for controls for better UI
  • added more steps in the block Setup Wizard
  • added Wide alignment to newly added blocks by default
  • added a notice for large galleries to use Infinite pagination for better performance
  • added Items Per Page limit and Infinite pagination to the gallery when user adds more than 40 images in the Setup Wizard
  • added support for align option in Filter and Sort shortcodes
  • added text_all attribute to Filter shortcode
  • improved shortcodes UI in Saved Layouts
  • changed default Infinite pagination threshold from 250px to 400px
  • fixed wrong popup image displaying when custom URL used
  • fixed post featured image focal point save error
  • fixed Elementor widget in Safari can’t select layout
  • fixed Jetpack lazy loading re-layout Masonry conflict
  • fixed displaying popup data in HTML when click action disabled
  • fixed duplicated portfolio page in Archive settings
  • fixed PHP warning …