“Must Have” WordPress Plugins when Building Websites for Clients (2019)

Last updated: 5 May 2019

Over the years, I compiled a detailed list of essential plugins that I use with every WordPress installation. I use them on my clients’ websites, but as well as on my own sites (including this site).

Nobody likes to talk about small, obscure plugins, but I will. Generally disregarded, they can be crucial to the good functioning of a website.

Don’t get me wrong, there are some large and popular plugins in this list, but it’s often the small things that make the difference.

Feel free to use this list of plugins as your starting point when working with WordPress and adapt as needed.

Note: This article will be a cornerstone for all the future articles that I will write about plugins. I will update this article over time as the list evolves.

(Psst! Bookmark this page or join my Slack workspace to keep in touch.)

I will summarize the “must have” plugins here as best as I can, but before jumping on to the main topic, let’s first debunk a myth. 

No thanks, skip to the main topic.

Myth: Too many plugins is bad for your website.

I often hear this phrase thrown out on the Internet. It’s absolutely not true.

You can’t have more than X plugins!

– Some person on the Internet

It’s not the quantity of plugins that counts, but their quality. A plugin can be a simple plugin-name.php file dropped in the wp-content/plugins folder. Here’s an example:

<?php
/**
 * Plugin Name:       WordPress Plugin Name
 * Plugin URI:        https://edrucks.com
 * Description:       An example plugin with a simple filter.
 * Author:            Ed Rucks
 * Author URI:        https://edrucks.com
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 */

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

add_filter( 'login_message', 'edrucks_login_message' );
/**
 * Adds some text above the login form in the WordPress login form.
 *
 * @param    string $message    The default message to display above the form.
 * @return   string $message    The message to display above the form.
 */
function edrucks_login_message( $message ) {
	$message = '<h2>';
	$message .= 'Some text';
	$message .= '</h2>';
	return $message ;
}

In the above example, there is just one filter at work; but, that’s how most of WordPress works and how plugins extend functionality. Actions and filters.

There is nothing wrong with having a lot of plugins if they are well coded and follow WordPress best practices. Heck, you can even have 100+ of these simple plugins activated.

Granted, each activated plugin adds some weight to the load of the site, but the effect is negligible if the plugin is of high quality.

It is okay to trade off milliseconds for useful functionalities, especially with how accessible and cost-effective cloud computing is today.

When a site reaches millions of hits, then it’ll be worth to scrape off the milliseconds. Until then, feel free to install as many good plugins as you want.

You should still be very careful in choosing your plugins.

Large plugins, due to their complex nature, oftentimes have parts that are badly coded.

A simple plugin can also be badly coded, but it’s harder to fail when you’re only working with a handful of functions.

WordPress is open-source and has a vast community. It is inevitable to find bad plugins or plugins with bad parts that just slow down your website or have vulnerabilities.

It only really takes one plugin to bring down the entire website, so you have to make sure there is no weak link in the chain.

Anyway, performance is a journey, not a destination. Even stable plugins developed by seasoned developers are bound to experience issues at some point.

However, good plugins are properly tested before their release, so issues are minimized. Most importantly, they frequently evolve and problems get quickly resolved.

That is why it is important to check that your chosen plugins are kept up to date by competent developers, no matter how many plugins you use.

If you have a lot of plugins, that just means there’s more checking and testing to do.

Alright, show me the list.

List of essential WP plugins

The following list is in a some-what alphabetical order and does not portray importance.

Each plugin in this list accomplishes a specific set of tasks that, in my opinion, is critical to the well-being of a website powered by WordPress.

I always install every single one of these plugins on a new website that I start working on, and then I activate/deactivate as needed.

Here’s the list of plugins (with their corresponding size on disk):

Admin Menu Editor

Snippet of Admin Menu Editor
Snippet of Admin Menu Editor

When creating websites for clients, Admin Menu Editor helps me customize the back-end admin interface.

I do not want my clients to be intimidated by all the visible options and features. With this plugin, I can hide menus that are not relevant to my clients’ day-to-day operations.

This plugin also prevents unauthorized access, so that my clients do not modify any risky settings that could potentially break their website.

Even if it’s for my personal website, I still like to use this plugin and have separate user accounts for different use cases. This plugin works well with User Role Editor.

Beaver Builder

Snippet of Beaver Builder
Snippet of Beaver Builder

Okay, I lied. I know I mentioned at the beginning that I will not portray importance in this list, but this plugin is an exception. This one is perhaps the most important plugin.

Beaver Builder (the standard version) is not free, but it can easily pay for itself. The lowest tier plan at US$99 per year (with 40% discount on renewals) is cost-effective.

