Most people reach for custom post type plugins because WordPress only ships with posts and pages, and a portfolio, a property listing or a staff directory does not belong in either. The awkward part nobody mentions: registering a post type takes about fifteen lines of PHP. So a plugin has to earn its slot by doing something more than that, and several of the popular ones do not. Here is what each one actually costs, and when code wins.
Quick verdict
- Best overall: Advanced Custom Fields. The free version registers post types and taxonomies and handles the fields you will inevitably need next, so it replaces two plugins with one.
- Best free, registration only: Custom Post Type UI. It does one job, and its Get Code screen hands you the PHP so you can eventually stop depending on it.
- Best if you are already building dynamically: JetEngine, but only because you are paying for the listing grids, query builder and templates, not for the post type screen.
- Skip it if: you are comfortable in a functions file. A post type in a small must-use plugin costs nothing, never expires and never nags you to upgrade.
- Our call: free tools cover registration completely. Pay only when you are buying the front-end layer on top, and know that you are buying a dependency, not a convenience.
Custom post type plugins compared
Two things matter more than feature lists here: whether the free tier registers post types at all, and what you pay in year two. Renewal is where these products separate, and it is the number roundups leave out.
| Plugin | Registers CPTs for free? | Paid tier, first year | Renewal | Active installs |
|---|---|---|---|---|
| Custom Post Type UI | Yes | CPT UI Pro, $99 one-time, 1 site | None, it is a one-time purchase | 1,000,000+ |
| Advanced Custom Fields | Yes | ACF PRO, $49/yr, 1 site | $49/yr, auto-renews | 2,000,000+ |
| Secure Custom Fields | Yes | No paid tier | Not applicable | 90,000+ |
| Pods | Yes | No paid tier from the Pods team | Not applicable | 100,000+ |
| Meta Box + MB Custom Post Types | Yes | Basic Bundle, $49/yr, personal | Regular price, no stated discount | 500,000+ (Meta Box core) |
| JetEngine | No, paid only | $75/yr, 1 project | $75/yr, no separate rate published | Not listed on WordPress.org |
| Toolset | No, paid only | €69 first year, 1 site | €51/yr | Not listed on WordPress.org |
Two arithmetic notes before the sections. Among the USD-priced subscriptions in that table, ACF PRO and Meta Box’s Basic Bundle tie at $49 a year, the lowest annual figure of the paid options. And Meta Box’s $299 one-time Lifetime Bundle does not overtake its own $49 Basic Bundle until year seven: six years of renewals comes to $294. Most of the sites you are building now will not survive that long in their current form.
Custom Post Type UI

CPT UI is the plugin most WordPress people met first, and it is still on more than a million active sites. It gives you a form for every argument register_post_type() accepts, saves the result to the options table, and stays out of the way. It does not display anything on the front end, which is the source of most disappointment with it.
The feature worth knowing about is the Get Code screen. It prints the exact PHP for the post types and taxonomies you built through the interface. Paste that into a code snippet plugin or a must-use file, deactivate CPT UI, and your content model survives without it. That is a rare thing for a plugin to offer, and it is the single best argument for starting here.
Key features
- Full form coverage of post type and taxonomy arguments, including REST visibility and archive settings
- Get Code export that turns your clicks into copy-paste PHP
- Import and export of registrations as JSON, so you can move a content model between sites
- WPML string registration for multilingual builds
Price: free. CPT UI Pro is a separate $99 one-time purchase for one site at its published launch price, adding query loop blocks, taxonomy filters, admin column control and multisite registration. The vendor states the price rises after the launch period, so treat $99 as a snapshot.
Best for: anyone who wants registration and nothing else, and who intends to hand the site to a client who will never touch the settings again.
Skip it if: you already run ACF, Pods or Meta Box. A second plugin doing the same registration is pure overhead, and the free version genuinely will not put your posts on a page for you.
Advanced Custom Fields (and Secure Custom Fields)

