You can create a portfolio on WordPress using a dedicated portfolio plugin, a theme with built-in portfolio features, or the native block editor with the right layout strategy. The approach that works best depends on whether you’re on WordPress.com or self-hosted WordPress.org, how many projects you need to showcase, and how much control you want over the design.
Choose Your WordPress Setup First
WordPress exists in two forms, and the distinction matters for portfolio building. WordPress.com is the hosted version where WordPress handles the servers, security, and updates for you. WordPress.org is the open-source software you download and install on your own web hosting. On WordPress.com, you can install plugins and custom themes on any paid plan. On a self-hosted WordPress.org site, you have complete freedom to install anything, but you’re responsible for hosting, updates, and security.
If you’re on WordPress.com’s free tier, your portfolio options are limited to what the built-in themes and block editor offer. Upgrading to a paid plan unlocks plugin access, which dramatically expands what you can build. If you’re self-hosted, every method below is available to you from the start.
Pick a Theme With Portfolio Support
The fastest path to a working portfolio is choosing a theme designed for it. Many WordPress themes include portfolio-specific templates, project grid layouts, and filterable galleries right out of the box. When browsing the theme directory, search for “portfolio” and look for themes that include dedicated project pages, grid or masonry layouts, and category filtering.
A portfolio-focused theme handles the visual structure so you only need to add your content. You’ll typically get a custom section in your dashboard where you can add portfolio items with featured images, project descriptions, and category tags. The theme then displays those items in a pre-designed grid on your portfolio page. This approach works well if you’re comfortable with the theme’s design and don’t need heavy customization.
Build a Portfolio Page With the Block Editor
If you’d rather not rely on a theme’s built-in portfolio feature or a plugin, the WordPress block editor (Gutenberg) gives you enough tools to build a solid portfolio page manually. Blocks are individual content elements like images, columns, headings, and galleries that you arrange into a layout.
Start by creating a new page and giving it a title like “Portfolio” or “My Work.” The blocks most useful for portfolios are:
- Gallery block: Displays multiple images in a grid. You can set the number of columns, crop thumbnails to uniform sizes, and link each image to its own attachment page or a custom URL.
- Columns block: Creates a multi-column layout where each column can hold an image, heading, description, and link to a full project page. A three-column layout works well for most portfolio grids.
- Media & Text block: Places an image next to a text description, which is ideal for case-study-style entries where you want to pair a project screenshot with details about the work.
- Cover block: Overlays text on top of an image, useful for creating visually striking project cards with a title layered over a hero image.
For each project, you can create a separate page with the full project details, then link each portfolio grid item to that page. This gives visitors a quick overview on the main portfolio page and a deep dive when they click through. To keep things organized, consider using a consistent structure across all project pages: a hero image at the top, a brief description of the project scope, your role, and key visuals or results.
Use a Portfolio Plugin for More Features
Plugins add functionality that the block editor and most themes don’t offer natively, like filterable categories, lightbox pop-ups (where clicking an image opens a larger version without leaving the page), and smooth animated transitions. If your portfolio has more than a dozen items or spans multiple project types, a plugin will make it far easier to organize and display.
Several well-regarded portfolio plugins are worth considering:
- Visual Portfolio: Offers AJAX-powered filtering, which means visitors can sort projects by category without the page reloading. Supports multiple layout styles including grid, masonry, and justified layouts.
- FooGallery: Strong lightbox support with custom captions on both thumbnails and the expanded view. The Pro version includes a multi-level filtering system for complex portfolios.
- GridKit Portfolio Gallery: Includes project detail pages with custom fields, making it suitable for case studies. The free version covers responsive design, basic filtering, and lightbox functionality.
- Essential Grid: An advanced filtering system that supports multiple categories at once, so visitors can refine your portfolio by project type, year, client, or custom tags simultaneously.
After installing a plugin, the general workflow is the same across most of them: you add portfolio items (usually through a new menu item in your dashboard), assign categories or tags, upload images, and then place the portfolio on any page using a shortcode or a dedicated block. Most plugins let you configure the number of columns, spacing, hover effects, and whether clicking opens a lightbox or a separate project page.
Set Up Custom Post Types for Projects
If you want your portfolio items to live as their own content type, separate from regular blog posts and pages, you’ll need a custom post type. Think of it this way: just as WordPress treats “posts” and “pages” as distinct types of content with their own sections in the dashboard, a custom post type called “Portfolio” gives your projects their own dedicated area.
This approach makes sense when your portfolio items don’t fit the blog post format. They aren’t chronological, they need different fields (like client name, project URL, or tools used), and they should be displayed in their own layout rather than mixed into your blog feed.
There are two ways to create a custom post type. The simpler route is using a plugin like Custom Post Type UI, which gives you a visual interface to define your new post type without writing code. You name it, configure its settings, and it appears in your dashboard sidebar. The more technical route is adding a function to your child theme’s functions.php file or creating a small custom plugin. The basic code registers the post type with WordPress:
You call the register_post_type() function and pass it arguments that define the post type’s behavior. Key settings include what the labels say in the dashboard, whether the post type supports featured images and excerpts, and whether it has an archive page that automatically lists all your portfolio items. The “supports” argument is particularly useful because it lets you enable specific editing features like the title field, content editor, thumbnail support, and custom excerpts for each project.
Creating a custom post type as a plugin rather than editing your theme file makes it portable. If you switch themes later, your portfolio content stays intact.
Organize Your Portfolio With Categories and Tags
However you build your portfolio, organizing projects into categories makes it usable for visitors. If you’re a designer, you might separate work into branding, web design, and illustration. A photographer might use weddings, portraits, and commercial. A developer might split projects by technology or industry.
In WordPress, these categories are called taxonomies. Portfolio plugins typically let you create custom taxonomies specific to your portfolio items. You might set up one taxonomy for project type and another for skills or tools used. This structure powers the filtering feature on your portfolio page, letting visitors click “Branding” to see only branding projects.
Keep your category structure simple. Three to six categories is usually enough. Too many categories means most will contain only one or two items, which defeats the purpose of filtering. If you have fewer than ten total projects, filtering may not be necessary at all.
Optimize Images for Fast Loading
Portfolios are image-heavy by nature, and large unoptimized images will make your site painfully slow. A visitor who waits more than a few seconds for your portfolio grid to load may leave before seeing your work.
Start by resizing images before uploading. Your portfolio thumbnails don’t need to be 4000 pixels wide. For a grid layout, images around 800 to 1200 pixels wide are typically sufficient, with larger versions available for lightbox views. Save images in modern formats like WebP or AVIF, which deliver noticeably smaller file sizes than JPEG or PNG at comparable quality.
An image optimization plugin like Smush can handle much of this automatically. It compresses images using lossless or lossy compression (lossless preserves every pixel, lossy sacrifices imperceptible detail for smaller files), converts images to WebP or AVIF, and enables lazy loading so images only load when a visitor scrolls them into view. Lazy loading is especially valuable for portfolios because it means the browser doesn’t try to download all 30 of your project images the moment someone opens the page. You can also set it to preload the most important images at the top of the page, which helps with Largest Contentful Paint, one of the speed metrics Google uses for search rankings.
Create Individual Project Pages
A portfolio grid gets people interested. Individual project pages close the deal. Each project page should tell the story of the work: what the challenge was, what you did, and what the outcome looked like.
A solid project page structure includes a large hero image or project screenshot at the top, a brief summary of the project scope and your role, additional images or mockups showing the work in context, and a clear link to the live project if applicable. If you’re using custom post types, you can add custom fields for details like client name, completion date, and tools used, then display those consistently across all project pages.
Keep project descriptions concise and focused on what matters to the person reviewing your work. A potential client or employer wants to know what problem you solved and how, not a diary entry about your creative process. Two to four paragraphs plus strong visuals is usually the right balance.
Add Your Portfolio to Site Navigation
Once your portfolio page or archive is built, make sure visitors can find it. Go to Appearance, then Menus (or the navigation block in newer themes), and add your portfolio page to your main menu. Place it prominently, ideally as one of the first two or three items. If your portfolio is the primary purpose of your site, consider making it your homepage by going to Settings, then Reading, and selecting your portfolio page as the static front page.
If you created a custom post type with an archive enabled, WordPress automatically generates an archive page at a URL like yoursite.com/portfolio. You can add this URL directly to your menu. Some themes also let you set a custom page as the archive template, giving you more design control over how the portfolio listing appears.