Buy it once, pay per year, and use it on all your clients’ websites.

Screenshot of the pricing page on Beaver Builder's site
Screenshot of the pricing page on Beaver Builder’s site

Beaver Builder is my favourite and most crucial tool. This plugin allows you to visually build pages, in a way that is easy and fast to execute.

For advanced development, you can code your own modules. Your clients will be able to drag and drop your custom modules directly onto the pages.

Beaver Builder is well built and will accelerate your design workflow. I will definitely talk more about it later, so for now try to experiment with it yourself.

Beaver Themer

Snippet of Beaver Themer
Snippet of Beaver Themer

Beaver Themer is the right hand of Beaver Builder and is as important.

You will love this plugin if you’re looking for a solution to streamline templates and loops.

It costs an additional US$147 per year (with 40% discount on renewals), but you’ll be able to use it on unlimited sites. This kind of pricing fits well with agencies.

WordPress is mostly used as a CMS. If your client needs to write structured content on their website on a frequent basis, you need to make content entry user-friendly.

In order to make it easy, you might need to create custom post types (with Custom Post Type UI), custom fields (with Advanced Custom Fields), archive templates, and single templates.

With Beaver Themer, you can efficiently assemble all the archive and single templates, build them with Beaver Builder, and make the website truly dynamic.

In addition, Beaver Themer allows you to create parts, such as headers and footers, and (conditionally) add them to various locations on the website.

If you’re serious about the “content management” part of a website, Beaver Themer will be very helpful to you.

Custom Post Type UI

Snippet of Custom Post Type UI
Snippet of Custom Post Type UI

Sometimes the post types that come with WordPress (posts and pages) are not enough. With Custom Post Type UI, you can easily create custom post types (CPTs) for new kinds of content.

Whether it’s to display team members, portfolio projects, or services, you can classify and organize your content with CPTs.

CPTs work especially well when each item from the CPT needs to have its own page, a.k.a. the single template.

Then, you can use the main loop to display items from the CPT on the archive templates. With Beaver Builder, you can also use custom loops to display any items anywhere.

CPTs are underrated in WordPress, but they lay the proper foundation for managing content.

Advanced Custom Fields

Snippet of Advanced Custom Fields
Snippet of Advanced Custom Fields

If you’re working with repetitive content, Advanced Custom Fields is the ideal solution to prepare blueprints of content. Just like characteristics, custom fields describe a piece of content.

You can associate these custom fields to any content (post types), either the default ones or the custom ones that you created with Custom Post Type UI.

By using custom fields, your client will be able to focus on the content without worrying about the layout.

For example, you could create a custom post type for “Team Members”. Then, create fields for “Telephone”, “Email”, and “Biography”.

Add Beaver Builder and Beaver Themer on top to create the single and archive templates, and you’re all set.

Advanced Custom Fields has a Pro version. It adds some cool features, such as the repeater field. It might come in handy when the content is complex enough to warrant these extra features.

I am planning on writing more on this subject. If you’d like to know how to create solid content management systems with these plugins, stay in touch by joining my Slack workspace!

Clean Image Filenames

Snippet of Clean Image Filenames
Snippet of Clean Image Filenames

Have your clients ever uploaded images with filenames that included weird letters? Clean Image Filenames will clean the filenames of all media that gets uploaded to the library.

Special characters in filenames is a bad practice. Not only there can be issues with some browsers, it can be a hassle when migrating a website from one server to another.

Instead of enforcing rules and giving more work to the client, let this plugin do all the renaming work. Activate this plugin, move on, and save yourself some trouble.

Disable Gutenberg Blocks – Block Manager

Snippet of Disable Gutenberg Blocks - Block Manager
Snippet of Disable Gutenberg Blocks – Block Manager

Gutenberg came and brought a new way of building posts and pages. Disable Gutenberg Blocks will help you manage the blocks that are available to use for your clients.

Even though I use Beaver Builder to build pages, I still keep the new block editor activated, mostly for blog posts. Writing articles with blocks is ingenious.

However, I like to disable a few blocks to make the experience better for my clients.

I will write a new article soon on how I use Gutenberg and which blocks I keep enabled. Stay tuned!

Duplicate Post

Snippet of Duplicate Post
Snippet of Duplicate Post

Duplicate Post will allow you to clone pages, post or any other post type content, so you don’t repeat yourself. This plugin is a real time-saver.

I also prepare a few private starter pages for my clients to create new drafts from. That way, they can jumpstart their work and follow what has already been laid out on the page.

Simple and practical.