Since version 6.1, ACF registers post types and taxonomies from its own admin screens, and that capability sits in the free plugin rather than behind the PRO licence. For most builds this settles the question: you were going to install a fields plugin anyway, so let it own the post types too and delete one dependency from the stack. ACF is on over two million sites.
Now the part you need to know before you commit. In October 2024 WordPress.org forked ACF into Secure Custom Fields, and both plugins have shipped independently ever since. SCF is maintained by WordPress.org, has around 90,000 active installs, and also registers post types and taxonomies from its interface. Its own listing warns that activating it deactivates ACF and ACF PRO, because the function names collide. Running both is not an option, and choosing one is a governance decision as much as a technical one.
Practically: if you want vendor support, PRO field types and a company with a roadmap, stay on ACF. If you would rather keep every update flowing through the WordPress.org channel your other plugins already use, SCF does the post type job identically and costs nothing. Whichever you pick, export your field groups before you switch, and take a full backup first.
Key features
- Post type and taxonomy registration in the free plugin, alongside field groups
- Local JSON, so your content model lives in the repository and syncs between environments
- Import from Custom Post Type UI, so you can consolidate without rebuilding
- PRO adds Repeater, Flexible Content, Gallery, Clone, Options Pages and ACF Blocks
Price: free for registration and standard fields. ACF PRO is $49 a year for one site, $149 for ten and $249 for unlimited, in USD excluding tax. Licences renew automatically at the same annual price; there is no published renewal discount. Development and staging installs do not count against the site limit, which is a genuinely fair touch. SCF is free with no paid tier.
Best for: almost every custom build, because post types without fields are rarely the end of the story.
Skip it if: you need nothing but a post type and would rather not carry a fields engine you never configure. That is a real scenario, and it is what CPT UI or fifteen lines of PHP is for.
Pods

Pods is the only tool in this list that covers post types, taxonomies, fields, relationships and front-end templates with no paid tier at all from its own team. There is no locked screen waiting three clicks in. It carries 100,000+ active installs and a 4.8 rating, which is small next to ACF but very loyal, and it has been shipping since long before most of its rivals existed.
Its distinguishing feature is relationships done properly. Linking a Recipe to several Ingredients, then querying back the other way, is native rather than an add-on. Pods also lets you store fields in their own tables instead of post meta, which matters once you are counting rows. The trade-off is an interface that feels engineered rather than designed, and documentation that assumes you already know what a field group is.
Key features
- Post types, taxonomies, custom fields and settings pages in one free plugin
- Bidirectional relationship fields between any two content types
- Optional custom database tables instead of post meta
- Pods Templates and blocks for front-end output without touching theme files
Price: free, and that is the whole story. Optional add-ons exist from third parties outside the core team, so check who maintains anything you install alongside it.
Best for: content models with real relationships in them, on a budget of zero.
Skip it if: the site is being handed to a non-technical owner. The admin screens will not flatter you in the handover call.
Meta Box

Meta Box is built the way a developer would build it: a small free core on 500,000+ sites, with everything else split into extensions you add only if you need them. Post types come from MB Custom Post Types and Custom Taxonomies, which is free on WordPress.org and, like CPT UI, will export your registration as PHP.
That modularity is the appeal and the annoyance. You get a lean install that only loads what you use, and you also get a shopping list: one extension for the builder interface, another for front-end submission, another for admin columns. Meta Box’s own bundles exist precisely because assembling extensions individually stops being sensible past about three of them.
Key features
- Free post type and taxonomy registration through a separate, free extension
- PHP-first field definition, which suits version-controlled projects
- Conditional logic, term meta, user meta and settings pages as individual extensions
- Views and Frontend Submission extensions for output and user-generated content
Price: the core plugin and the post types extension are free. On the Meta Box pricing page, personal bundles run $49 a year (Basic), $99 a year (Ultimate) and $299 one-time (Lifetime); agency equivalents are $149, $229 and $699. Annual plans renew at regular price, with no discount stated.
Best for: developers who define fields in code and want the smallest possible runtime on the site.
Skip it if: you want one download that does everything on install. Counting extensions is not everyone’s idea of an afternoon.
JetEngine