Favicon by RealFaviconGenerator

Snippet of Favicon by RealFaviconGenerator
Snippet of Favicon by RealFaviconGenerator

Favicon by RealFaviconGenerator is another time-saver plugin that will help you generate all the necessary icons for the website you’re working on.

Why manually prepare image files when you can use this tool? Start with your base icon and follow the steps within the generator.

The cool thing is that you get to see the preview of how the icons will actually look like in their environment.

This will allow you to adjust the settings accordingly and upload dedicated images as needed.

This plugin also keeps up to date with latest browser changes, so you don’t need to keep track of them yourself. Simply use the generator and voilà!

Google Tag Manager for WordPress

Snippet of Google Tag Manager for WordPress
Snippet of Google Tag Manager for WordPress

A website without analytics is like a blind man without a cane. Okay, maybe that wasn’t the best analogy, but the point is you need to have analytics on your website.

The best way to achieve this is to use Google Analytics through Google Tag Manager (GTM).

Google Tag Manager for WordPress will help you inject the necessary script (and noscript) tags onto the pages.

You can also configure the plugin to insert various data in the dataLayer to be able to access it in GTM.

This plugin has integration with WooCommerce, so you can even track classic or enhanced e-commerce data.

I like to work with GTM instead of working directly with Google Analytics, as it adds an abstraction layer between development and marketing.

Once you integrate the website with GTM, your client will be able to efficiently delegate marketing tasks and implement tags without the intervention of a developer.

Gravity Forms

Snippet of Gravity Forms
Snippet of Gravity Forms

Even if you don’t need a form now, you might need one tomorrow. Forms are fundamental to the Web just as much as links.

With Gravity Forms, you will be able to create and manage all kinds of forms on your clients’ websites.

It’s not too expensive, but if you want to use it on unlimited websites and have access to every available add-on, then you’ll need to pay US$259 per year.

Screenshot of the pricing page on Gravity Forms' site
Screenshot of the pricing page on Gravity Forms’ site

Gravity Forms has been in the game for a long time. It has many add-ons and integrations with third-party services. This is perhaps the biggest advantage of Gravity Forms.

Not only can Gravity Forms help your clients capture leads, but it can also help them with their employee workflow. You can use forms whenever there’s some data to be collected.

Writing on how to create workflow management systems for your clients with Gravity Forms is definitely on my to-do list.

Imsanity

Snippet of Imsanity
Snippet of Imsanity

Imsanity is the kind of plugin you wish was included in core. It doesn’t do state-of-the-art compression, but it does its job really well.

With this plugin, uploaded images will be automatically resized so they don’t exceed configured dimensions. This way, the high-resolution images that your clients upload won’t take up megabytes of space.

I like to configure max. height and max. width to be around 2048 to 2400 pixels, depending if the site layout is boxed or full-width.

You can also adjust the JPG compression quality (the default in WP is 82) and convert BMP images to JPG.

If you’re looking for high-performance optimization, you can add more tools. If you’re on Cloudways, you can read more on how to install an image optimizer.

If you have a lot of images to optimize, use a third-party service instead, as the optimization process is a resource-intense activity.

Kint PHP Debugger

Snippet of Kint PHP Debugger
Snippet of Kint PHP Debugger

When you’re doing development work, Kint PHP Debugger will help you quickly debug your PHP code. However, I only activate this plugin on local or testing environments.

With this plugin, you can display any variable data with the d() and ddd() functions inside your code.

The first function will show the data and keep the code running. The second one will also show the data, but will die() afterwards.

I like to use d() when I’m debugging variable data at various states and ddd() when I’m focusing on some data and need to halt execution.

You can use these functions anywhere, even in the code of other plugins. Just make sure to restore the original files after you finish debugging.

Query Monitor

Snippet of Query Monitor
Snippet of Query Monitor

Query Monitor helps me further debug the website I’m building.

On production environments, I keep this plugin deactivated. But, during development and testing, I use this plugin to inspect queries and requests made on the page.

This plugin is one of those tools that every WP developer should have within reach.

Regenerate Thumbnails

Snippet of Regenerate Thumbnails
Snippet of Regenerate Thumbnails

Regenerate Thumbnails does what its name suggests. It regenerates all the images for all the configured dimensions.

When I change the thumbnail, medium, and large sizes during development, I go and regenerate thumbnails on the fly.

Before launching the site, I also like to delete all the generated thumbnails and regenerate them from scratch. This way I am sure that there are no orphaned images left over from past settings.

Schema Pro

Snippet of Schema Pro
Snippet of Schema Pro