JetEngine, from Crocoblock, is one of two tools here with no free tier, and it is the one where paying is easiest to justify, because registration is maybe five percent of what you get. The rest is the dynamic layer: listing grids, a query builder, relationships, dynamic tables and charts, profile pages and front-end forms, wired into Elementor, Gutenberg and Bricks.
It also has a feature the free tools do not: Custom Content Types, which store each record as a single row in its own wp_jet_cct_ table instead of spreading it across wp_posts and wp_postmeta. For a directory with fifty thousand entries that is the difference between a usable admin and a timeout. If your project is a listings site, that alone justifies the licence.
The catch is dependency, and it is a large one. Your post types, your listings and your templates all live inside JetEngine. Stop renewing and you keep the plugin working but lose updates; remove it and nothing registers your post types or renders your listings any more. That is a fine trade on a project you maintain, and a bad one on a site you are handing over and walking away from.
Key features
- Post types, taxonomies, meta fields and meta boxes from one interface
- Custom Content Types stored in dedicated tables, not post meta
- Listing grids, query builder, dynamic tables and charts
- Relationships, user profile builder and front-end submission forms
Price: on the Crocoblock pricing page, JetEngine on its own is $75 a year for one project or $169 a year for unlimited. The All-Inclusive subscription is $199 a year for one site and bundles 22 JetPlugins, so the moment you want three individual plugins at $75 each, that $225 makes the $199 subscription the cheaper basket. A $999 one-time Lifetime plan covers unlimited sites. The page publishes annual prices and does not list a separate renewal rate, so confirm at checkout.
Best for: directories, real estate, job boards and anything where the listing is the product and you will maintain the site yourself.
Skip it if: you only need three post types and a couple of fields. You would be paying $75 a year to avoid writing code that a free plugin will generate for you.
The link below is an affiliate link. If you buy through it we may earn a commission, at no extra cost to you.
Toolset

Toolset covers the same ground as JetEngine without needing a specific page builder: post types, fields, taxonomies, relationships, templates, archives, a query builder, front-end forms and role-based access control, all under one licence. If you build with Gutenberg and want the whole content stack from one vendor with one support desk, it is a coherent answer.
It is also the only product here priced in euros, which is why it sits outside the dollar comparisons above rather than in them. Worth noting from its own buy page: the stated compatibility range is WordPress 5.0 to 7.0.4, so check the current WordPress release against that before you commit a client project to it.
Key features
- Custom post types, fields and taxonomies via the Types component
- Repeatable field groups and post relationships
- Custom templates, archives, query builder and search builder
- Access control, forms builder, maps and WooCommerce integration on every tier
Price: the Toolset buy page lists €69 for one site, €149 for three and €299 for unlimited, each covering a year of updates and support. Renewals are cheaper than the first year: €51, €111 and €224 respectively. Every tier includes every component, which is refreshingly free of feature gating.
Best for: Gutenberg builds where one vendor owning post types, templates, forms and access control is worth more than best-of-breed pieces.
Skip it if: you already own a page builder with dynamic capability. You would be paying twice for the templating half.
What most roundups get wrong: a post type is about fifteen lines
Every list like this one opens by implying that custom post types are a hard problem plugins solve. They are not. The core function takes a name and an array of arguments on the init hook, and a complete, production-ready testimonial type looks like this:
add_action( 'init', function () {
register_post_type( 'testimonial', array(
'labels' => array(
'name' => 'Testimonials',
'singular_name' => 'Testimonial',
),
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-format-quote',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
'show_in_rest' => true,
'rewrite' => array( 'slug' => 'testimonials' ),
) );
} );
Drop that in wp-content/mu-plugins/site-post-types.php and it runs before anything else, cannot be deactivated by accident, and survives every theme change. One thing does break, reliably: archive URLs return 404 until the rewrite rules are flushed. Visit Settings, then Permalinks, and click Save Changes once. Do that after any change to rewrite or has_archive.
So when is a plugin genuinely the right call? Three situations, and they are narrower than the marketing suggests.
- Someone other than you will add post types later. A client who needs a new content type next quarter is not going to open a PHP file. An admin screen is the deliverable.
- You need the layer above registration. Fields, relationships, archive templates, filtered listings, front-end submission. That is real work, and buying it is rational.
- The data does not belong in
wp_posts. Tens of thousands of records with a dozen meta values each will make post meta queries hurt. Custom tables, from JetEngine or Pods, are the fix.
And the dependency you will regret: a paid, builder-bound plugin holding post types for a small brochure site you hand over and never touch again. Two years later the licence lapses, the plugin stops updating, a PHP upgrade breaks it, and the client’s Services pages vanish from the admin because nothing is registering that post type any more. The posts are still in the database, untouched. Nobody can reach them. That call always comes on a Friday.
The insurance is trivial: whatever you use, export the registration as PHP before launch and keep it in the repository. CPT UI and Meta Box both hand you that code. Then even a total plugin failure is a paste job rather than a rebuild, and a site migration later stays boring.
A short decision path
- You are the only one who will ever add a post type: write the fifteen lines. No plugin, no licence, no update surface.
- You need fields too, which you will: ACF free, or Secure Custom Fields if you prefer the WordPress.org channel. One plugin covers both jobs.
- A client needs the admin screen and nothing else: Custom Post Type UI, with the Get Code output saved into the repository on day one.
- Your content model has relationships and no budget: Pods.
- You are building a directory or listings site you will maintain: JetEngine, for the query builder and custom tables, not for the registration screen.
- You want one vendor for the whole content stack in Gutenberg: Toolset, at €69 for the first year and €51 to renew.
Whichever you land on, keep an eye on what the tool loads on the front end. Registration costs nothing measurable; a dynamic toolkit shipping widget CSS and query assets on every request is a different conversation, and one worth having when you look at site speed. The same goes for archives: set has_archive deliberately and make sure the pages you expose are ones you actually want indexed when you optimise content for search.
Frequently Asked Questions
Do I need a plugin to create a custom post type?
No. The register_post_type function on the init hook does the job in about fifteen lines of PHP, with no licence and no update cycle. A plugin earns its place when non-technical people need to add types later, or when you also want fields, archives and front-end output.
What happens to my content if I deactivate the plugin?
The posts stay in the database, but WordPress stops recognising the post type, so the admin menu and the archive disappear and the entries become unreachable. Register the same post type again, in code or in another plugin, and everything reappears. Nothing is deleted.
Should I use ACF or Secure Custom Fields?
SCF is the WordPress.org fork of ACF, shipping separately since October 2024. Both register post types for free. Pick ACF for PRO field types and vendor support; pick SCF if you would rather stay inside the WordPress.org update channel. Do not run both, as activating one deactivates the other.
Is CPT UI still worth installing now that ACF registers post types?
Only if you want registration and nothing else. CPT UI stays lean, and its Get Code screen exports a ready register_post_type call you can paste into a snippet before removing the plugin. If you already run ACF, Pods or Meta Box, a second registration plugin adds nothing.
Can I move post types from one plugin to another?
Usually yes, because the post type name is just a string stored against every entry. Register the identical slug in the new tool, confirm the entries appear, then switch the old one off. Field data is the harder half, so export your field groups before you change anything.
Do custom post types slow a site down?
Registration itself is cheap. The cost comes from what the plugin loads alongside it: builders, query widgets, relationship tables and admin assets on every request. A registration-only approach adds almost nothing measurable, while a full dynamic toolkit is a real dependency you should budget for.
Why do my custom post type archive URLs return a 404?
Rewrite rules have not been flushed. Open Settings, then Permalinks, and click Save Changes once. Also confirm has_archive is set to true and that the post type slug does not collide with an existing page slug, which is the other common cause of this.
Which plugin should I use on a client site?
The one whose admin screens your client can survive without you. CPT UI or the ACF interface for straightforward content models; JetEngine or Toolset when the same tool also builds the listings and templates. Match the tool to whoever maintains the site after launch, not to the feature list.
Our call
Install Advanced Custom Fields. The free version registers post types and taxonomies, handles the custom fields you will want within a week, syncs to JSON so the content model lives in your repository, and costs nothing. If the WordPress.org fork matters to you, Secure Custom Fields does the same job from the official directory. Neither decision is expensive to reverse.
Pay only for the layer above registration. JetEngine at $75 a year is worth it for a directory with custom tables and a query builder behind it; Toolset at €69 makes sense when you want one vendor for post types, templates and forms in Gutenberg. Both are genuine dependencies, so pick them for sites you will still be maintaining in three years.
And whatever you install, export the registration PHP before launch and commit it. Fifteen lines in a must-use plugin is cheap insurance, and it turns a lapsed licence into a shrug instead of an emergency. If you want the templating side next, here is how to build a single post layout for your new post type.





[…] for: sites with a sprawl of custom post types where the admin list tables have become […]
[…] at a post type and it builds a searchable, sortable table from your existing content, including custom post types, taxonomy terms and custom fields. For a document library, a staff directory or a course index, […]