I keep Schema Pro activated because you never know when you might need to add a rich snippet to a page. SEO is pervasive nowadays.

This plugin supports many schema types that your client might want to use in order to optimize their results in search engines.

Screenshot of the Schema Types on Schema Pro's site
Screenshot of the Schema Types on Schema Pro’s site

This is the technical SEO feature that will help your website differentiate from the other websites.

You can also enable Breadcrumb schema and Sitelinks Search Box. This will add the needed LD+JSON script to all pages of your website.

The plugin has multiple pricing options, so it’ll be up to you to decide. You can either pay US$79 per year (for unlimited sites) or US$249 once for life.

SearchWP

Snippet of SearchWP
Snippet of SearchWP

The search feature in WP core stinks. That’s why I install SearchWP on all small to medium websites I work on.

For larger websites with tens of thousands of posts or even hundreds of thousands, you might be better off with a third-party service, such as Algolia, or a server with ElasticSearch.

With SearchWP, you will be able to modify the default search engine within WordPress and add supplemental search engines for other parts of your website.

You can add as many post types as you want to the search engine. Add attributes, e.g. if you wish to include comments or custom fields, and adjust each attribute’s weight. Now that’s a search engine.

What I like most about SearchWP is its keyword stemming feature.

Keyword stemming is much more advanced than chopping words into arbitrary chunks that match either the beginning or the end of a word. Stemming is an active process based on the language of the term itself. Terms are checked for a suffix (e.g. “ing”, “ed”, etc.) and the base of the word is determined and used as a proper stem.

SearchWP.com

No more stinky searches, but there’s a cost: US$299 per year (for unlimited sites).

Screenshot of the pricing page on SearchWP's site
Screenshot of the pricing page on SearchWP’s site

Renewals are discounted at 20%, so that’s not too bad.

User Role Editor

Snippet of User Role Editor
Snippet of User Role Editor

As previously mentioned, keeping distinct user roles is key to a user-friendly back-end. User Role Editor allows me to fine-tune the capabilities of each user role.

I can also add new roles and new capabilities. Having granular control over users’ permissions is essential when building systems for clients.

With this plugin, I like to create an artificial admin role for my clients, with just the right amount of capabilities.

White Label CMS

Snippet of White Label CMS
Snippet of White Label CMS

With White Label CMS, you will be able to customize the login page, the admin dashboard, the admin bar, and other parts of the back-end.

It will help you to completely white label the system for your client. There’s nothing better than the feeling of logging into your own system. That’s how your clients should feel when they use their website.

That’s what’s great about open-source; the client is the owner of their website. Therefore, the website should appropriately reflect the client’s image.

I also like to use the built-in admin CSS setting to add my own custom rules for hiding those annoying ads that are sometimes inserted by some plugins.

Widget Disable

Snippet of Widget Disable
Snippet of Widget Disable

I always try to simplify the back-end experience for my clients. Widgets can get confusing, so I disable some of them with Widget Disable.

I only keep widgets that are used by the site and that I know my clients will keep using. Widgets will soon become obsolete and be replaced by blocks, so I try to minimize their use.

WP All Export/Import

Snippet of WP All Import
Snippet of WP All Import

These plugins might not be needed right away, but this bundle is a surely “must have” in your toolkit. You never know when you might need to use WP All Export or WP All Import.

With this duo, you will be able to transport all kinds of content from one site to another. Export what you need and import what’s needed.

Their pricing is a one-time fee, for life. A while ago, they tested yearly subscriptions, but decided to rollback. Lifetime licenses for agencies and freelancers are great deals, so don’t miss out.

I would definitely recommend grabbing these tools if you work with WordPress for a living.

WP Mail SMTP

Snippet of WP Mail SMTP
Snippet of WP Mail SMTP

Never use your Web server to send email. Instead, subscribe to a transactional email provider, such as Mailgun or Sendgrid.

To configure WordPress to send email through such services, you can use WP Mail SMTP. With this plugin, you will be able to enter your email provider’s API keys.

I would recommend using API instead of SMTP. It’s much faster and simpler to execute. After configuring the settings, I use the built-in tool to send a test email.

There are also additional steps needed to increase email deliverability, but I’ll leave them for another talk.

WP Missed Schedule (The Original)

Snippet of WP Missed Schedule
Snippet of WP Missed Schedule

This one is a mystery. There is a known bug in WordPress core that was never fixed and it entails scheduling.

Sometimes, scheduled posts completely miss their schedule and remain unpublished. What?

If your client has a strict publishing schedule, WP Missed Schedule will guarantee that posts get published on time (or within reasonable margins, depending on your Cron job configuration).

I’ve encountered the bug in different occasions, with server-level Cron and WP-Cron, so I don’t take chances anymore and keep this plugin activated.

WP Rocket

Snippet of WP Rocket
Snippet of WP Rocket

If your website is hosted on a Nginx/Apache server with Varnish, WP Rocket will rock your world.

This plugin has everything you need to properly setup a cache system, including integration with Varnish.

You can get a WP Rocket license for unlimited sites at a price of US$249 per year.

Screenshot of the pricing on WP Rocket's site
Screenshot of the pricing on WP Rocket’s site

For clients, it is important for the cache to be properly purged when requested. That’s why I like plugins that integrate well on the server level.

What’s more important, is for the cache to be served by server software and not by the application (PHP). That’s why I go for the WP Rocket + Varnish combo.

If you don’t have Varnish, you can use Nginx’s cache, but you’ll have to roll up your sleeves and configure Nginx. You won’t have to start from scratch, as there’s a configuration template available: Rocket-Nginx.

Rocket-Nginx is a Nginx configuration for the WordPress cache plugin WP-Rocket. It enables Nginx to serve directly previously cached files without calling WordPress or any PHP.

– Maxime Jobin, creator of Rocket-Nginx

By using such configuration, the requests will be directly served by Nginx from the WP-Rocket cache (if available and not purged), completely bypassing PHP. Now that’s good caching.

Litespeed Cache

Snippet of LiteSpeed Cache - WordPress plugin
Snippet of LiteSpeed Cache – WordPress plugin

On the other hand, if your website is hosted on a LiteSpeed Web server, then please get LiteSpeed Cache and install the LiteSpeed Cache WordPress plugin.

If I had to choose between Nginx or LiteSpeed, I would choose the latter. LiteSpeed is a commercial product and from my experience has been more stable and performant than Nginx.

A recent benchmarking test clearly demonstrated the winner. However, LiteSpeed can get expensive, so if you’re hosting a small website with a low budget, then you might be better off with Nginx/Apache.

WP-Sweep

Snippet of WP-Sweep
Snippet of WP-Sweep

WP-Sweep is a tool that I use to clean up garbage collected by the database. This plugin cleans up basic stuff, like orphaned post meta and other data safe to delete.

I usually sweep at least once before launching the website, mostly to clean up revisions.

For a full clean dive, I would recommend to manually go over the MySQL tables. But, if you’re looking for a quick clean-up job, WP-Sweep is there for you.

Don’t forget to backup your database before doing anything with it.

Yoast SEO

Snippet of Yoast SEO
Snippet of Yoast SEO

Yoast SEO might be the most popular plugin out there. With 5+ million active installations, this plugin is Godzilla.

Clearly, I use this plugin on all the websites I build. What site doesn’t need SEO? With Yoast SEO, you can set up most of the technical parameters needed to optimize your website for search engines.

There are features that I like to disable, notably the analysis ones. They can be confusing to clients and you wouldn’t want to get a phone call out of the blue from a confused client.

Hey! I just noticed my content is not optimized! What the hell man, I thought the website was SEO’d.

– Some confused client

If you want to help your clients with SEO, then you’ll need to establish content strategy, but that’s a whole different project. Then, you can include analysis tools and align them with the strategy.

Hide SEO Bloat

Snippet of Hide SEO Bloat
Snippet of Hide SEO Bloat

The biggest disadvantage of Yoast SEO would be their blatant and bloated advertising in the WP back-end. It totally destroys the experience for my clients when administering the site.

Still, kudos to Yoast, they make bank and make the plugin better, so everybody wins.

Besides, the open-source world is wonderful for such things. Don’t like it? Fork it or extend it. Hence, Hide SEO Bloat.

I keep this plugin close and always activated with Yoast SEO.

Conclusion

If you would ask me what my favourite plugin is, it would be no doubt Beaver Builder (and Beaver Themer).

Some of you are probably going to say that they’re not a “must have”, but I’ve used this word in the context of my own work. I don’t build websites without Beaver Builder, sorry.

If your client requires a more complex website, you have Custom Post Type UI and Advanced Custom Fields. With this combination, there is almost nothing that you can’t do.

WordPress has a powerful ecosystem and that is why most websites are powered by it. Take advantage of all the incredible plugins out there, but watch out for the duds.

I will write an article soon on how to quickly check if a plugin is good or not. Be notified via my Slack workspace.

If you have any feedback concerning any of the plugins mentioned here, leave me a message on Slack with your comments. I would love to hear from you and incorporate your feedback to this list.