Author: prospeedguy@gmail.com

  • Improve WordPress Security

    There are some simple tweaks you can do to prevent some popular infections.

    1. Disable PHP execution in /uploads/ and /cache/ folders

    You can easily add a few lines of code into your Apache or Nginx configuration which will prevent PHP usage inside /upload/ and /cache/ folders. In many scenarios, this can render the initial backdoor or dropper useless as it can’t be executed even if arbitrary file upload was successful.

    Nginx:

    # Deny access to PHP files in any /uploads/ or /cache/ directories
     location ~ /uploads/(.+)\.php$ { access_log off; log_not_found off; deny all; }
     location ~ /cache/(.+)\.php$ { access_log off; log_not_found off; deny all; }
    Apache:
    Create a .htaccess file to /upload/ and /cache/ folder and write following inside both of the files:
    # Kill PHP Execution
    <Files ~ "\.ph(?:p[345]?|t|tml)$">
    deny from all
    </Files>

    2. Disable file editing from Admin Panel

    It’s a good idea to disable file editing options directly from the WordPress Admin Panel. You can add the following code into your wp-config.php file:

    ## Disable Editing in Dashboard
     define('DISALLOW_FILE_EDIT', true);

    3. Hide default Admin Panel

    WordPress sites are constantly brute-forced by botnets and hacking scripts. The main reasons for this is the vast amount of sites with known admin panel location /wp-admin/ and the fact that many site owners will use default Admin or Administrator username and a weak password. It’s an easy way to gain access to thousands of WordPress sites and infect them with desired malware, install backdoors, send e-mail spam and redirect traffic.

    It can be tricky to change the /wp-admin/ location manually in a way that it works properly. Use a third party plugin instead, such as WPS Hide login.

    4. Web Application Firewall, Up-time Monitoring, Vulnerabilities

    It’s good to have a managed web application firewall which is always updated with the latest security risks and exploits that follow outdated and vulnerable WordPress plugins, themes and core versions. Firewall today is as essential for websites as anti-virus software for computers and having a full overview of what’s going on on your site is a must-have.

    There are different WordPress plugins like WordFence, iThemes Security and All In One WP Security which allow you to set up hardening options to your site automatically, without having to add scripts to different files manually (as above).

    If you want to have confidence and don’t want to go over the WordPress hardening or even worse, a malware removal process, get us, We offer Free migration from other (WordPress) maintenance services or hosts. No fixed contracts, cancel anytime, starting at $ 20/month.

    5. Use secure hosting and keep software up to date

    Your hosting environment has to be updated (check if PHP 7.4 is supported), well configured and secure. If you save money by choosing a cheap, untrusted hosting provider then it’s a matter of time when issues arise. You can secure your application with highest grade security solutions, but when your host is hacked, none of the implemented security on your application matters.

    Discover our top rated hosting for fast & reliable (WordPress) websites. Sites are hosted on secured servers. Get up to 200% the speed compared with HDD hosting. 100% Uptime Guarantee for your websites or applications. We can help you launch, enhance or migrate your hosting according to your needs. 24x7x365 we monitor your (virtual) server or website. Our advice is straightforward and free, and we can’t wait to help.

    If you have any question or need help, feel free to contact us.

    Stay safe!

  • Improve WordPress backend Speed (wp-admin)

    10 proper ways to mitigate your slow WP-admin backend.

    If you’re frustrated with a slow backend taking forever to click from one page to the next, trust me I hear you. Frontend pages are so much easier to cache but the backend is not.

    Does that mean you’re forever cursed with miserable backend load times, and admin functions that take forever?

    NO!…ok, maybe…but I’ll help you make the best of your options.

    The CAUSE of slow backends

    Backends are slow because they’re completely dynamic.

    And by “dynamic”, I mean that they have to query the database for every page request. The database is called up and every bit of information is requested from scratch as if its never seen it before. There’s zero caching applied.

    It also doesn’t help that the backend sometimes shows more info. What users, what content, what comments, how many sales, etc. It often calculates info that isn’t even being shown. There’s also the heartbeat API running constantly in the background to auto-save your edits.

    Databases can also get slower as they grow in size. Just like how finding things in your house becomes harder when you have more things. Databases take longer when you start looking for very complicated data that’s buried or organized in complex and/or inefficient ways.

    Knowing this…let’s see how we can optimize these dynamic backend requests to speed up your WP-admin experience.

    1. Audit your plugins

    Anytime someone comes to me for help with a slow backend, they are immediately “guilty until proven innocent” to me.

    Check all your plugins and see which ones are contributing to this god awful slow-ass backend load.

    “But how?!”

    Like this…

    1. Deactivate some non-essential ones to see if it runs faster. Then deactivate some more. Keep going until you get to the point of having no plugins activated. I’m sure you’ll have an idea which ones it is by now.
    2. You should also check your theme. With all your usual plugins activated, try switch themes to the default theme for a second. Did it help?

    Hahaha, I’m kidding…ignore those first 2 steps (don’t wreck your live site) and do it like a pro. Install Query Monitor and then surf some pages from frontend while studying the diagnostic panel at the bottom of your browser. There’s only two things you need to check—Slow Queries, and Queries by Component. Those two alone will tell you which themes, plugins, or queries are causing the biggest delays. You should also take note of the memory use (on your top admin bar) and how many queries each plugin makes.

    Once you find out what’s causing it…you ought to replace them!

    • Slow slider plugin? – get a new slider plugin!
    • Slow theme? – get another theme!

    Some of you are going to have attachment pains letting go of your precious plugins…but I promise you this…whatever bullshit crap-code plugin you have lagging your backend, there’s a good chance a higher quality developer-grade one exists and without any the slow query nightmares.

    2. Check for errors

    • Error.log – find it in your public_html directory and look inside. Do you see lots of errors?
    • Console errors – open up developer tools and see if there’s any obvious 404 requests.

    It’s usually not so much the errors that are causing the problem, but the plugins related to those errors that are.

    3. Check for high memory use

    Three things you need to know:

    1. How much memory your entire site uses. (Try WP Server Health Stats)
    2. How much memory your theme and plugins use. (From Query Monitor)
    3. How much memory your autoloads use.

    From here, we have a couple tactics.

    Of course, you can try increasing your site memory limits. Add the following lines below to your wp-config.php file above the line that says “That’s all, stop editing! Happy blogging.”:

    define( 'WP_MEMORY_LIMIT', '256M' );
    define( 'WP_MAX_MEMORY_LIMIT', '256M' );

    The first one increases memory use for the frontend, the second one increases for the backend. For most well-built sites, you don’t need either. You can even raise the 2nd one to 512mb or even higher but here’s the thing…that limit is still restricted by the server’s global PHP memory limit. If you have your own VPS server, you can set as high as you want. If you’re on a crappy shared host, it’s probably very limited and trying to set it higher won’t do anything.

    If it needs to be said, you should get rid of plugins that are eating up so much memory. And please don’t forget to check your autoloads. Quite often, there are many old themes or plugins you don’t have any more that are still eating up your memory! They sit around in the database loading their indexes even when there’s no plugin using them!

    4. Upgrade your web-hosting (or web-server)

    Did you replace all your bloated plugins?!

    • NO?!
    • WHY NO? Because you wanted to save money?

    Well today, you get to spend that money you saved on better hosting. Sorry buddy, you have to pay for a quality experience!

    Ok, let’s be fair…maybe some of you did replace your plugins. Or you saw that your plugins weren’t the problem!

    The answer is the same…the easiest hassle-free way from this point is to get a better webhost or stronger web-server. Keep in mind, I didn’t say go get a MORE EXPENSIVE webhost. No!

    Whatever tier of webhosting you’re in (shared hosting, VPS, etc), I guarantee there’s probably another one that’s better and not that far away in price.

    But be careful..this simple bailout button doesn’t work like you think. The new server you get can’t just be more expensive or bigger, it actually has to give your site more resources! Just because you’re going with a bigger or stronger server doesn’t mean your site automatically gets access to more CPU and MEMORY. I’ve seen many people upgrade and pay double and still not get better performance.

    What should a good server have?

    Hard to say because any specs or stats I give you could be easily lied about through false marketing (just like how you got into your current predicament). The easiest way is to feel if it’s fast or not.

    But if you insist, it’s good to know if they have the latest PHP and MySQL. Fast hard drives with good disk I/O rates. And aggressive settings. Also good to have decent PHP memory limits.

    5. Decrease heartbeat API interval

    This is low-hanging fruit and can get some mild results without much effort. There are some specialized plugins that do this, like Heartbeat Control…but it’s much better if you could use it from your caching plugin (like Swift, Rocket, LiteSpeed).

    My recommendations below:

    • You can (probably) safely disable heartbeat on all pages frontend and backend except for the post editor.
    • Don’t disable it from the post editor because the Heartbeat is used there to do auto-saves.
    • If you have many writers logging in and working at the same time, fine you can lengthen the Heartbeat interval for the post editor, but still do not disable it!
    • Click here to learn more about WordPress Heartbeat API.

    6. Object caching

    I’m sure you’ve heard of buzzwords like “Memcache” and “Redis” before. Redis (being the better and standard one nowadays) is a server module that allows you to cache your database queries. It’s very fast, since it saves that info in memory rather than on the disk (like typical page caching).

    There are many caveats and variables to think about…I’ll leave general recommendations below and you can research the rest if curious:

    • Object caching needs lots of memory. Therefore, it’s usually only allowed with VPS plans and almost never on shared hosting. Even if your shared hosting does allow object caching, it’s probably neutered.
    • A good object cache expiry time is anywhere from 5-60 minutes. Too short and the cache expires before you get to benefit from it. Too long and your dynamic content is outdated until the object cache expires (but maybe that’s ok with you).
    • Object caching acts like page caching but with shorter cache “benefit” times. The first few hits are slow, subsequent hits are fast until the cache expires (and needs to be rebuilt).
    • Object caching helps if you work around in the backend a lot. If you’re only in and out a couple minutes each day, you’re probably faster without object caching.

    It case you’re wondering, it’s called object caching because it caches the database queries (aka “database objects”)…which allows you to retain most of your dynamic functionality but benefitting from faster speeds (since some queries are already built and don’t have to be looked up on each click).

    7. Caching admin-areas and logged-in users.

    Alright, this is flat out desperation mode here. It’s mostly a bad idea but can work in some situations. Here’s when it does and doesn’t help:

    HELPS if…

    • You have many logged-in users.
    • Your logged in users see mostly static content.

    DOESN’T HELP if…

    • You don’t have many logged-in users.
    • All of your backend is completely reliant on live dynamic data.

    If you really think about it, caching only helps you load repeated content faster. If you don’t have any static backend content or enough users to benefit from it, then caching the admin area isn’t gonna be much use IMO. If anything, it’ll make your site even slower! (Slower because your server resources are now wasted for building and purging cache that isn’t even used.)

    HOW to cache the backend?

    Enable the following features in your cache plugin:

    • Cache admin area – should be easy enough.
    • Cache for logged-in users – you may have to decide which areas are public vs private. Public means all users see the same content. Private means all users see different content (like their “Account” pages).
    • ESI cache – can play with this hole-punching technology but I warn you that it’s not for DIY people. You need a developer to do this right. If you use LiteSpeed server and caching, the easiest way to use ESI is if your content is deployed via shortcodes or in a widget.

    8. Check your security plugin

    Do you have Wordfence or Sucuri? Well, you don’t have to get rid of them but do know that they slow down the backend a lot. Since they check every page load for hack executions and what not.

    Sure, you might have seen guides telling you to slow down the scanning…but really, it won’t matter much. It’s because of those security plugins logging every page load, and checking for potentially bad code executions.

    9. Prevent unnecessary plugin load on backend

    Welcome to the “joy” of asset load management. Here, we disable all unnecessary CSS/JS calls from the backend.

    I take back what I said about the previous step. There IS a step even more desperate than the previous. I used to try and optimize to this degree but I realized it’s stupid. Your life is more valuable than wasting time doing this. There is no point whatsoever…this is like cleaning the bottom of your shoes the night before you go mud-running the next day.

    You should have NEVER had to do this.

    • You should had a quality theme.
    • With quality plugins.
    • On a good web server.
    • And with your autoloads cleaned up of any cruft left from old themes/plugins.

    If you’re here trying to time-travel your life away switching CSS/JS assets on and off…it’s because you were being stubborn about a previous step. I urge you to go back and do everything else. You’ll end up doing so much more work here than you would just replacing your themes/plugins. AND you might inadvertently break your site or affect future operations and forget that you disabled something.

    Still want to go forward with this? *Sigh* Ok, you win. Recommendations below:

    • I prefer Asset CleanUp: Page Speed Booster over all the other asset loaders or plugin organizer plugins out there.
    • Perfmatters can be nice as well.
    • WP Gonzalez and Plugin Load Filter are also ok as well.
    • The rest are either 1) too complicated and poor UI to use, or 2) they add their own load which negates the load they’ve removed!
    • Don’t try to remove every single asset from every plugin. Focus on the major bloated plugins!

    The only pro way to remove unnecessary asset loads from plugins:

    Fork the plugin and hack it.

    10. Resist the dumb ideas

    I’ve heard clients scheming up many silly tactics from time to time. They’ll read random words on the internet and think it applies. Happy to dispel them for you below:

    • Getting better cache plugin – sorry, no. Cache plugins are generally designed for frontend use.
    • Installing performance plugins – I’ve seen all the dumb booster plugins for WooCommerce, pagebuilders, and what not. At best, they just hog up more memory via autoloads making their intended plugin run faster while the rest of your site slows down.
    • Increasing memory limits – this only allows your slow site to run instead of erroring out. It doesn’t make your site reduce it’s [wasteful] memory use.
    • Cloudflare caching your admin – DUMB! NO! *slaps your hand away*
    • Static site – no, static sites are only for frontend.
    • Load balancing, or cluster setup – if your site is too bloated to load on one server, adding another proxy isn’t gonna help or redistribute the load in any way. It’s like trying to bake a cake using 2 kitchens instead of one. Load balancing is for high traffic load, not slow code load.
    • Remote database – lol, no! Your slow database runs even slower now since it’s not in the same server.
    • Asset organization (step #7 above) – because even if you chop out the assets, you’re still not chopping out the queries. And keep in mind that asset management mostly only helps frontend users as backend users don’t even use those assets to load.
    • Tuning MySQL configurations – I highly doubt this is your issue.

    Some speed optimization really isn’t for non-developers to do. Even if you don’t break your site, you might only improve your slow speed by 10% (if not make it worse). I recommend you hire a developer if you’ve gotten this far.

  • Clean up wp_options table (autoloaded data)

    My favorite commands for cleaning up autoloaded data from your wp_options table.

    Why should you remove autoloaded data? It’s because this type of data is loaded on every page load and often contains data that is no longer used (left behind by already deleted themes/plugins) or left behind because WP-cron wasn’t working and some plugins didn’t clean up after themselves.

    Get into your phpmyadmin tool from webhosting control panel (cPanel, Plesk, etc) and follow the commands below!

    How much difference can autoloads make?

    HUGE! Freaken huge! I’ve seen awful bloated sites with many MB of autoloaded data. Cleared it all and the whole site felt so much lighter, both on frontend and backend. Keep in mind y’all, the backend can’t be cached. Cleaning autoloads definitely has a measureable impact on massively bloated sites and one of the advanced tasks that separates pros from non-pros.

    NOTES:

    • Backup your database before trying any of these optimizations.
    • If your database has a prefix (e.g. “wp_123abc_” instead of only “wp_”), then retype SQL commands below using the prefix “wp_123abc_options” instead of “wp_option”.

    1. Check autoloaded data size

    SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';

    This one shows you how big the autoloaded table is. Anything above 1MB really badly needs to be cleaned up; I’ve seen sites with even 40MB (no wonder they crashed!). I try to stay below 500kb if possible (although even 1MB is considered OK). If you have 500kb or less, you can stop here!

    2. List top autoloaded data entries

    SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 200;

    This will list the top 30 autoloaded data entries in the table. Delete the ones you know aren’t being used anymore. You can also increase the DESC LIMIT 200 to a higher number like 300 or 500 if you want to see more items. Usually the first 10-50 items make up the bulk of your autoloaded data anyway. And it’s usually only a few plugins that are creating most of the bloat. (Although some really old sites may have tons of stuff left over from deleted themes and plugins.)

    3. Find specific autoloaded data

    SELECT * 
    FROM `wp_options` 
    WHERE `autoload` = 'yes'
    AND `option_name` LIKE '%jetpack%'

    This command is useful for targeting specific plugins that you KNOW for certain you aren’t using any longer. This is great for cleaning up remnants left from old themes and plugins. Simply replace the string “jetpack” with anything else you like. You’ll also notice that many plugins don’t use their full name. For example, items related to “Full Velocity Minify” plugin might be listed with the string “fvm” in the database.

    4. Tracking down mystery autoloads

    Did you see some giant autoloads but you’re not sure whether or not you can delete it? Don’t you worry, I have a few handy tricks up my sleeve:

    • Click on edit and look at the data inside. Sometimes they give you a clue what it’s used for.
    • Search the option name in Google in quotations. It might also help if you type the word “WordPress” or “plugin” or “theme” before it.
    • You can also try using step #3 above, but search only the first prefix of the option name. For example, if the full name is “wds_service_results” then you can do step #3 but replace “jetpack” with “wds_”. Sometimes, you’ll find the other option names with more helpful data to track down which plugin it is.
    • Last but not least, you can simply change the autoload value to “no”. (Then change it back if anything breaks, or delete after a month if all is well.)

    Johnny’s personal autoload removal list

    A list of the biggest autoload offenders that I often run into. If you see any autoloads you aren’t familiar with. Google around to see what they might be related to. Perhaps an old theme or plugin you haven’t used in a while. (Obviously, you should not delete any autoloads for active plugins!)

    Plugins with high autoloads

    • BackupBuddy
    • Mobi by Phpbits
    • Revolution Slider (of course!)
    • Thrive Architect/Leads
    • cherry_customiser_fonts_google – probably came from some Google fonts plugin
    • transients – some people don’t realize they have 40mb of transients sitting there! (YIKES!)
    • SchemaPro
    • BeRocket
    • Jetpack
    • WPMU DEV (and their many plugins)
    • Pegasus Accelerator WP
    • Redirect plugins
    • Redux framework (any theme using this)
    • Security Ninja

    There’s hundreds more plugins with awful autoload…find them all! (Feel free to report in the comments and I’ll add them here.)

    Themes with high autoloads

    • Martify
  • Why Google Pagespeed, Pingdom, and GTmetrix scores don’t matter

    PSA for all future clients!

    Stop listening to those silly page speed scores and tests (if you don’t know what you’re doing)!!!

    I wrote this guide to avoid reiterating myself over and over with naive clients. Hopefully, it also helps other developers/admins arguing with newbie clients over speed optimization. (It’s akin to people arguing with their doctor because of something they read on WebMD.)

    Here is the definitive explanation why you need to stop being paranoid because of page scores. (And also stop arguing with developers and sys-admins who know more than you!

    page scores don’t matter!
    page timings are most important! (TTFB & PAINT TIMES)
    critical items at front of waterfall matter!
    3rd-party items at end of waterfall don’t matter!

    1. You don’t know how to read a speed test.

    I’m willing to bet most people freaking out about speed scores aren’t even professional web-developers or programmers. There’s a reason why expensive tools and instruments in hospitals are only intended to be used by certified doctors. It’s because they know what they’re doing. They know which metrics to pay attention to and which ones to ignore. Why don’t they let some random person look at it? Because that random person wouldn’t know anything about how it works, what it’s measuring, and whether each result is bad or good. They’d simply panic and over-react to every visual/audio cue given out by the instrument!

    Simple questions to know if you’re qualified to read a speed test:

    • Do you know what TTFB is?
    • Do you know what first paint is?
    • Do you know which items are most important on the waterfall?
    • How can you tell if CDN is helping or hurting your asset loads?
    • What is HTTP/2, and what is its benefit?
    • What determines if your images are compressed enough?
    • Why should you ignore 3rd-party requests?
    • How far should the speed test server be from your web server?

    If you don’t understand any of this, you my friend are absolutely NOT qualified to read a speed test…and definitely not qualified to argue with your developer or speed consultant on which things should be optimized.

    2. Speed tests encourage OPTIMIZING FOR SPEED SCORES rather than for USERS.

    The #1 death trap of speed tests.

    It’s that you end up optimizing your site for speed tests rather than for actual users. What a terrible choice to make! It’s the equivalent of writing content for SEO rather than writing content for humans. You would imagine it’s logically harmonious to appease both but it isn’t always the case in reality. Same goes for speed tests and user experience. What is “fast and useful” for a speed test crawler may not particularly be “fast and useful” for an actual human visitor.

    This comes down to the simple fact that optimizing for users means delivering an INTENDED USER EXPERIENCE in the fastest load time possible. Whereas optimizing for speed tests means delivering as FEW ASSETS AS POSSIBLE in the fastest load time possible. This is why it gets so tricky. Creating a specific user experience requires loading many specific assets and in a specific load order. But the automated speed tests don’t know this, so they just simply recommend for you to chop out as many bytes and as many requests as possible. They don’t know (or can’t account for) the ones that you really need, or the ones that directly affect your user experience.

    This is why speed consultants reiterate time and time again that you should be OPTIMIZING FOR USERS, and not for speed scores!

    Simple question to know whether you value speed scores too highly: 

    • Which do you prefer? Fast page-load and terrible page score OR slow page-load but great page score?
    • Does it bother you if your competitor’s website loads slower than yours but has a higher page score?
    • Do you really think it’s important to have 100/100 A+ page score?
    • Do you really think having a high page score means your site is fast?

    Believe it or not, there is very little correlation between high page score and page load time. Feel free to look up many popular websites out there and see for yourself.

    3. Speed tests don’t account for specific website NEEDS.

    Every site is different from another

    Let’s say one car leaves the house carrying 50lbs of gear and another car leaves the house carrying 500lbs of gear. Is the second car really carrying too much weight? We don’t know! What if the first car was only going to the neighbors house and the second car is going camping? You see what I mean?

    What if the test says your site images are too heavy compared to another site? Is that good or bad? Well, it depends! If your site is an ecommerce store or photography portfolio, you probably want bigger and higher-quality images! If your site is a simple text blog, then perhaps you’ll want smaller images.

    You can’t have some silly automated tool judging these things when it doesn’t have any perspective on what your site is doing and how it’s different from other sites. It judges all sites to some (arbitrary) standard without accounting for each one’s specific needs. The idea is this…what may be “bad” for one site may actually be “good” or “intended” for another.

    Examples of common speed test suggestions (and why they’re flawed):

    • Combine CSS/JS to reduce requests – might actually slow down your page load and/or break your website design/function!
    • Compress images more to save space – reduces your image quality and not recommended for sites that need high quality images!
    • Lazy load images to speed up page load – can hurt ecommerce UX by hindering your visitor’s ability to fast-scroll! It needs to be said that DELAYED LOAD is slower than NORMAL LOAD!
    • Slow total load time – that shouldn’t matter as users don’t need everything to load immediately, they only need the critical items or items near the top of the page!

    4. Speed tests can’t tell you what affects your speed the most.

    Speed tests often make a big deal out of things that don’t affect speed.

    They simply give you a giant (and seemingly) comprehensive list of checklists and TO-DO’s. But they don’t tell you why those things matter. Many of the things being measured don’t actually affect your speed. They’re just random optimizations that may (or may not) improve user experience…how confusing!

    Why are speed tests unable to tell you what’s important?

    It’s because they’re completely automated and can’t judge things the way a human can (at least not yet). They don’t weigh metrics depending on the site. They don’t understand that image-related optimizations should have more weight on image-heavy sites. And that CSS-related optimizations should have more weight on CSS-heavy sites. They can’t account for this, so they weigh those metrics the same for every site.

    • CSS being 500KB overweight vs images being 5KB overweight still minuses the same amount of points.
    • 10 images being 1KB overweight each lowers your score more than your CSS having 30KB of empty spaces.

    See what I mean? The tests are flawed! I haven’t explained every possible scenario where it does this and I’m not going to. I hope you save us both the time (and just trust me).

    Speed tests don’t account for when (general) rules should be broken

    For example, the stupid complaint about items not being browser-cached or having too short of an expiry times. YES! Some of those items are SUPPOSED to be like that. Some items are SUPPOSED to be uncacheable and have short expiry times to keep certain content always updated.

    Render-blocking CSS – I’m gonna flip a car next time I see this complaint. CSS SHOULD be render-blocking. Do you guys know what happens when you don’t render-block with CSS?…you get FOUT/FOUC issues! Trust me. It’s on purpose!

    5. Speed tests are flawed.

    Yes, they are flawed and many users don’t even know! They make newbie users feel bad about things they can’t or shouldn’t change. I’ll list some examples below:

    Outdated recommendations

    Speed tests are still not properly accounting for modern day web-server technologies. I still see many recommendations that were faster with older web-server technology but actually slower with today’s web-server technology. Things like recommending GZIP when Brotli is being used (FYI: brotli is better than gzip), or recommending to reduce HTTP requests when HTTP/2 protocol allows for parallel requests!

    Penalizing for 3rd-party requests

    I absolutely hate when speed tests point out the slow load time, lack of cache expiry, or encoding for some externally-loaded request. These items are loaded from ANOTHER SERVER, from which you have no control. It ain’t your fault and speed tests should have a way of letting you know this. And just FYI, some externally loaded requests are not cached or otherwise “optimized” for a reason!

    6. Almost all speed tests fail THE EYE TEST!

    What is the eye test? It’s basically testing the site for yourself with your own eyes. If the site visually loads fast, you are fine! No need to worry about the “total load time” because those things loading in the background aren’t actually affecting your user experience. BOOM! Drop the mic!

    The EYE TEST should be the very first page speed test you ever run. And then the next one should be using your browser’s developer tools function to see how fast everything loads in your actual browser. This is as close to real world times as you can get!

    Tell me which site would you prefer to have…one that fully loads in 3 seconds…or one that fully loads in 6 seconds? (answer this before moving on)

    • What if I told you the 3-second site is completely blank and doesn’t render until the 2.8sec mark, whereas the 6-second site appears instantly and then silently loads the less important stuff in the background?
    • In case it isn’t obvious, I would pick the 6-second site every day of the week. And so too would all the big Fortune 500 companies…in fact, many of them take several seconds to fully load (despite visually-appearing almost immediately)!

    This is the kind of shit I’m talking about. Many speed tests don’t account for this. And even when they do list important metrics like initial rendering times, naive users don’t know to look at that! All they care about is that stupid TOTAL LOAD TIME number (sometimes accompanied by some scary warning message).

    7. Addressing common myths and rebuttals.

    As always the case, clients come up with logical assumptions and questions:

    “Having a fast loading site or high speed score is important for SEO.”

    Not really. Unless your site is super duper slow, that saying is pretty much false; it’s not even a myth. You can verify it for yourself by researching the top 10 results for random keywords. It’s not uncommon to find top results taking 3-5 seconds to load (according to page speed tests).

    With that said, having a fast website can improve user engagement and conversions and I do believe that helps SEO rankings somewhat. Regardless, speed is great for conversions!

    “You cannot have a good/fast site without scoring an A on page scores!”

    Says who? Try looking up many of the most popular sites you know and see what they score for yourself. Heck, try even Google’s web pages against their own GPI tool.

    “If speed scores don’t matter, why do they exist?”

    They exist as a helpful checklist for those that know how to read them. Some things matter, and some things don’t.

    “Why is my competitor’s website faster and scores higher than mine?”

    That could be due to many reasons. Many they have a faster webserver, or more efficient coding, or fewer plugins, or fewer assets loading, or fewer 3rd-party assets loading. Just because you installed a cache plugin or hired a speed optimization expert doesn’t guarantee your site will be better than your competitors.

    “But the other day, I installed some other plugin or worked with another person who improved my site score to 100/100.”

    Suit yourself. Yes, it’s possible to get 100/100 if you don’t care about anything other than the score, but you might inadvertently slow your page load or hinder your user experience in doing so. At the end of the day, those page score recommendations are simply RECOMMENDATIONS…they are not empiric instructions to follow for every scenario.

    “I DON’T CARE WHAT YOU SAY! Make my site fast and with A+ 100/100 score!”

    Sure. Just delete all your plugins, use a simple theme. Don’t have more than 10 images. Don’t use Google Analytics or Google webfonts.

    “But those speed tests are so scary! How do I know which things to fix and how to fix them?”

    It might help to take your time reading and learning how each one works. Maybe work as a web developer for a few years. Or you could hire someone with more experience than you.

    Still want to optimize all by yourself?

  • How to optimize for Google Pagespeed, Pingdom, and GTmetrix

    Learn how to optimize your website for the popular page speed tests!

    • Do you want the fastest site possible?
    • Do you want the best website functionality and SEO?
    • Are you overwhelmed and don’t know what you’re doing?

    Read on as I go over the most common speed test recommendations and tell you which ones to optimize and how to do it!

    Want to skip ahead?

    The truth about speed scores

    In all honesty…

    There’s nothing wrong with using speed tests. They work fine and are helpful…to professionals. They’re made for professionals and use terminology that professionals understand. It’s when you have naive users/clients trying to make sense of them that all of the sudden they become a problem. The tools measure so many different things and yet don’t fully explain every little thing and why this or why that. It just gives a little warning message and over-simplified suggestion to correct.

    But generally, I disagree with many of their recommendations and the way the results are laid out. They’re helpful if you know what you’re doing but completely misleading and confusing if you’re a noob. There’s a reason why TONS of experts tell you to ignore page scores!

    I wrote my own guide as well:

    And don’t take my word for it…read from other respected experts:

    Are you educated yet? If so, you may continue.

    Common Google Pagespeed Insights optimizations (and how to read them)

    By far, my least favorite of all the page speed test tools out there. I list it first because it’s the most common and most annoying one that naive clients reference. They think this tool matters the most because it’s made by Google, which also runs the #1 search engine in the world.

    But the reality is, there’s very little correlation between scoring well on this tool and ranking high on Google search engine. Don’t believe me? Try it for yourself…search Google for any random keyword and check then run the Google Pagespeed Insights test for the top 10 results. I randomly searched “speed addiction” just now and got the score for the top result….hahaha, it was 21 out of 100! SEE?! The test is absolute bullsh*t!

    Just so I don’t mince my words: I NEVER use GPI! It’s crap. Doesn’t give me any helpful details or recommendations to look at. And even the information it does give me is either completely unhelpful, or wildly off the mark. You might also notice that GPI doesn’t even let you pick a server location to test from, which means it actually isn’t even measuring concrete times at all. It’s just kinda blind-guessing at what how your website loads and how long it takes. Let me say it again…GPI is at totally useless at best, or confusing/misleading at its worst. Just ignore it!!!

    First contentful paint:

    • Inaccurate! Just ignore and use the eye test.
    • In theory: first contentful paint around 500ms is great, around 1 second is ok, and longer should be optimized.
    • The problem with GPI is that it often way overstates your FCP times as being 5 seconds when browsing it yourself takes more like 1 to 2 seconds.

    Speed Index, Time to Interfactive, First Meaningful Paint, First CPU Idle, Max Potential First Input Delay:

    • Ignore all this crap. They often overstates your actual times.

    Properly size images:

    • Some of the recommendations here are legit and you actually have images that should be optimized better via proper sizing or compression.
    • But some of the images may be intentionally left at higher quality (for better clarify), or larger size (for retina-compatibility).
    • And some of the images don’t even have much to optimize. Should they really be hassling you about a 3KB optimization on a 1MB image? C’mon!

    Defer offscreen images:

    • NO! And I hate that the tool is so opinionated about this. As mentioned before, I HATE LAZY LOADING. Read my guide before you argue with me.
    • I do not recommend lazy loading images for many sites. Why? Because it hurts user experience, delaying content load just so you can get “faster times”. And I will forever hate tools that keep telling me to lazy load.

    Serve images in next-gen formats:

    • Can be a valid point in regards to improve your image compression. But can also be ignored if you know why you’re using specific image formats.
    • I also hate that they’re too eagerly pushing the WebP format which really isn’t that widely adopted yet in all devices, browsers, and image software.

    Eliminate render-blocking resources:

    • I do appreciate the tool trying to point out items that delay rendering, but do you even know WHY some resources SHOULD be render-blocking? It’s so you don’t get FOUT/FOUC issues, which is where your content loads before the CSS stylesheet and so things look ugly before the CSS loads, which then re-renders the page again. Some CSS absolutely should be render-blocking.
    • Render-blocking JS also exists for a reason as well. Some JS is absolutely needed to render visual parts of your site and without loading that JS first, the content spills in an unwanted manner. I’ll put it this way…imagine trying to bring your friend a glass of wine by carrying over the wine first (in your hands) and then the glass. You see, the glass is absolutely needed to control the way the content is delivered. We cannot have content spilling out randomly without its intended rendering effect.

    Efficiently encode images:

    • More image-related optimization suggestions…annoying! Don’t worry about this if your images are properly-sized and compressed!

    Remove unused CSS:

    • HAHAHAHA! Sorry, guys. This isn’t possible for most of you. This is because you use many plugins that have overlapping CSS styles. Perhaps your theme styled buttons a certain way, then you added a shopping plugin which styled buttons differently, and then later added a custom CSS plugin with its own styling that overwrote the previous two. In this case, the button style from the theme and shopping plugin would be considered “unused CSS”.
    • Only 2 ways to get rid of unused CSS. The easier way for most folks is to somehow dequeue unnecessary CSS from themes/plugins. The best (but most technical) way is to custom-code your site so that you have only the exact code needed and no unused stuff. This is why I love having everything hardcoded. Our sites are always super clean and lean with no fluff.

    Reduce server response times (TTFB):

    • Generally, anything around 200ms (0.2sec) is good. I’ve seen GPI complaining about 0.15s TTFB before I’m just gonna ignore it as being stupidly inaccurate.

    Ensure text remains visible during webfont load:

    • No, that’s a stupid idea. That’s exactly how FOUT issues happen. And your text looks ugly for a split second before the font loads and then the page quick re-renders and gives a jarring user experience. NO NO NO!

    Avoid enormous network payloads:

    • Somewhat valid warning suggesting your site should be more lightweight. I halfway agree with GPI’s suggestion here but overall don’t take them seriously whatsoever.
    • It doesn’t really matter how big your pagesize is. I’ve seen some sites with 8MB of data load faster than other sites with only 1MB of data. So while yes, I do agree that sites should always be as light as possible, I don’t agree that their total size correlates well with load times. Why? Because it has to do with processing time and render-weight.
    • Code takes longer to process and render than simple static assets. For this reason, a 2MB site (with 500KB html, 500kb CSS, 500kb JS, and 500kb images) will load slower than a 5MB site (with only 100KB html, 100kb CSS, 100kb JS, and 4.7mb images). But does GPI account for this? Of course not. It simply throws out an automated warning when your site goes above a certain pagesize.
    • The bottom line? Yes, you should try to load only the items you really need but overall, you don’t even need to worry about this if your site is loading fast enough!

    Minimize main-thread work:

    • Ooooh, seemingly helpful metrics about JS rendering times. All these are theoretically important and yes, you should try to load as little JS as possible. Only two ways to do this…either remove some of your bloated plugins or pick ones with lighter code, or recode your JS better (probably not the issue for legit developers).
    • My gripe about GPI’s metric here is that it’s inaccurate. It’s saying one of my client sites takes 14 seconds when in reality, the entire page loads in a few seconds. Sure, there might be some background JS still lingering but they don’t affect page load or function! ARGH!

    Serve static assets with an efficient cache policy:

    • Another one of those canned recommendations that I absolutely hate. YES, static assets (which don’t change often) should generally be cached for a long time.
    • HOWEVER, not all static assets should be cached. Some are related to your site design and functions and shouldn’t be cached so that your users can see the latest version of your site when you make changes!!!
    • Also, some static assets are loading from a 3rd-party server (like Google Analytics, or API scripts, or webfonts) and because they aren’t loading from your site, you have no control over how they are loaded! Do you really think 3rd-party services wouldn’t have cached these assets and reduce their server loads if they didn’t have a reason to leave them uncached???

    Reduce javascript execution time:

    • Really handy JS-diagnostic tool to tell you how long each JS takes to load. The issue is that it overstates the execution times IMO, and also doesn’t tell newbies how to resolve the issue.
    • If you didn’t code these JS yourself, then you only have one choice to optimize this: get rid of them. Yes, this might mean you lose whatever function that it serves. If you still want to have that same function, you either load another theme/plugin that is coded more efficiently or custom-code it yourself.

    Avoid excessive DOM size:

    • Valid metric here.
    • You can either have fewer things on the page or have better coded theme/plugins, or recode the page to be lighter on the DOM.

    Minimize Critical Requests Depth:

    • This basically means your theme and/or plugins are too bloated. And that you have too many things loading and too many things loading other extra things.
    • Pick leaner themes and plugins, and/or custom-code some things yourself. Or just get rid of non-essential visual elements and functions.

    Keep request counts low and transfer sizes small:

    • Honestly, this doesn’t matter as long as you made your site as lightweight as possible. It really doesn’t matter if you have 100-200 requests and some of the file sizes are large.
    • What matters is that your site loads quickly. And if your site isn’t loading quickly, then you can look at this list to see which types of resources you have loading.

    Common GTmetrix recommendations (and how to read them)

    GTmetrix is by far my performance testing tool. It measures a ton of little things, actually gives concrete numbers and nice visual charts, also many tabs and sub-tabs chock full of helpful details for developers to optimize their sites.

    Signing up for a free account allows you to choose from many test locations, and also save 30 days of your past tests for easy comparison over time. If you only have time for one speed tool, use THIS one!

    Serve scaled images:

    • Valid metric. Make sure your images are properly cropped and sized to the dimensions of which they’re displayed. With that said, having an image slightly bigger than the space it’s given is not so bad!
    • However, there are some exceptions where you want over-sized images for retina-compatibility purposes.
    • You can fix this by resizing the images better or having a theme/plugin that correctly resizes the displayed images for you.
    • My issue with this metric is that it too often shows an alarming “F” score when it’s not that big of a deal at all. It many cases, it doesn’t noticeably affect your page load time.

    Serve resources from a consistent URL:

    • Valid metric. Your site should definitely show all resources from the same domain and also in the context of HTTP or HTTPS, with-WWW or without-WWW.
    • EXCEPT this recommendation doesn’t apply when you’re using CDN. Obviously since CDN needs to load from its own URL.

    Leverage browser caching:

    • Another one of those canned recommendations that I absolutely hate. YES, static assets (which don’t change often) should generally be cached for a long time.
    • HOWEVER, not all static assets should be cached. Some are related to your site design and functions and shouldn’t be cached so that your users can see the latest version of your site when you make changes!!!
    • Also, some static assets are loading from a 3rd-party server (like Google Analytics, or API scripts, or webfonts) and because they aren’t loading from your site, you have no control over how they are loaded! Do you really think 3rd-party services wouldn’t have cached these assets and reduce their server loads if they didn’t have a reason to leave them uncached???

    Defer parsing of Javascript:

    • Render-blocking JS exists for a reason. Some JS is absolutely needed to render visual parts of your site and without loading that JS first (aka “critical JS”), the content spills in an unwanted manner. I’ll put it this way…imagine trying to bring your friend a glass of wine by carrying over the wine first (in your hands) and then the glass. You see, the glass is absolutely needed to control the way the content is delivered. We cannot have content spilling out randomly without its intended rendering effect.
    • You can and should optimize this but it’s up to you to know which JS should be deferred and which should not. You should also be careful to know how to defer it so that it doesn’t your page design or function.
    • Most likely, the easiest optimization for most of you is to avoid as many nonessential design effects, features, and plugins as possible.
    • I also hate that this tool doesn’t know which JS is critical and should be render-blocking and so it naturally recommends to defer all of it. HELL NO! Do you want the JS mobile menu to show up last for mobile-visitors? Do you want your ATF slider to render last? I think not!

    Combine images using CSS sprites:

    • This is a silly cumbersome tactic popular back in the days like 10-20 years ago.
    • While it can be sometimes useful now, it doesn’t have much effect in this current time of HTTP/2 protocol. It’s also really tedious to build CSS sprites.

    Minimize redirects:

    • This metric is sometimes valid but other times point to things you have no control over.
    • Any redirect chains caused by your site should absolutely be fixed. For example: all URLS in your site should use a consistent domain (HTTP or HTTPS, with-WWW or without-WWW). Sometimes, the issue is simply because you type the HTTP version of your domain into the test instead of HTTPS.
    • Any redirect chains caused by 3rd-party assets (loaded from 3rd-party servers) cannot be fixed or controlled by you. You have to ignore them, or stop using whatever plugin/service that’s making those redirected requests.

    Specify a cache validator:

    • Technical metric that isn’t meant to be read by non-developers. Most of the time, they’re referencing 3rd-party assets you have no control over. Just ignore!

    Avoid CSS @import:

    • Valid metric pointing out something that does affect your page render times. Unfortunately, CSS @import is often used by themes by some themes and plugins for various reason. I’d like to say it’s out of laziness. At this point, I recommend you either avoid using those themes/plugins or find other ways to include those CSS yourself.
    • Want to manually optimize and include the CSS attachment yourself? Try this guide (Gift of Speed) or this guide (Varvy).

    Optimize Images:

    • Useful metric to let you know which images can be optimized more.
    • Here’s my thing. Smaller or less important images should be optimized as much as possible.
    • But for important images that need pristine quality (products, photography, etc), you may want to use higher quality than what this test recommends. This is why it’s important to know what fits best for your site instead of listening to some automated tool.

    Specify Image Dimensions:

    • I don’t think this is really necessary and I’m too lazy to explain why.
    • Ok fine, I’ll try a short version. Basically, it might be more storage-efficient to reuse certain images in different places of your site even when they don’t match the dimension perfectly. I also think not setting the dimension only marginally affects initial paint rendering but not the end result.

    Minify Javascript:

    • I hate how much of a big deal test scores make out of this. A lot of times, saving 50% of some JS file is only saving 1KB. Most of the time, minifying Javascript doesn’t even make that big of a deal…and if did, then your issue is that you have too much JS in the first place!
    • Btw, if you really want to minify your Javascript, you can just do it from Cloudflare at the DNS level instead of wasting processing power on some PHP plugin.

    Inline Small Javascript:

    • Yes, it’s true. Inlining some small external JS is probably more efficient than making a separate HTTP request for it.
    • Thing is it’s usually called as an external request for a reason! And if you’re not a coder, you won’t know whether or not it should be inlined or not. Why go through this hassle for such a tiny gain?

    Optimize the order of styles and scripts:

    • Somewhat pointless metric. It’s not that your script load order doesn’t matter, but that the only way they were loaded in this un-optimal manner was due to your use of bloated themes and plugins.
    • So again…either get rid of some features and functions, or manually hard-code yourself.
    • And even then, the impact is not always as big of a deal as this warning makes it out to be. In some cases, the seemingly un-optimal load order was intended!

    Minify HTML:

    • Not really that big of a deal, IMO. Sure, it makes your site a tiny bit more lightweight but at what cost?
    • Minifying your site for free at the DNS level with Cloudflare is my favorite option. Do it at the server level on-the-fly upon each initial page load request?…I think that’s absolutely silly.
    • This is one of those recommendations that impact more when your site is bloated, and IF your site is bloated, then we know what you should really be focusing on is reducing the bloat and not wasting more server processing to minify stuff!

    Minify CSS:

    • Same explanation as above.

    Specify a character set early:

    • Not that big of a deal and not much impact. I will say that if you’re seeing this metric, your theme probably dropped the ball on that!
    • You can manually specify a character set following this guide.

    Enable gzip compression:

    • Totally valid metric but somewhat annoying in its lack of explaining alternate scenarios.
    • FIRST OFF: you should totally be using GZIP compression as it greatly reduces the size of your site assets, making them quicker to transfer and load. HOWEVER, you can totally ignore GZIP and also this recommendation if you’re already using BROTLI compression on your server which is even better than GZIP!
    • SECONDLY: you should also ignore this recommendation if it’s referencing assets being loaded off 3rd-party servers (since you have no control over them!)

    Specify a Vary: Accept-Encoding header:

    • Not a big deal in my opinion. But again, here’s my repeated pet peeve…it often references 3rd-party assets which you have no control over.
    • More info on fixing this issue in this guide.

    Avoid bad requests:

    • Totally legit metric. You shouldn’t make any calls to assets that don’t exist. Maybe you’re referencing non-existent things, or maybe you’ve mis-spelled some links and image names. Fix them!

    Avoid landing page redirects:

    • Legitimate recommendation!
    • But also could be maybe you typed the wrong version of your domain? Or maybe you’re intending a redirect?

    Enable Keep-Alive:

    • This recommendation is generally a good thing in the page load performance world.
    • But in the server world, there are varying opinions. Some say to enable it, but set a proper time limit. Others say you might be better off disabling it. You can decide which is best by factoring in your website, traffic, and server capacity.
    • This is one of those things where you have to be a server person to know if you should have it on or off, or to even enable it yourself.

    Inline small CSS:

    • Sure, you can do it if you know how and if you know whether or not it’s more efficient-loaded this way. How small is small? And does it really have to be inlined if those static assets are already cached? Does it really have to be inlined if it’s not even used for critical rendering? Ehhh, probably too much manual coding skill required and lots of little nuances to consider for something that probably won’t impact you much anyway!

    Minimize request size:

    • Highly ideal! Try to keep it small so your page load feels snappier!

    Put CSS in the document head:

    • Yes, it’s a valid general recommendation. But doesn’t have to be followed to a tee if you know what you’re doing.

    Prefer asynchronous resources:

    • Yes, this is generally recommended.

    Avoid a character set in the meta-tag:

    Avoid empty src or href:

    • I think these issues are relatively negligible but can have some effect on your server if you have tons of them and/or tons of traffic. I hate that the tool won’t even tell you where the empty src or href are.

    Put JavaScript at bottom:

    • The conventional logic behind this suggestion makes total sense. HTML is the content, CSS is the visual styling, and JS is very often related to functions. So generally we think HTML and CSS should load first and JS should be loaded last. The only problem with this logic is that nowadays, JS is very often used for design purposes. It’s often used to load sliders, or theme elements, or many other visual elements. Delay that JS, and you would be delaying your page load.
    • So my point is…the suggestion isn’t always relevant and definitely not for every JS. So it’s up to you to know which JS can be safely deferred and which JS should be left to load as quickly as possible. And once you know that, you can just ignore this suggestion completely.

    Common Pingdom Speed Test suggestions (and how to read them)

    Pingdom used to be one of my favorite speed tools (mostly because of their cute/friendly UI), but has since become a bit annoying to use. It’s STILL somewhat useful and relevant, as it does give helpful info and is also used by many clients and developers alike. I also think part of its popularity is because it records the fastest times compared to GPI and GTmetrix. This is because Pingdom doesn’t record things like favicon load time which often drags out the load time for GTmetrix.

    The reason why I don’t like it now like I did before is because of all the limitations. Pingdom improved their UI but got stingy with their free service. The test doesn’t let you run multiple tests as once; it seems like you can only test a domain once every 5 minutes or so. If you try to run it again too soon, you either get a warning message or a “cached” repeat score that you already saw before. There are also times when it won’t run the test from the server location you choose…VERY ANNOYING! I do like that the Pingdom test score URL’s seem to save for a lot longer. I feel like you could open the test score URL’s several months later and still see the results, whereas GTmetrix only saves for 30 days. GPI doesn’t allow you to save them at all, I believe.

    Reduce DNS lookups:

    • This suggestion makes little sense to me. It’s obvious that you shouldn’t have many different domain lookups for the same domain. But when you have resources loading from several different domains, as is the case with many sites nowadays, this suggestion no longer fits the bill. Even an “average” website nowadays will load from the origin domain, then webfont, then marketing tracker script, then chat script, and also some others.
    • My point is, there isn’t much you can do about this suggestion. As long as you’re not calling resources from different versions of the same domain, you’re fine. It would be NICE if this tool would at least let you know all the hostnames (and their variants) being requested.
    • Some more info on this suggestion if you want to “optimize” it.

    Make fewer HTTP requests:

    • I’ve got mixed feelings here. The obvious response is DUH!!! Fewer requests is better than more requests.
    • But the question lies in HOW you reduce your requests. If you’re doing it by actually removing requests, that’s fantastic. But if you’re doing it only by combining CSS and JS, that’s not exactly helping it. Sure, we can debate all day about whether or not

    Compress components with gzip:

    • Totally valid metric but somewhat annoying in its lack of explaining alternate scenarios.
    • FIRST OFF: you should totally be using GZIP compression as it greatly reduces the size of your site assets, making them quicker to transfer and load. HOWEVER, you can totally ignore GZIP and also this recommendation if you’re already using BROTLI compression on your server which is even better than GZIP!
    • SECONDLY: you should also ignore this recommendation if it’s referencing assets being loaded off 3rd-party servers (since you have no control over them!)

    Use cookie-free domains:

    • A terribly-unexplained “junk” suggestion to me. The suggestion basically complains if you’re using cookies but doesn’t tell which cookies you’re using or even explain why your site might be using cookies.
    • In case you don’t know, there are many reasons for using cookies. They’re used for managing user sessions (logged-in users), remembering previous user choices (GDPR, newsletter pop-ups), or tracking purposes.
    • Are you absolutely sure you don’t need or shouldn’t have cookies? Try following this guide or this one.

    Add Expires headers:

    • Useful suggestion of telling users’ browsers to cache static assets that don’t change often. The only problem is that this suggestion/score is often complaining about 3rd-party assets loading off external servers that you have no control over.

    Avoid URL redirects:

    • This one is a no-brainer. Ideally, you should not be redirecting your domain to another. The reason why some people are seeing this is because they’re entering the wrong domain, or maybe the reference is to some 3rd party links redirecting themselves.

    Configure entity tags (ETags):

    • ETags help browsers save time by letting them know whether resources can be loaded from local cache rather than re-downloading from the origin server. With that said, they aren’t always the best option depending on your scenario. Either way, this metric isn’t a huge deal IMO since most visits are first-time visits anyway.
    • Learn more about ETags here.
  • Should you use Critical CSS?

    What is critical CSS? How does it work and when should you use it?

    • Even better…when should critical CSS not be used?

    Here goes another cut-the-crap WordPress performance guide by yours truly.

    Innocent question from one of my webhosting clients:

    Hey man, quick question: have you ever dealt with critical CSS? I’m trying to experiment with it but often plugins that promise it aren’t very good.
    Site’s already crazy fast but if it can be faster then why not? XD

    I was so impatient, I responded right away…”It’s not for you. It’s an old ass tactic now coming back in popularity cuz of bloated pagebuilders. You don’t have that problem.”

    And not long after I broke down the reasons why, I felt the need to share them on my blog…

    How does “Critical CSS” work?

    Critical CSS is when your site initially loads only the CSS used for ATF (above-the-fold) content at the top of your site, instead of loading the entire CSS for the whole page. The idea is that by loading only this “critical CSS”, your page would appear to render faster for users while the rest of the page (below the fold) took a little longer to load but wouldn’t be noticed.

    This tactic is especially useful when you have so much CSS (let’s say anything above 60KB) that it takes half a second or even longer to process. Remember how internet videos used to work? You couldn’t watch the video until the entire thing loaded! But now with streaming media formats, you could start watching as soon as the first few seconds loaded. Critical CSS works similarly, the page can start rendering once the initial CSS had processed.

    Caveats to “critical CSS”

    As with everything, there are at least a dozen caveats to this tactic. I’ll list the notable ones:

    • WHO determines which is “critical CSS”? – a human coder? Or automated script generator? I prefer hand-coders as they would know precisely which elements are actually above the fold whereas the automated script would only be guessing based on preconceived algorithms. Will that annoying GDPR pop-up be included or not? Will shop icons be included or not? Will all the items in the not-yet-expanded mobile menu be included or not? See what I mean?…too many elements to decide. The worst case scenario is when critical CSS is generated improperly and breaks your site styling/function.
    • Critical CSS might hurt your load time for subsequent visits if you have browser cache. Think about it…with browser cache enabled, static assets like images and CSS/JS are cached on users’ browsers and loaded locally (producing the fastest load time). By locking away your critical CSS inline in the HTML document, you are requiring DNS time for that critical CSS on every request. In the case of browser cache, I think critical CSS only helps for that initial visit.
    • Your total CSS is so small that splitting it into more parts slows down your site (adding extra HTTP requests) without actually producing perceived faster render times.
    • You have so much critical CSS that the added complexity doesn’t give you any noticeable speed increases.

    CSS should be render-blocking!

    I’m sick of newbies trying to deploy CSS optimization tactics.

    Let’s get this straight -> CSS by nature is supposed to be “render-blocking”.

    It has to be so that you don’t get FOUT/FOUC issues. (Flash-of-unstyled-text or flash-of-unstyled-content is when your content loads before your styling and looks ugly/plain for a split second.)

    The only matter now is to reduce the render-blocking impact as much as possible. I hate that it’s even described this way. If it were up to me, I would just call it “CSS processing”. Anyway…

    Back in the days, CSS wasn’t used so bloated. A few kilobytes was all you needed to style your entire site. This was easily done because your site was probably designed all at once, by one person, and with the whole picture in mind. Nowadays, websites are built in a very modular way. The theme is designed or chosen in 2016, further customized in 2017. There’s maybe 15-30 plugins; each one designed by different developers, that also come with their own separate CSS.

    Guess what all this code spaghetti means? It means because all these little parts are coded at different times and by different developers, they add their own CSS and with many overlapping CSS. For example, your theme comes with button-styling which then gets over-ridden by the pagebuilder button styling and then again later over-ridden by the newsletter pop-up styling. Had you written the code from scratch, all this could have been like 3 simple lines…instead of 9 lines, 6 of them of them over-riding each other.

    So moving on!…

    Regardless of how you end up with too much CSS (again, l define “too much CSS” as being 60kb or higher), the idea is to reduce its processing time (or in pagespeed terminology: “render-blocking” time).

    Methods to reduce unnecessary CSS

    1. If your CSS is already minimal (below 60kb, preferably below 30kb), then you don’t have to do anything as it isn’t blocking anything.
    2. If your CSS is huge, then try removing as many unnecessary plugins as possible.
    3. If you have to keep all that CSS, then rewrite your theme from scratch or refactor the code (basically re-writing your code to be cleaner and more concise). Yes, I’m fully aware most of you non-coders can’t do this yourself.
    4. Most realistic option for newbies/non-coders – chop up the CSS into smaller files so your site can load quicker instead of waiting for entire CSS to download. This already happens naturally except for when people do silly things like COMBINE CSS (ugh! another annoying tactic used to trick pagespeed tools). Can I just say that the best way to reduce HTTP request is TO ACTUALLY REMOVE THE REQUESTS (instead of doing script combinations—ARGH!) Combining scripts is the equivalent of 5 customers at McDonalds combining their order into one giant order and further holding up the line.
    5. Or deploy the “critical CSS” tactic. Can be useful if you have so much CSS. But then again, it’s better if you just removed all that crud.

    Arguments for (and against) critical CSS?

    In favor of critical CSS:

    • When you have a ton of CSS and most of it isn’t needed above the fold.

    Against critical CSS:

    • When you have browser cache enabled. Browser cache already saves static assets (like CSS, JS, images) to the user’s browser so it won’t need to be re-downloaded again. If you use critical CSS and have it inlined in the HTML document, users would have to keep re-downloading this critical CSS on every request. So basically…critical CSS only helps you for the first visit (but slows down all subsequent visits).
    • When you don’t have much CSS.
    • When you don’t have much content. There’s point in splitting up your requests even further when you don’t have much HTML content or load requests to begin with. Suppose you have only 12 requests and 1kb worth of HTML content, it makes zero sense to add another HTTP request and hurt your overall load time.
    • When most of your CSS is needed to render ATF content. If your critical CSS is already 45kb out of 50kb total, why bother splitting that into 2 requests?
    • When you have so many pages that it isn’t worth the server processing to generate critical CSS for all of them.
    • When you don’t know how generate proper critical CSS for your site.
    • When it creates rendering problems.

    Frequently Asked Questions (about critical CSS)

    What if I do have a pagebuilder? Can I enable it then?

    • Having a pagebuilder doesn’t necessarily make you a perfect candidate for critical CSS. What matters most is that you load tons of CSS and most of it is not required for page-rendering. But here’s where it gets tricky. Most pagebuilders DO use all that massive CSS that they load. Or the other angle is that you have a pagebuilder but don’t really use all the crazy options and don’t load much CSS. In both of those scenarios, critical CSS is still not recommended for you.

    Can’t I just try it anyway? I’m [desperate] to play with random settings in hope of speeding up my site.

    • Yes, you can do anything you want. No need to have my permission. Heck, you can read around and find all the validation you need on a hundred other sites.

    But Google says I have “render-blocking CSS”…

    • CSS by nature is supposed to be render-blocking (to avoid FOUT/FOUC issues, remember?). I think what Google intended to say is that your CSS is taking too long to load.
    • You can’t stop 3rd party CSS from render-blocking. They aren’t loaded from your server. Ain’t nothing you can do about it except to avoid or defer that request.
  • NitroPack – cloud caching and CDN service review

    Welcome to the new era where cloud-caching goes mainstream (vs server-caching).

    What is NitroPack? What does it do? And why do people rave about it so much? How does it help speed up sites and improve page scores?

    Where should I start first? The good or the bad? Ok…let’s start with the GOOD!

    NitroPack features:

    1. It really does speed up sites.

    The sites feel fast. Most of the time, instant load upon a single click. Then again, it IS a caching plugin/service and this is what caching is supposed to do.

    • JUNE 1, 2021 UPDATE – I’ve been hearing more complaints about NitroPack not being as fast. I wonder if their service pre-caching is slowing down under the growth of new users, or otherwise not being as sustainable. Just a thought.

    2. It gives you better page scores.

    Oooooooh! Now it sounds like I’m just teasing but it’s real! Turning on NitroPack is quite possibly the easiest most effortless way to improve your page scores. You don’t need to learn a damn thing about speed optimization. Just enable NitroPack and your “D” grade can become a “B” or even an “A”. Hate all you want, the NitroPack really delivers the nitro!

    3. (REALLY) Easy to use.

    Listen up, “simple” cache plugins….NitroPack really is the simplest cache plugin out there. Like stupid simple. The plugin settings is one screen with 3 toggle switches and one slider. You don’t have to read online guides on what settings to pick or learn speed optimization. Of course, of course…all the settings are on their website. But still…it feels simpler and that’s all that matters for many people.

    4. Tons of features.

    Really comes with everything. Caching. Pre-caching. Minification, merging, critical CSS. CDN. Lazy load. Image compression. JS defer. It really does have nearly every single website speed optimization feature and function you could ever ask for. And all conveniently loaded into one service. How handy, right?!

    5. Automated optimization service.

    NitroPack fills in that special gap of not only giving clients the tools but actually making the best decisions for them. It makes you realize where all caching plugins fall short…that they don’t help if users don’t know how to use them.

    NitroPack drawbacks:

    1. Ugly FOUC issues.

    Every single client of mine using NitroPack has a FOUC issue. Heck even the official NitroPack site has it. LOL. You can see a split second where the styling slides into place. Call me a dinosaur but IMO it looks so unprofessional. But hey… if it doesn’t bother you…then it doesn’t matter!

    2. Sometimes not that fast.

    It bothers me to no end that even the official NitroPack site is kinda *sticky* load. It’s not that fast. Even after I’ve already visited the pages and pre-warmed its cache, they’re still sticky! The good news is that my client sites do load fast with NitroPack.

    Yes…both are on NitroPack. So whatever the case may be…you know it’s not always a guaranteed miracle. I hate that even the fast one still has sporadic FOUC issues. Just remember that the best way to test speed is right in your own browser and see what’s actually loading. Don’t be surprised when a NitroPack site doesn’t load so pretty when analyzed from an actual browser.

    3. The price is wayyyyy too expensive.

    The price you pay for NitroPack can be even more than your webhosting, especially for the higher plans. And kudos to them, taking advantage in a consumer market that doesn’t know any better. Repackaging overly technical services into a dumbed-down simplified product for end users. It’s great marketing and product execution. But if only people knew…just put that money into your webhosting server and you’ll might get a much better overall loading experience for so much less (depending on your webhost).

    • NitroPack costs $132/month per site if you have 1 million pageviews/month.
    • That same $132/month easily get you a VPS server that’ll handle 2-3 million pageviews (if not more) and cover as many websites in there as you want.

    But of course…in this random match-up scenario, we have to assume that you have a good webhost or server.

    4. I think NitroPack “cheats” the page scores.

    For example, when I tested a client site. It wouldn’t show the proper number of requests. My browser network tab was showing 152 requests (5.3mb) but GTmetrix only showed 19 requests (246kb). Congrats. They found a way to cheat the page score…but you can’t cheat the user experience. If all you care about is the number…then stick with it. But if you want to know how many MPG your car actually gets, then be cautious.

    UPDATE JAN 16, 2021:

    • This has since been commented on by Deyan (NitroPack CEO) that it only seems that way because NP moves certain processes off the CPU main thread and some page tests don’t report that.
    • So while NP doesn’t cheat the scores it certainly optimizes things in a way that cause your site to appear better and loading fewer things on those scores.
    • In reality, your website is still loading everything. I’ll comment more on this if I come back to check on this further.
    • UPDATE MAR 21, 2021 – webwhim finds more explanation for potential NitroPack black hat SEO cheating?
    • UPDATE NOV 11, 2021 – chats in Google SEO community accusing NitroPack of black hat SEO. And here’s NitroPack’s response to cheating claims. I let you decide.
    • UPDATE NOV 26, 2021 – I made a new NitroPack review, briefly describing what changes I’ve noticed.

    5. Automated cache configurations can cause issues.

    If you have a complex site with complex caching or optimization needs, I think NitroPack may get in your way. Its strength of being super easy to use can also be a con for advanced users. WooCommerce sites or sites with lots of custom/dynamic AJAX stuff may have issues.

    I don’t actually know this for a fact, ok? It’s just speculation. If you have a complex site and slow as heck, please try NitroPack for us all and report back here in the comments!

    My verdict on NitroPack

    I like what NitroPack is doing…but I don’t like NitroPack.

    • It delivers a fantastic user experience and pushes the limits of what caching can do.
    • I love that it’s bringing edge-caching to the masses (only they just don’t realize it).
    • I also enjoy the in-house (automated) JS combine tactics. A centralized cloud service like that could certainly benefit from a known list of JS conflicts similar to how Wordfence benefits from a known list of security exploits.
    • NitroPack is also a great bandaid fix for sites on slow servers and with limited caching options.
    • Another side benefit is that it’s an easily-reversible optimization attempt. If it doesn’t work, you only paid for a single monthly fee. It’s not like you bought a super expensive plugin, hired an expensive speed-op developer, or migrated everything to a new server.

    My gripe with NitroPack is that it’s stupidly expensive (especially for someone like me who knows what they’re doing) and still doesn’t deliver a professional page load experience. FOUC is just a major no-no in my book. I think of the word “amateur” every time I see it.

    The edge-caching revolution continues!

    The good news is that edge-caching technology has already advanced so much. It used to be only for simple CDN things like static assets (CSS, JS, images, etc) but has now grown into caching even the full page cache at the edge.

    There are so many boundary-crossing cache plugins and cache services that do more or less of the same thing. In time, they’ll all compete with each other to improve performance while decreasing prices.

    • Cloudflare APO – utilizing their massive CDN presence and long experience in cloud-caching and cloud-processing.
    • QUIC.cloud (by LiteSpeed) – leveraging their amazing free LiteSpeed cache plugin with their own CDN network. And it’s much cheaper than NitroPack.
    • Rocket.net – webhosting service that does page-caching at the edge.
    • All existing cache plugins – you give it some time and I bet many plugins and hosting services will start offering some degree of this (page-caching at the edge).

    Who should use NitroPack?

    Anyone on a crap server, bloated site, with zero knowledge of speed optimization, care (too much) about page scores, and don’t mind paying the premium.

    • NitroPack – the quick-fix bandaid solution to all your speed and page score troubles!

    For everyone else…trust me, you can get a better experience with normal cache plugins and save a ton of money in the process. Or better yet, put that money towards fixing/rebuilding your site and remove the crap that was slowing you down in the first place. Fix your problems at the root cause!

  • Best WordPress Image Compression Plugins – UPDATED 2026

    Honestly…there are only 4 good ones (ShortPixel, WP Compress, LiteSpeed Cache Plugin, and Imagify). The rest are junk to me. Either poor compression quality, lack of features, hard to use, or don’t offer anything unique that these 3 don’t already do.

    Let’s go over them!

    Current WordPress image compression market

    Image compression seems to be a “cheap business” venture for many plugin developers. Simply copy whatever open-source image compression algorithm out there and sell it at a monthly/yearly subscription. It’s all the rage and for as long as you’re helping users, everyone will be happy. The service is easy enough to implement and despite the abundance of image compression plugins out there, the market is still “under-served” (many sites still not optimizing their images).

    The only turnoff for me is that many of the compression plugins act like they’re the best when the numbers show me that they aren’t. I’m extremely against gimmicky marketing and roll my eyes when I see another copycat plugin on there. Being that I speed-optimize WordPress sites for hundreds of clients every month, it’s my business to know which image compression truly is the best.

    First choice – ShortPixel (PAID, but free for 100/month)

    • Better compression rates, offers WebP format, offers GLOSSY format (high quality compression for photographers), good pricing. This is my default go-to if you need serious compression. Try their (free) compression test.
    • Get ShortPixel

    Second choice – WP Compress (PAID)

    • Excellent ratio, super small file sizes, and very sharp. If anything, sometimes even sharper than the original.
    • Get WP Compress

    Third choice – LiteSpeed Cache plugin (FREE)

    • Super awesome free service. Can do unlimited images but your available quota starts small and increases slowly with each (batch) optimization request.
    • Incredible option to optimize tons of images for free.
    • Get LiteSpeed Cache plugin

    Fourth choice – Imagify

    • Another high-end image plugin that was formerly the first place. High quality and fair pricing.
    • Some compression settings may be better than ShortPixel. Very easy to use. From the creators of the highly-acclaimed WP Rocket cache plugin.
    • I’m starting to hate it. Several client sites running slow with it on! 8/24/18

    What about the others?

    • EWWW, WP Smush, Kraken, etc…. they are not as good IMO. You get uglier images with artifacts and/or the image size is not as small. Ugly UI and also difficult to use. Some are also bloated. With that said, some clients actually like them!
    • EWWW – leaves settings/items in your database when you install.
  • Best WordPress Pagebuilders Review – UPDATED 2026

    A list of my favorite pagebuilders and why. I also include a list of my non-favorites for comparison reasons. I compare them on features, ease-of-use, speed, clean output code, and compatibility. For those who keep asking, I don’t like pagebuilders! This list exists only for people who insist on having one.

    Best pagebuilders for WordPress:

    • Elementor – the most popular, and powerful free-version. Cutting-edge pagebuilder with all the trendiest gimmicky effects/features. Newbies and non-coders should start here.
    • BeaverBuilder – 2nd best, most stable and reliable. Preferred by more serious tech-savvy folks who prefer stability over features. Also nice that many devs like BB.
    • LiveCanvas – a great raw HTML/CSS pagebuilder where you can code your site from scratch. Great for devs and coders to handcode things exactly as they like.
    • Oxygen – great for developers wanting really lean pagebuilder experience. Arguably the fastest/leanest pagebuilder. Very aggressive marketing; you may or may not like his personality. I do love that the Oxygen community is full of dev-level users.
    • Zion Builder – I hear more and more good things but haven’t tried for myself. The owner and I couldn’t agree to a timeline. He wanted to give me access but only for a limited time and I couldn’t be bothered to schedule time out for a free review.

    Gutenberg pagebuilders (not quite pagebuilders in the traditional sense, but can do similar things):

    • Stackable – most polished UI, looks nicest of all Gutenberg libraries (except maybe Genesis PRO) but still some bugs in everyday use depending on what you do. I like this one.
    • Qubely – they were good before, but not anymore IMO. I don’t recommend them.

    Pagebuilders I don’t like:

    • Brizy – lots of complaints about bugs, unstability, poor UI/UX. But yes, it was toted as another good one, lightweight and less bloated.
    • Divi – way bloated, tons of shortcode lock-in. Can’t tell you how much money I’ve made optimizing/converting sites built with DIVI. (I hate AND THANK them every day.)
    • Fusion Builder (AVADA) – bloated, one of the worst. You should avoid the theme it comes with as well.
    • King Composer – hardly no one uses it and really bad.
    • Site Origin – CAN be lean but I think it’s not popular among devs.
    • Thrive Architect – not coded well compared to the rest of the market, slow!
    • WPBakery – one of the worst!
    • Visual Composer – basically a better version of WPBakery but still massively bloated. I hate the giant autoload entries in database.
    • Fusion Builder – comes with those super bloated themes like Avada. Get rid of this and the whole theme!
  • Why You Should (almost) NEVER Use Lazy Load

    I hate hate hate lazy load. Why? Because it hurts UX (user experience) at the benefit of maybe tricking page speed tests. It’s basically a cheap way of trying to speed up your page speed score by loading fewer items in the beginning. Problem is to the human eye, it makes things load slower!

    Sure…there’s the logic that items farther down on the site shouldn’t be loaded if the user hasn’t scroll there. True…but do you really have control over which items are lazyloaded and are you so sure their delayed load won’t affect user experience?

    Let me go deeper into the subject of when you should (and shouldn’t) use lazy load.

    When you SHOULDN’T use lazy load:

    • You have images above the fold. (it delays your header/banner load)
    • You have a store. (shoppers can’t fast-scroll as quickly through your site)
    • Doing it only to fool pagespeed scores. (while hurting UX for actual human users)
    • You’ve got a CDN. (their servers do the work, and not yours)
    • Have only a few images on each page. (static assets are easily cached and load quickly anyways)
    • You have a fast-loading website and strong server. (no point in delayed asset loads if your current site and server handle them well)

    The point of your website is to serve users first and robots/search-engines second. Why should you have an image that loads later rather than sooner? The point of the improving page loads is to load things FASTER, not slower. Letting your site load images right away makes your site appear to load faster for users. (Are you forgetting the word LAZY in “lazy load”? It means things load slower!)

    Don’t know how to load things faster? That’s a fair place to be, you can improve it in a wide variety of ways! My site can help you with that.

    When you SHOULD use lazy load:

    • Most of your images are below the fold, at least a few scroll-clicks from the top of the site. (makes sense not to load images/items that users might not even scroll to)
    • You’ve got huge images, and no CDN. (saves server resources/bandwidth)
    • You’ve got many images, and no CDN. (saves server resources/bandwidth)
    • Images aren’t integral to your user experience. (users come only for your text)
    • Using it for SCRIPTS, not images. (perfect for speeding up page load)
    • Your web-server is really weak. (lazy load will save server processing)
    • You care about page scores. (and believe in their supposed benefits, even though I don’t)

    So there you go, a few instances where I would recommend lazy load. But other than these few scenarios, it’s best to get a CDN and let all your image assets load naturally!

    The last say on lazy load

    Ultimately, lazyload should only be used to speed up page load or decrease server use. And NOT to compensate for poor web coding or underpowered web server. When used correctly, lazy load should have no visual impact on your web pages. Used incorrectly, lazy load affects user experience.

  • Disable WordPress default LAZY LOAD

    How to disable the native WordPress lazy load function.

    Paste the snippet below into your theme functions.php file:

    /**
    *  Disable WordPress default image lazy load
    **/
    add_filter( 'wp_lazy_loading_enabled', '__return_false' );

    For those wondering why I think most sites should disable image lazy load, read this:

  • Minify strategies for HTML, CSS, JS

    Are you someone that believes in always minifying HTML, CSS, JS?

    There’s a whole website speed cult now that believes everything must be minified…or else you’re an idiot. I didn’t know this could be such a hot topic but it appears some people will argue vehemently with my stance on minification. Some of them are actually developers; the others are just clients parroting those developers.

    It’s ok! This guide isn’t for the detractors…it’s for the clients who just want to know what I do and why I do it. (Secretly…I think it’s a stupid post that shouldn’t need to be written but people keep asking me whyyyyyyyyy.)

    The BENEFIT of minifying files

    Smaller files transfer faster than larger files!

    If you don’t know, minification makes website files smaller by removing unnecessary characters like line-breaks, spaces, comments, and other things. It can reduce your HTML, CSS, or JS file sizes by a good 20% without affecting it’s function in any way. It’s known as one of the easiest no-brainer tactics for optimizing your site speed.

    And as we all know…smaller files send faster. That’s especially nice if you have visitors on limited bandwidth (like via mobile devices).

    So then why don’t I do it?

    The COST of minifying files

    Minifying files requires server load.

    The server has to spend some CPU processing power to minify those files. So now you gotta think…

    • If files are PRE-minified before being requested, they are sent right away in minified (decreased) file sizes.
    • If files are NOT minified before being requested, then they have to be minified first before they can be sent out.

    That little distinction there can make all the difference. Let’s do some analogies.

    • Pretend you’re wearing a backpack and need to run 50 feet.
    • Is it faster to put down the backpack and then run the 50 feet?
    • Or is it faster to just run the 50 feet with the backpack on?
    • Now…what if instead of a backpack, you were carrying a fridge?
    • Or…what if instead of 50 feet, it was 500 feet?

    You see what I’m saying? It really depends on the situation. Ideally, there would be no extra weight being carried and all files were already PRE-minified before they are requested.

    WHEN to minify

    The real world use doesn’t always reflect simple blanket theories. It’s full of variables:

    • How strong is your server?
    • How many pages does your site have?
    • How much traffic do you have?
    • How often do you update content?
    • How much HTML/CSS/JS do you have?
    • What are you minifying? HTML or CSS or JS? Or all?
    • Is your server doing the minification or a CDN?

    Don’t you worry, I’ll break it down into tiny OCD bits for you.

    How server strength affects minification…

    The weaker your server, the less processing load you want to put on it. Use that precious CPU power for something else, like processing dynamic php and making DB queries.

    If you really want to minify still:

    • Let your CDN (like Cloudflare) do all the minification work.
    • Pre-minify your files ahead of time. (Usually done with a caching mechanism.)

    How your number of pages affects minification…

    If you have only a few pages (like say 20 or even 50 pages, heck, even 300-500 is manageable)…it shouldn’t be too much problem pre-minifying everything ahead of time.

    The problem is when you have say 1-2 thousand pages. Are those are going to be pre-cached and pre-minified? Because if not, that means a good chunk of those pages will be minified only when visited by real users. Users who will now have to wait just an extra fraction of a second for the server to generate those minified files.

    How your traffic size affects minification…

    We already know the best case scenario is if you pre-minified everything already. But let’s say you have a big site that minifies on the fly. Well, if you have few visitors…it’s gonna suck for them, because it’ll seem like they always get slowed page loads because of waiting for the server to minify.

    But…if you have lots of traffic…say thousands of hits per day, only the first visitor to each page will hit a slow page load and the rest of them will benefit from the minified files that the first visitor initiated. From this explanation, you would minification is always recommended on high traffic sites.

    Except only…

    How your content update intervals affect minification.

    Lol, this rabbit hole never ends! If you don’t update content very often and don’t make changes, you theoretically can have the files minified just once and they stay like that forever.

    But if you DO update content very often and your cache mechanism keeps clearing the minified files…then that means your server is constantly re-minifying those files and can be under more burden if you have many visitors requesting uncached/un-minified assets.

    All this isn’t a big deal if you have a site with few pages, but certainly something to consider when you have tons of pages. Your server barely finishes minifying a portion of the files and then *boom* content update triggers a cache purge and the server has to re-minify from scratch again.

    • A real-world analogy would be like…pretend you took forever to cut your grass, that by the time you’re barely halfway down, that the part you cut already grew back.
    • Or pretend you took forever to make your bed that by the time you’re finished, it’s time for bed already.

    How the size of your HTML/CSS/JS affects minification…

    This is another factor. The thing is if your files are already lean, they won’t benefit much from this extra effort. Like no noticeable gain whatsoever.

    But on the other hand, if they’re so huge and bloated…I’m not so sure minifying is a great idea either. Because yeah, you’re saving space but at the same time the user has to wait that much longer for larger files to minify. Weird catch-22, I know.

    Typical HTML, CSS, and JS size below:

    • LEAN sites – usually 50kb for HTML, and 100kb total for CSS and JS.
    • BLOATED sites – 200-300kb for HTML, and 300kb to 1mb for CSS and JS.

    What are you minifying? HTML or CSS or JS? Or all of them?

    If it isn’t obvious, I recommend you not minifying anything that isn’t even that big to begin with. If you have a 50kb HTML page…minifying that only saves like 10kb…that’s nothing compared to the 300kb header image.

    When it comes to CSS and JS, you focus only on the critical assets. That is…the CSS and JS that are used to render your site. And especially anything that renders objects above-the-fold. All that other junk that loads in the footer…they don’t matter at all because your visitor doesn’t actually perceive their load time.

    And if you do render footer CSS/JS, then you’re being silly because you’re slowing down delivery of critical assets for things users don’t perceive.

    “But what about those page scores recommending minification?”

    Those tools are mostly generic recommendations that don’t apply to every scenario. Go ahead and listen to them if you want. You’ll certainly get a higher score, but the score itself doesn’t guarantee faster load or better SEO or whatever other junk you’ve been told.

    HOW to minify

    Minification strategies for LEAN sites:

    • A lean site to me is anything with under 100kb of HTML, and under 100kb of CSS and JS combined.
    • Use a cache plugin with preload option. And let the cache plugin do the minification.
    • You could also not even bother with minify as you won’t even notice the difference. There are probably other assets and things loading on your site that could be speed optimized with more noticeable results.

    Minification strategies for BIG sites but LOW traffic:

    • A “big site” is to me a site with over 1000 pages.
    • Low traffic is anything less than 20,000 hits/month.
    • If your site is big but lean and you don’t update content often, use cache plugin to minify and preload your cache.
    • If you do update content often, try not minifying your html and do it only for CSS and JS.

    Minification strategies for HIGH TRAFFIC sites:

    • Feel free to turn it for HTML, CSS, and JS…just know that initial visitors will hit uncached pages and see slower loads.
    • If you’re updating your content often, maybe you can minify only CSS and JS but not HTML.
    • If you do update your content often (everyday) and you have many pages, I recommend to use Autoptimize to do your CSS and JS minification. This way those minified CSS and JS won’t be purged every time you update your content.
    • NOTE: if you’re using Autoptimize to minify CSS and JS, don’t enable the minify options from your cache plugin.

    Minification strategies for BLOATED sites:

    • Use Autoptimize to minify CSS and JS.
    • For HTML, you can minify if you have very few pages and/or don’t update your content often.
    • If you have many pages and update content often…I probably wouldn’t minify HTML.

    MY tactic for minification:

    • I never do it from my server or cache plugin.
    • I only do it from CDN. Most CDN’s all have CSS and JS minification. For the CDN’s that proxy the HTML content (like Cloudflare and QUIC.cloud), you can minify the HTML as well through their servers.
    • This is great since it saves your servers the trouble.
    • But CDN does come with some proxy delay…so if you don’t need a CDN (you have local traffic), you might be better off not using one.

    What about CSS/JS merging?

    I hate merging CSS/JS. Having one combined 300kb CSS/JS (instead of 400kb of uncombined and un-minified CSS/JS) might actually make your site appear to load slower. How?

    • If your CSS is loaded in parts (separate files), the browser can process each piece immediately after it downloads. Critical CSS used for the actual HTML can therefore load faster.
    • If your CSS is loaded in one massive chunk, the browser can’t process anything until the entire CSS is downloaded. This delays critical CSS since it has to wait for all CSS to load.

    So why is this merging topic a big deal? It’s because many caching mechanisms won’t minify your CSS/JS unless you enable the merge option. And that’s where you have the extra variables to factor in.

    Should you use critical CSS? (I mostly hate critical CSS tactics as well.)

    • The safe answer is not to use critical CSS unless you know what you’re doing.
    • It’s probably best if you learned CSS and refactor the code yourself. I don’t believe in doing automated critical CSS optimization.

    Don’t know which minification strategy to use?

    The safest way is not to even mess with it. If your site is bloated as heck, you’ll probably notice much more of a difference optimizing other areas than to waste your time with minification.

    Just so you know, minification only speeds up the user’s very first visit. After that visit, the CSS and JS are already browser-cached and won’t even be downloaded again.

    Ultimately, you’re just gonna have to test it for yourself. Don’t trust what anyone says. Not even me. Be your own scientist!

  • BEST WordPress SEO plugins in 2026

    From the guy who doesn’t use SEO plugins…comes a list of his supposedly “best” SEO plugins.

    Read this for what it’s worth. Just a mixed bunch of passing first hand experiences, along with second hand engagements on client sites.

    I am far from an “expert” SEO plugin user. But you guys keep asking for my opinion so here goes!

    1. The SEO Framework

    I like their features, UI, and overall vibe the best. Just the right amount of features for devs and none of the newbie stuff for people with crap sites and crap themes.

    2. All-in-One SEO

    I loved what this plugin used to be…before Syed Balkhi touched it. AIO SEO is now acquired under his umbrella companies and everything he touches loses its soul. I’m sure it’s worth it but no thanks.

    3. All the others

    Here goes more stuff I don’t use personally, and only deal with occasionally on client sites.

    • SEOPress – seems like a nice brand. I haven’t tried it much. I did hear some people complaining about it making a mess out of the database and lots of unnecessary entries in there (even for small sites).
    • Slim SEO – super lean one with a good community vibe. But not many users like the others
    • RankMath – wildly popular and many people like it. I do like its modular approach, but I feel it’s kinda bloated (high autoloads). Also kind of buggy sometimes or has random issues that break a site.
    • YOAST – the biggest SEO plugin out there in terms of user base (resulting from their heavy marketing and backroom partnerships). I think it’s a safe bet if you don’t know what you’re doing. But its vibe feels like a dinosaur to me. They were one of the most hated WP brands in the past many years. Their blogs can be helpful for newbies learning about SEO.

    Ultimately…what makes a good SEO plugin for me is that it has only the features you need and nothing else.

    • Newbies need more features and handholding descriptions. It’s easier for them to handle all SEO from one plugin.
    • Devs need a cleaner/clutter-free SEO plugin that doesn’t conflict with their custom-designed site handling SEO functions in several places (whether in theme or other task-specific plugins).
  • BEST WordPress Cache Plugins in 2026

    The best cache plugins to speed up your WordPress sites and where I would use them!

    The plugins are listed in order of what I would recommend for most people to try from first to last. In my personal use case, I love LiteSpeed Cache the most for my high-traffic sites (best performance, features, reliability) and then use Swift Performance Lite or WP Performance for smaller sites. Swift Pro and WP Rocket are nice for clients (and bigger sites) who can pay and need something better than a free plugin.

    1. WP Performance (FREE)

    WP Performance

    • If you don’t know what you’re doing, start here.
    • Very easy to use.
    • Safe to play with caching and won’t break your site. Please don’t try to enable every feature.
    • Works well for all types of sites.
    • Recommended settings (coming soon)

    2. Swift Performance (FREE & PAID)

    Swift Performance Lite

    • FREE free is the best free cache plugin out there (along with LiteSpeed Cache).
    • Tons of features, a bit complicated for newbies and risky since they enable stuff that break or slow down their site.
    • PAID version has even more incredible features. Works great.
    • I recommend Swift free for sites below 400 pages and/or fewer than 10k hits/month. Above that, you should use the pro version.
    • Swift Pro is especially great for sites with many pages but little traffic (thanks to its aggressive preload function).
    • Swift does sometimes have the annoying white page issue. If you can’t resolve it, you’ll have to switch to another cache plugin.
    • Recommended settings

    3. LiteSpeed Cache (FREE)

    LiteSpeed Cache

    • Honestly the best cache plugin out there. Tons of feature, enterprise-grade performance and reliability. (It’s my favorite.)
    • Only drawback is you need LiteSpeed or OpenLiteSpeed server to use its caching features.
    • Best for sites with many pages and high traffic. I don’t recommend for sites with little traffic (below 10K hits/month). Small sites are better with WPP or Swift since they can precache.

    4. WP Rocket (PAID)

    • Simple to use and great documentation. Still good amount of features, and very reliable.
    • If Swift (FREE) and WP Performance doesn’t work for you and you’re not on LiteSpeed servers, WP Rocket is a solid choice.
    • WP Rocket is good for all sites.
    • Only reason why some people don’t like WP Rocket is the cost or lack of granular features. Depending on the user, it’s ease-of-use can be a pro or a con.

    5. FlyingPress (PAID)

    • Quality cache plugin built by a passionate speed specialist.
    • Very simple and easy to use yet has advanced/unique functions not found in other cache plugins.
    • Still maturing and might still have some bugs but I think they’re already being worked out as this is written.
  • Best WordPress Plugins in 2026

    My favorite WordPress plugins (and also HIGHLY RECOMMENDED by experienced WordPress developers). All these plugins are clean-coded, super-fast, and best in class. I’ve also included thoughts on others that I don’t like…just so you have some context.

    Gutenberg blocks:

    • GenerateBlocks – my favorite basic one
    • Qubely – is probably my favorite fancy one.
    • Stackable – also nice but I’ve heard about bugs and coding issues.
    • Kioken – looks nice

    Content:

    • WP Show Posts – allows you to show posts anywhere. You can choose filters to decide which posts are shown, and then also options on how they are displayed. Very lean and when combined with other plugins, are great for getting rid of pagebuilder reliance. 🙂
    • Lightweight Grid Columns – let’s you create columns, however many you want, whichever size you want. So that you can push your page layout around without having to use a pagebuilder! Genius!
    • Smart Content Filter – great way for users to filters posts on busy pages.

    Caching (detailed review):

    1. WP Performance – awesome free cache plugin. Solid, reliable, many features, amazing UI, and super unique simple way of granularly excluding/disabling optimizations.
    2. SWIFT Performance – Lite version is best free cache plugin, paid version is the fastest full-featured cache plugin out there.
    3. LiteSpeed Cache – incredible free cache plugin with many features, but only works on LiteSpeed servers. This is actually the best cache plugin if you have thousands of pages or many MANY visits (like millions).
    4. WP Rocket – another fast (premium) cache plugin. easy to use, not recommended for NGINX.
    5. Simple Cache – fastest plugin for my VPS with REDIS object cache enabled. This is recommended if you’ve done all manual optimizations possible.
    6. Breeze or Cache Enabler – highly recommended for NGINX servers.
    7. Comet Cache – fast and nice but SWIFT (free) and WP Rocket (paid) are better.
    8. Borlabs Cache or WP Speed of Light – other good premium cache plugins.
    9. WP Fastest Cache – it’s a nice one, too, but not the fastest from my testing. Many do like it.
    10. W3TC – I hate it. Way too bloated and technical. Incompatible with many plugins and not the fastest even when it does work!
    11. WP Super Cache or WPMU Hummingbird – absolute garbage. Bloated and slow.

    Read my: Best WordPress Cache Plugins Review

    Asset optimization:

    • Autoptimize – helpful but not necessary if your theme and plugins are already optimized. (This is like a band-aid.)
    • WP Gonzalez – amazing, useful, costs money.
    • Plugin load filter – asset organizer plugin but simple-enough to use.
    • Plugin Organiser – full asset organizer plugin but UI can get complicated.
    • WordPress Asset CleanUp – supposedly WP Gonzalez but free. I like this one.
    • PerfMatters – nice one by Brian Jackson.

    Image compression:

    • ShortPixel – SP has the best compression and GLOSSY formats.
    • LiteSpeed Cache – can do tons of images, FREE! Great for huge sites and you don’t want to pay anything.
    • WP Compress – another great compression service, perfect for sharp details. Lower price than SP. (Can also try my LIFETIME link.)
    • Imagify – is 3rd place for me (in terms of quality). But I wouldn’t even use this.
    • Swift Performance PRO – this paid cache plugin has image compression feature in it.
    • TinyPNG/JPG – can be good sometimes but ShortPixel is definitely better!
    • WP Smush/EWWW – horrible compression quality/file-size ratio.

    Image, gallery, slideshow:

    • Quick Featured Images – best plugin for managing/automating your featured images. Pro version is so worth the price!
    • Enable Media Replace – replace media files without having to dig through FTP folders.
    • reGenerate Thumbnails advanced – best IMO, easy-to-use with great filtering options.
    • Metaslider (free/paid) or Smart Slider 3 (free/paid) – are the best. Metaslider is good for super simply minimal sliders. SS can do fancier things like dynamic height or showing different sliders on mobile, also more features (embedding video, changing button images, etc). Soliloquy used to be great/lightweight but has now been surpassed. Whatever you do, avoid Slider Revolution (REV Slider).
    • WP Featherlight – simple jquery for lightbox. I use this (and ONLY THIS) along with default Gutenberg for building image galleries.
    • WP Featherlight Disabled – my even more lightweight fork of the original WP Featherlight. (Only loads featherlight CSS/JS on pages you allow.)
    • Meow Gallery – if you want a full-featured gallery, use this instead of the bloated NextGEN, FooGallery, Envira, etc.
    • WP Offload Media – beautiful plugin by the respected Delicious Brains. Offloads your media files elsewhere so you can save space on your web server.

    Database tools & optimization:

    • Advanced Database Cleaner – incredible for tidying up your DB. (I like this much better than WP Optimize.)
    • editor – great for editing your database from WordPress instead of via cPanel/phpmyadmin (BE CAREFUL!)
    • WP Migrate DB – easiest way to move databases and also do string rewrites. Pro version has more useful dev features.
    • Better Search Replace – (formerly) my favorite database editor by Delicious Brains. Has a great “test run” feature. I use it to fix URL’s for migration or https purposes. I love that you can specify which tables. But I now do all this with the new Migrate DB.

    Backup:

    • BackWPup – awesome free plugin that does FULL backups and even remote to S3! Yes, FREE! (my favorite)
    • WPVivid – another awesome FREE full-featured backup plugin. Has extra convenient clone/staging features that BackWPup doesn’t have but can be buggy for larger sites.
    • UpDraft – very popular, get it for offsite backup feature. I hate the free version but the pro version is nicer, comprehensive.
    • BackUpWordPress – my favorite free backup plugin for local backups. Works well, clean/quiet interface.
    • BackupBuddy – other people like it. I think it’s really annoying with many distracting screens.

    Forms:

    • Fluent Forms – now my #1 favorite form plugin for both FREE and PAID. Easier to use in some ways and nicer design and extra features. See my review.
    • Gravity Forms, Happy Forms, Piotnet Forms – all great premium forms plugins. Mostly same features but different workflow, UI, and pricing.
    • Caldera – my former default. Free and works great. No bloat. I hate that it picks up a lot of spam. But it’s already abandoned now, and the team is focusing on their main commercial offering Ninja Forms.
    • Contact Form 7 – I hate how it loads on every page.

    Migration:

    Use these for moving sites or pushing from live to staging environment and vice versa.

    • All-in-One WP Migration – my favorite, popular and works. Free version has 500MB limit and won’t export/import from remote destinations (S3/Gdrive/etc). TIP: you can circumvent size limit by excluding “wp-content” during export; just manually compress and extract it using cPanel’s “File Manager”.
    • Duplicator – great for migrating/clone sites but also works for backups. Popular among developers. May feel too technical for newbies.
    • Migrate Guru – easy to use and free…can move huge sites and handle URL rewrite for you. Only issue is it misses non-WP directories and doesn’t always work. If you’re not a pro and need something that’s ALWAYS 100% reliable, stick to AIO Migration or do things manually.

    WordPress SEO Plugins:

    • SEO Framework – my favorite. Clean and bloat-free. Most simple and doesn’t try to do everything for your site. SEO only!
    • ALL-IN-ONE SEO (pro version) – my 2nd favorite. High quality, and fast.
    • Yoast SEO – they responded to complaints and improved UI, faster, cleaner, and less bloat. Still annoying nag screens and I still prefer the others.

    WordPress Redirection Plugins:

    • Htaccess – not a plugin but is the most recommended method!
    • Safe Redirect Manager – the best one! Enterprise grade, high quality code, super fast redirects with the least speed impact.
    • Redirection – hell no! Drives me crazy that so many people use this. It slows your website down by 1-3 seconds. You’re better off just copying the redirects to your htaccess!
    • Using SEO redirect function – also a “no” for me.

    WordPress Membership Plugins:

    • MemberPress – best membership plugin out there. I’ve tried many and this one has all the features I needed, easy and fun to use. Also great pricing that doesn’t overcharge you for necessary add-ons. See my review. I’ve also made MemberPress add-on plugins.
    • Restrict Content Pro (RCP) – also good membership plugin depending on your use case. See my review.
    • WooMemberships/WooSubscriptions – great if you want to integrate with WooCommerce. Overkill if you don’t.
    • Easy Digital Downloads – great plugin and very friendly (industry standard for selling digital products), but a little pricey. Many basic features are add-ons cost $$$.
    • MemberMouse – I hate it. Expensive and hard to work with (design & coding), also loads many scripts and slows down your site.
    • DigitalAccessPass (DAP) – outdated in many ways.

    Shopping Stores:

    • Shopify – works great, looks great. Totally worth the monthly price so you don’t spend thousands developing on WordPress/WooCommerce. Cheapest plan is $9 or $15 if you want to use it with WordPress.

    Email:

    • FluentSMTP – new email plugin that has more features and works well. Another miracle job by WPManageNinja team!
    • WP Mail SMTP – my favorite email plugin. Works better than my old favorite “Post SMTP Mailer”.
    • Comment Reply Email – my simple plugin that sends replies to p

    Email lead generation & popup:

    • MailOptin – lean, simple, fast. Limited design options but still my favorite.
    • OptinMonster – the gold standard but pricey! Lots of options.
    • Convert Pro – common alternative to OM, cheaper but not as many features.
    • Thrive Leads – I hate it, bloated and laggy as hell if you have many pages and lots of traffic.

    Social Plugins:

    • Shared Counts – great for putting social networking share counts on your sites.
    • Social Warfare – handles shared counts and also controlling how shared content is displayed.
    • Social Pug – same as Social Warfare and good reviews but I haven’t tried it yet.
    • Scriptless Social Share – simple clean way to get shared boxes, but loads faster because it doesn’t do any counts.
    • Novashare – new share plugin by the respected Brian Jackson.

    User Management:

    • DoLogin – provide easy WP-admin login link for other contractors and support staff.
    • Adminimize – control what different users can see once logged in.
    • User Role Editor – edit what different user roles can do once logged in.

    Server Management:

    Affiliate management:

    • AffiliateWP – is the best! Don’t use anything else. See my review.
    • AffiliateRoyale – no! Don’t use it. It’s abandoned. I built an AffiliateRoyale to AffiliateWP migration script if you’d like to use.

    Search:

    • Relevannsi – I’ve had it forever and love it.
    • SearchWP – probably the most “official” search plugin for WP.
    • Algolia – good if you want something more robust and scalable for giant sites.
  • 10 BEST Gutenberg block libraries for WordPress

    Here are the best Gutenberg block plugins to redesign your WordPress site!

    • Want to replace your bloated pagebuilder?
    • Scared you won’t be able to do fancy layouts?
    • Scared you can’t keep your existing design?
    • Scared that Gutenberg blocks are too hard to use?

    Well, you’re in luck!

    There is so much Gutenberg development nowadays and tons of 3rd-party extensions available. It blows me away how fast G-blocks are evolving.

    I’ve played with all the best ones and will now share my favorites with you. They are EASY to use (very low learning curve), also in my opinion more flexible than pagebuilders and much more lightweight than pagebuilders.

    Intro to Gutenberg blocks

    The new WordPress editor builds content in blocks.

    Previously, you were mostly typing into a text box and attaching images/embeds for media. And then for other special functionality on the page, you either had to add shortcodes or use a custom page template or hack widgets into your pages.

    With Gutenberg, everything is added in blocks. Do you want text? That’s a block. Do you want images? That’s a block. But there are many more possible block options than just text and images. Just about all plugin functionality nowadays can be added via a Gutenberg block.

    What about if you wanted fancy layouts? No need to code a custom template, you can build it yourself using “layout blocks” that added multiple-column layouts and other special layouts, into which you would add other content blocks.

    Really cool, right?

    Distinguishing between SINGLE-PURPOSE BLOCKS and BLOCK LIBRARIES

    I use these made-up terms to help categorize the different block plugins out there. Gutenberg block plugins are just like regular WordPress plugins. Some do just one thing. Others do many things.

    Ideally, you want to install as few plugins as possible to keep your site as light as possible. It’s probably better to have only one block library plugin per site that can do most of what you need. And then for any other specific design or function, you can install a single-purpose block for that. This keeps the bloats down and also does not clutter your site with so many darn blocks and plugins.

    Make sense?

    Distinguishing between MINIMAL library vs PRE-STYLED library.

    Here go some more made-up terms. Some of the Gutenberg block libraries out there have tons of blocks (for every design and widget function). They look really polished and probably great for someone switching from a pagebuilder and don’t want to start with a plain design. Other G-block libraries look more plain and simple. They’re better for building from scratch when you have your own style or maybe want to code things in yourself.

    Which one is better for you? Depends….if you have zero technical ability and want something that looks professional without any effort, start with the pre-styled libraries. They’re almost like full pagebuilders in the amount of pre-designed options available for you. Just plug and play!

    But if you know how to code and want to do really customized non-generic layouts, then you’ll prefer a more minimal library that’s more like a blank canvas for you to style things out exactly as you like. Both options can be fast, both can look nice. It’s just a matter of what feels easier or more freedom to you.

    Personally, I think the plain ones are better for my use. Cleaner, more lightweight. But really, you should be fine with any…either will be cleaner and leaner than a pagebuilder. If you don’t know what you’re doing…maybe you should start with the pre-styled ones. Heck, you can have multiple block libraries installed and they’ll still be lighter than your pagebuilder.

    Newb questions…that I’m tired of hearing.

    Do Gutenberg blocks/builders slow down your website?

    • No! They are so much better than the old pagebuilder way. Gutenbergs are so much more native to WordPress, load faster and use fewer assets to do so.

    Which is the best Gutenberg block plugin?

    • You decide. Try them all and see which one has the blocks and pre-styled designs you use most.

    Can you install more than one Gutenberg block plugin without slowing down your site?

    • Yes. Having 5 Gutenberg block libraries is still faster than one pagebuilder.
    • For single-use Gutenberg blocks, you can mix and match multiple with no problem.
    • For Gutenberg block libraries, it’s ideal to have only one block library per page. But even if you used elements of multiple together, you’ll still be ok.

    Top 5 MINIMAL Gutenberg block libraries

    These are my favorites because all I really need are just container and layout options. I don’t need actual block widgets or block functions since I get them from my plugins already. And for extra styling or design, I can code them myself. These libraries won’t overwhelm your editor with tons of unused block options.

    The qualities I look for most in these blocks are spacing and layout options (multi-columns, different layouts with text and images, displaying posts). If there’s extra widget functionality, that can be nice if it saves me from having to install an extra plugin but that’s a slippery slope…for me, most plugins end up having too much rather than too little.

    1. Genesis Blocks formerly “Atomic Blocks” (StudioPress)

    Perfect balance of containers and common layouts for you to put stuff inside. Great for doing business sites, comes with posts grid, pricing, accordion, and other common blocks. There’s also prebuilt templates as well so you don’t start from total scratch. I think this is the perfect Goldilocks option if you want something minimal but don’t want to start from scratch.

    In case you didn’t know, the development team behind this are closely related to StudioPress and Genesis theme (my favorite developers theme). It’s no wonder at all that I would like it.

    2. Advanced Gutenberg (JoomUnited)

    Many useful pagebuilder blocks but unstyled. Has counter, testimonials, layout summary (TOC), tabs and accordions, and many more. Great for recreating all your pagebuilder layouts AND get their little widget icons and functions as well. I think the generic name is horrible…maybe great for SEO but terrible for branding. They should have called it “JoomBlocks”.

    Kind of funny background on JoomUnited, they are also Joomla developers (Joomla was the former popular CMS before WordPress took over), and have a solid history of making quality plugins for both WordPress and Joomla. I’ve seen and enjoyed their other work as well.

    3. GenerateBlocks (Tom Usborne)

    From the maker of GeneratePress (one of my favorite themes). This is the Gutenberg block library I use the most as it’s super lean and minimal. All it has is CONTAINER, GRID, HEADLINE, and BUTTONS. And all I mostly only use the container and grid blocks. The rest I build by hand. But that’s because I build many custom sites and know how to code things in the way I like.

    I think it’ll be too minimal for most people and not conducive to helping newbies create polished layouts. But if you want to do things in the most clean and minimal way…I seriously think you can do nearly everything with only the container and grid blocks alone. Whatever other widget functions can come from your other plugins.

    Notes from actual use:

    • It’s just too minimal for quick use. If you want to stay super lean and style things from scratch, it’s great. But otherwise, you should start with another library if you’re new to Gutenberg.
    • Button spacing can get real annoying. This is partly to do with default WP core button styling as well.

    4. Guteblock (Sweans)

    Has different multi-column layout options. Good if you have many little cards for arranging text and images around each other. It’s not for me but many people doing pagebuilder-style layouts but don’t want the extra-styling might like this.

    • Appears abandoned and dwindling user base (only 200+ active installs).

    5. Ultimate Addons for Gutenberg (Brainstorm Force)

    Made by the same company behind the Astra theme. It was just ok for me, feels like another me-too plugin from BSF. Has the typical widget blocks. Perhaps might be nice if you already have Astra theme and want to stay in the same eco-system. Otherwise, I highly suggest skipping this one and going straight to the next section.

    NOTE: ehhh…I don’t like all the inline styles. I’ll be looking to replace this #5 spot asap.

    Top 5 PRE-STYLED Gutenberg block libraries

    I think this is where the fun begins for most of you…and honestly, even for me as well. The block libraries listed here are more than just the usual standard container blocks and common widgets. They have many more widget options (sliders, counters, timeline, table of contents, tabs/accordions, pricing tables) and on and on and on. And they also have prebuilt templates for you to import.

    If you’re coming from a pagebuilder and loved the pagebuilder experience, you should definitely start with these. They have many options that already look nice and tons of widgets for you to choose from. They’re a lot of fun, look great and surprisingly easy to use. What I care most about the block libraries here is that they stay manageable and don’t overwhelm you with their options.

    1 . Qubely (Themeum)

    Oh man, there is gonna be a pagebuilder war starting in the Gutenberg blocks world and Qubely is the first ruler as far as I can see.

    This thing looks great! So polished, everything about the plugin is so nice. Feels premium and yet I’m surprised at what you get for free. They also have a PRO plan too which I think is totally worth it if you want the extra features. Do you wanna know I like them?…I put my email in their newsletter! (Which I never ever do!)

    When I first wrote this guide, I had Gutentor (the current #3) as being the best pre-styled Gutenberg blocks library but Qubely is easily miles ahead once you compare them side-by-side. Qubely has the right balance of many helpful widgets but not so many that you have 4 tabs worth (like Gutentor).

    The prebuilt designs are the most polished of any block library that I see. You can compare both Qubely and Gutentor’s website for yourself and you’ll see that Qubely feels like a better development company and with better design.

    My affiliate link for Qubely Pro. (They still have LIFETIME plans now.)

    2. Stackable (Gambit Technologies)

    Ouch, this is so painful and straight-up disrespectful to put them at #2. Because everything about them screams first place. The blocks look great. The designs are awesome. They also have PRO plan that unlocks many more sexy designs. Also too, check out their Stackable showcase (really awesome designs at the bottom, just look!).

    They got everything you need. Many block options. Many predesign templates to choose from. So why are they not #1? I felt that Qubely gave you slightly more in the free version. Qubely has a few extra widgets (like table-of-contents, timeline, image comparison) which look great and weren’t included in Stackable. The only unique advantages I can think of for Stackable is a much more active Facebook group and they seem to be featured more than Qubely. Gun to the head, I feel Stackable might be a better development team as well.

    Ultimately, both of them could be either first or second place. You really can’t go wrong. Everything about them is top class. Try both and see which one you like better. Then go buy their pro plan.

    • UPDATE – Stackable is officially my #1 pick considering all their recent improvements, and also in combination with Qubely’s announcement that they weren’t making enough money to support Qubely development for the long term.

    My affiliate link for Stackable Pro (No lifetime plan available.)

    3. Gutenberg Pagebuilder (Gutentor)

    This is basically a full-on pagebuilder but in Gutenberg. If you ever wanted all your pagebuilder layouts and many predesigned templates and hundreds of widget options…this is the one! I feel like it has more widget options than any other Gutenberg block library.

    While I don’t like having more Gutenberg block tabs, I do appreciate that they organized their blocks into Elements, Module, Posts, and Widget. (Hmmm…why didn’t they make all those words plural?) In any case, I think some people will feel it’s overkill. Others will love all the options it has. (I also hope they go away from the generic plugin name.)

    4. CoBlocks (GoDaddy)

    Absolutely fantastic for replacing complicated pagebuilder layouts. Has dividers, menus, pricing tables, carousels, collages, media layouts. This one is super fun with the shape dividers (put in a CSS class and use image as the background, hehe). Tons of options and still very lightweight. Just FYI, Godaddy didn’t built it…they simply acquired it. Let’s hope it stays amazing.

    Notes from actual use:

    • I really wanted to like this one, but it was a little buggy at times. Some blocks broke and had to be rebuilt.
    • It has many useful blocks but some blocks don’t have all the options like others. For example their container blocks don’t have so many margin and padding options like GenerateBlocks and KadenceBlocks.
    • I did really like their accordion, and probably the only thing I would use on some sites.
    • I would use KadenceBlocks instead if I were you.

    5. Kioken Blocks

    Brand new to the scene and already I think it’s deserving of the #3 spot. I only list it here at #5 because I want to see how it matures. First off, Kioken aims to be the best pagebuilder replacement and looking at the feature-set, I’d have to say I’m very impressed.

    Kioken can do a handful of things that other blocks can’t. Vertical text and animations (I think many newbies are gonna love this). I think they’re following design trends pretty well. The designs look very polished. Here’s a showcase site built with Kioken.

    If there’s any cons, it’s that they’re still really new and the site design library doesn’t have many options. Also they don’t have as many block widget options like the other libraries. But it’s still a solid choice and especially if you like their design style. I think their PRO version is worth checking out if you like the free one.

    • This plugin looks abandoned by its devs.

    6. Getwid (MotoPress)

    This one is also a lot of fun and very underrated. It has many unique blocks like progress bar, content timeline, even CPT block (wow). Also has a template library so you can import prebuilt layouts. So why isn’t this one ranked higher? It’s not that it isn’t great, it’s that the others have so much more polish. But I can also see certain scenarios where you might prefer this one. It’s got lots of widgets and un-styled (so you can style them yourself).

    • Plugin was closed on WP repo (may be reinstated soon), but you can still get it from their website.

    Block libraries I didn’t like

    These are the ones you can skip. I felt they were missing too many key functions and/or didn’t offer enough unique functionality to make them worth the install.

    • Advanced Gutenberg Blocks (maximebj) – a random collection of blocks that do such specific functions you probably won’t use more than 2 or 3 of them if even that much. I also don’t like that it failed to open sometimes (on my bloated test site). (Closed. No longer available.)
    • BlockyPage – nothing wrong with it. Feels like a copycat of other G-block plugins except only two minor differences. I don’t like that it takes over the full-width of your editor header area, but do like that it added buttons for desktop, tablet, mobile view. (Appears abandoned.)
    • Gutenberg Blocks and Template Library (Otter) – meh. The collection of blocks was too specific for my needs and their template library import didn’t work. Maybe the library didn’t work because I had 10 other G-block libraries enabled but still…I wasn’t compelled to diagnose it. I’m also not a fan of how it takes over the top of every page editor. (Getting popular. 100K downloads.)
    • Kadence Blocks – arghhh, so close. I wanted to like them as a clean DIY block library but it’s missing some essential blocks like the Container block (if not for that alone, it could have replaced GenerateBlocks pretty easily). It’s still worth checking out but I think the others are better and will cover more use cases.
    • Ultimate Blocks – feels like a collection of widgets, doesn’t have anything for building content layouts. I liked the countdown and “how-to” block but those alone are not enough to justify using it.

    A word to the Gutenberg naysayers

    I know some people are terrified of losing their way of WordPress and don’t want to switch to Gutenberg. Many of them have argued with me or even tried to show me links of the Gutenberg plugin getting tons of reviews.

    My message is “don’t worry”.

    Gutenberg is improving so rapidly, I can’t even keep up with it. It has opened the door for so many more ways of creating, designing, and editing content in WordPress sites.

    It’s not only the future of WordPress (it’s already the current state of WordPress). Maybe you don’t like how that sounds but actually what it means is that Gutenberg blocks will keep improving and competing with each other to take as much market share as possible. You will have more power, freedom, and flexibility than ever before…AND…your site will be so much leaner than with a pagebuilder.

  • The FASTEST Lightweight WordPress Themes

    Why do we want a lightweight theme? Besides getting rid of unnecessary visual clutter, they help your website load super fast which is especially important in today’s ADD society and especially important in today’s rising mobile-browsing trend. Fortunately, this trend has forced all themes today to be written with cleaner and lighter code.

    NOTE: I’ve tried over 100 themes from well-known established companies to unknown developers (also had to support them via clients). Ultimately, I would say a theme isn’t useful in the long run without a big community to support it. You’re bound to run into issues without any solutions and won’t be as inspired to evolve your theme regularly.

    I feature my favorite 3 lightweight WordPress themes, from fastest and lightest to most “full-featured” (but still light):

    1. GeneratePress

    Probably the best choice for most people. Super lightweight, great community, dedicated developer. Not only lightweight but full of hooks and hacks for every possible little customization you’d like. It has many built-in features, yet friendly enough for both non-coders and coders alike.

    RECOMMENDED for: seasoned WP experts who like tweaking everything little snippet of code, feature, and aesthetic. Also good for beginner WP users who want to grow into power users or become a paid WordPress expert. Also good for those who want more of a full-featured theme but find Genesis to be too “expensive”.

    • If you don’t like Genesis, GeneratePress is probably the next best coded theme that’s respected by both beginners and seasoned developers.
    • I highly recommend this one if you need something more than an empty/minimalist page.

    2. Genesis Framework

    The biggest and strongest community IMO of all 3. Most mature theme with every option you’d want. Their themes are by no means slow or bloated but they do come with many options pre-loaded.

    Genesis is best if you’re running a professional site, requiring a more polished look with more functions, and want professional help from time to time. Genesis is well-supported and recognized by many developers.

    In my eyes, Genesis or GP will give you the fastest site possible and not Astra. The reason why is because Astra is an “unfinished” theme to me. To really maximize it, you’ll have to install all kinds of plugins which will end up being heavier than GP or Genesis.

    RECOMMENDED for: beginners who want a professional look with minimal effort (via themes), or pro developers who don’t like coding from scratch each time and appreciate mature/polished code.

    • I personally like Genesis the best as I like to do everything ultra-professional. But for those in low budget or DIY situations, GeneratePress is a better fit IMO.

    3. WP ASTRA

    Mostly solid theme, coded nicely and lightweight. All options beautifully integrated into the standard WordPress theme customizer.

    The free version is nice, well-designed and looks great even with system fonts. Pay a little more for the Agency package and you get all kinds of goodies. I love that they have a growing community with lots of developer input. Astra is great if you want just a quick-and-dirty personal site (blog, or not-so=commercial business look).

    I could see Astra growing into a really nice premium theme but that’s going to be a few years away and I prefer them sticking to the ultra-lightweight niche as they’ve mastered that perfectly. The moment you start adding a few KB of features here and there, you’ll grow into bloat before you know it.

    RECOMMENDED for: beginners or seasoned WP users who want a free lightweight theme with minimal options/clutter and not looking to spend lots of time. I hear they are bombarded lately with all kinds of support requests and very slow to respond.

    • My programmer didn’t like how Astra was coded. He found it annoying to work with. Maybe something to think about if you want to do custom-coding with it.
    • Others find it unreliable and buggy, especially alongside WooCommerce.
    • For the most part, Astra is best used with pagebuilders.

    Runner Ups (and their issues)

    1. OceanWP

    Nice-looking theme and also very lightweight but I hate their lack of pricing transparency. The theme starts out free but requires a paid extension for every little “feature” you want to add. I was fooled by their sexy demos at first but then when I tried to recreate the same look, I was shocked by how many add-ons they try to sell you.

    Their business model is annoyingly similar to WooCommerce where they give the base for free but charge for everything you need to make it truly functional. I also hate how the admin options make you feel like the entire theme is neutered. I switched over to WP Astra and never looked back. It’s no surprised WP Astra has nearly double the members in their Facebook Group compared to WP Ocean.

    RECOMMENDED FOR: if you really like the exact look of OceanWP demo themes and don’t mind paying for their extensions.

    2. Thesis Framework

    Thesis used to be coolest thing 10 years ago when they were ahead of the times. Now they’re kind of outdated, clunky, hard to work with, and still living off the fumes of their prior success. Most serious developers that used to love Thesis have switched over to Genesis years ago.

    Their theme skins are indeed very lightweight but their look may or may not be desirable to you. Maybe good for simple blogs or that “internet marketer” look but pretty much terrible for anything else. The worst part of all is that it’s hard to work with. Customizing Thesis is un-intuitive and unlike working with any other theme. I’m sure I might learn to love it if I dedicated myself to working with only Thesis for the rest of my life…but until then, I’m gonna stick with WordPress themes that act more or less like other WordPress themes.

    RECOMMENDED FOR: WordPress-savvy internet marketers who know how or are willing to learn how to work with Thesis themes. I can’t imagine ever recommending Thesis for a newbie user or client.

  • How to Choose a Good WordPress Theme

    Ahhh, they keep making WordPress themes more and more complicated! Which one should you choose and which one is the best?!!! What features do you need and what marketing gimmicks should you avoid?

    There are actually easy ways to tell which themes are good and why.

    IMO, the best themes/frameworks are marketed to developers. The worst themes are marketed to end users. So take a look at their marketing…and ask yourself who you think their target demographic is? Experienced/professional wordpress developers or impulse-buying wannabe online-entrepreneurs with zero tech skills?

    WordPress theme features that DEVELOPERS like:

    • clean-coding, bloat-free
    • easily extensible
    • used by many developers, active community
    • accessibility & smart archichecture
    • easy to update over time

    WordPress theme features NOOBS like:

    • “no coding necessary!”
    • tons of features, color & typography options
    • every flashy effect you could ever want
    • great for making money
    • mobile-responsive, speed, SEO
    • great customer support

    What WordPress theme features are most important?

    1. Nice Design

    Clean, professional design, with a little personality (or at least allows you to add some personality). As long as it looks great or can look great with a little bit of effort, that’s all you need. No more than that! It doesn’t (and shouldn’t) need to be 100 great themes in one! It’s easier to start simple and add a little bit from there, than to start complicated and have to cut it down.

    2. Clean coding

    This is something you (as a non-coder) probably won’t be able to verify for yourself. You’ll have to ask around, read the reviews and see what other creditable developers are using it. Basically, good coding is done in an intelligent efficient manner and also in accordance to WordPress’ recommended practices. No shortcuts or strange hacks are made. Clean code runs fast and efficient, and also easy for other developers to work with. It’s kind of like how you organize your room. If you do it right, it not only looks good but other people can figure out where to find things quickly.

    3. Compatible with many plugins

    This is also known as “easily extensible” in that it’s easy to extend the theme’s basic functions with other plugins and add-ons. Generally, themes that are well-coded will be compatible with all other plugins (shopping carts, forms, pop-ups, caching, calendars, SEO, etc and etc). It isn’t just the coding that makes it play nicely but because the theme isn’t trying to do everything by itself. Most themes with plugin conflicts are because they aren’t coded-well, or lacking code, or simply too opinionated about everything. This is why you should avoid “all-in-one” themes; it’s because they try to do everything themselves and won’t function smoothly when you try to add something else.

    4. Used by many developers

    Yes, this is a HUGE FEATURE! Why? Because your website will always evolve over time. Your business may grow or break or change in other ways. You’ll always make changes eventually and one way or another, will have to hire someone to help you make changes. For this reason, it’s important that you pick a theme that many developers know (and love to use). It will make the site easier for developers to work with and less costly to make changes.

    5. Following the latest trends (mobile-responsive, SEO, high performance, schema, etc)

    These are things are important but the good news is you shouldn’t have to worry about them as much. This is because they should already be standard. And when something’s standard, it’s not so much a special feature any more.

    What WordPress theme “features” should be avoided

    1. Overly-customizable

    This is the #1 reason why many WordPress themes are slow as heck. Too many users wanting one theme to be anything and everything to everyone. It’s not possible!

    Developer-centric themes are bloat-free because they load only a few features if that. And the developers can then code in only the features they want. Themes marketed towards non-developers load every single feature right off the bat. That’s the only way to make it feature-rich without requiring users to code anything. And that’s part of why your themes take so much longer to load. They load huge JS libraries with everything when you’re only using like 2% of the features in there.

    2. Flashy effects

    This is another reason why many WordPress themes are slow. They load too many effects right off the bat. Sliders, counters, animations, etc and etc. This is ridiculous. It’s appealing to newbies who don’t know how to code or design, but scorned by experienced developers. Newbies don’t know how to design and don’t have any vision of what they want. So they actually design by “undesigning”, which means to start with a finished design and then take away or customize that. Professionals start with a blank slate and add to it. (This is why professionally-designed sites are usually much cleaner.)

    3. “Great for everything…businesses, studios, making money, etc”

    I think it’s really gimmicky for a theme to make promises of what it’s good for. That’s all design-related and nothing to do with the code quality. I think it’s ok if a theme aims to be one thing, such as a shopping site, or a corporate site, or a blog. But definitely not good if it claims to be good at everything. If anything, that should be a red flag to you that it’s trying to do too much. That’s like a jacket claiming to be the best jacket for all occasions.

    4. Popular (has many users)

    McDonalds sells more burgers than anyone else I know. Does this mean they have a good product? No, it doesn’t…it just means they have good marketing (and that they appeal to the masses, i.e. inexperienced crowd). The only popularity I care about is if the theme is popular with true WordPress experts and developers.

    5. Great customer support

    It’s not that this isn’t important but its that this feature is marketed to newbies and non-coders who think “great customer support” means the company will tell you how to do everything with your theme. I think a theme company should spend their time actively developing the theme to make bug fixes, increase compatibility with plugins, and finally…add features if necessary. What  I don’t like to see is a theme company that spends more time on sales and customer support, that tells me active development will be slow. And that if there’s any development, it will be to make new themes to have new customers.

    Anyway, what WordPress themes do I recommend? (These are my top 2)

    1. Genesis Framework and child themes (from StudioPress) – best coding and performance, highly polished designs, most popular among developers, active development with great support and user forums.
    2. GeneratePress – for the coders who love great performance and don’t mind coming up with their own designs. I don’t recommend this to newbies, non-coders or non-designers. It’s coded really well but requires some work to look like a polished theme.
    3. Of course, there are other great themes that I like as well but Genesis and GeneratePress are my general recommendations.
  • The BEST WordPress theme (for coders) – Genesis

    Genesis framework is my favorite theme for developers and professional sites.

    • Lightweight – not a single wasted line of code
    • Developer-friendly – clean structure, tons of hooks & filters
    • Experienced community – largest theme community of respected developers (not newbies)
    • Mature theme market – clean, professionally-designed child themes (unlike typical generic stuff on Envato market)
    • Many 3rd-party plugins – lots of compatible plugins built just for Genesis

    Let’s break it down…

    Genesis is the MOST PROFESSIONAL WordPress framework

    If you didn’t already know, I’m a diehard Genesis user. I absolutely LOVE LOVE LOVE Genesis theme/framework. [Almost] all my critical sites are using it. For me, it’s the most comprehensive WordPress theme out there…tons of beautifully written-code with every hook and filter you could ever possibly want. Also backed by the most respected theme-community ever created…thousands of A-level coders using it to churn out beautiful super professional sites.

    Genesis shadow over today’s themes

    When comparing Genesis against today’s most popular themes, it’s easy to see why many users don’t get the hype. Compare a Genesis child theme against say…AVADA, X Theme, Be Theme, or some other super bloated all-in-one WordPress theme and the Genesis theme might seem dull in comparison. No flashy colors or dazzling animations. No built-in slideshows, pagebuilders, fancy masonry tiling, WooCommerce widgets. Genesis has nearly zero appeal to the average WordPress user.

    But ask any legit developer and they respect it. The code is clean and comprehensive. A valid theme foundation upon which you can build to your fullest imagination. Other themes may appear to have many options but they’re mostly catered to newbie users with zero taste (yes, offensive, but I had to say it). And worst of all, if you want to customize them…you end up having to hard-code even more than a legit theme and wrestle through conflicts with their existing over-opinionated code. Simply put, themes made for professional developers are built (and marketed) very differently from themes made for newbie users.

    The target Genesis user market – professional developers

    The fact is…Genesis was born from a different time, for a different type of user. It was made for professional developers and/or designers who couldn’t code. And it’s funny because at the time, that was practically the entire WordPress user base. Pretty much everyone was a “professional developer” to some degree (while the “non-professionals” were on Wix, Squarespace, Shopify or who knows what). You had “web designers” and everybody else.

    But now more than ever, we have average WordPress users who don’t know a darn thing about HTML trying to design their own website. It’s not a dumbing down of users. It’s just the effect of WordPress’ mainstream success. People for whatever reason don’t want to hire professional designers anymore. They want to do it themselves. And they don’t know what they want. So instead of choosing blank canvas themes and building up (like a professional would), they prefer bloated every-option-included themes and trimming down. They don’t know how to design, so they buy everything. Hahahah.

    And I’m so thankful that Genesis doesn’t cater to those users. Endless trendy features/options would completely rot its clean simplicity to the ground. Am I saying that its #1 feature is having no features? NO, I AM NOT! In fact, it has tons of “features”.

    Genesis features – clean, organized, lightweight, comprehensive YET un-opinionated

    It’s hard to explain the value of a developer-centric theme to people who don’t code, but I will try. Let’s take the average super bloated theme. It’s marketed to the widest range of users possible and for every kind of site possible (blogs, business, ecommerce, media, etc). It has tons and tons of options. And guess what, you’re paying for all the code that you don’t use. And you’re paying for all that extra server processing load that the website costs you.

    And then what happens when you buy this giant theme with endless option but STILL can’t find the option you need? Oh, it’s gonna cost you so much more to edit it. It may not even be possible. But hey, if all you want is a generic site just like every other site out there….you know, slideshow header on top, some navigation options, fancy-looking layouts that fit the demo content…they’re alright. And yes, I’m aware that they PROMISE you about being lightweight, modular, blah blah blah. Don’t listen to that crap.

    Truly professional websites aren’t built that way. They start with a custom design from scratch. On a DESIGN APP, like Sketch. Layouts and visual elements pushed around without the confinements of a real-world PHP environment. Designs play in a world of limitless imagination. When the design is settled upon, they’re brought to life starting with a base theme (the “framework”) like Genesis.

    Coders use the framework as a simple template so they don’t have to rewrite everything from scratch, they simply customize certain areas. Mainly, layouts of things and also where they go when clicked on. That sounds simple enough…but what makes a “good framework”?

    First, a good framework is one that gives you lots of options but not opinions. Themes made for non-coder try to spell out every option for you (sizes, colors, fonts, measurements, etc). This adds mean much more code to wade through to do simple tasks. Next, a good framework should integrate well with the rest of the internet. SEO-friendly (for search engines), social-network friendly (shows accurate snippets when shared), accessibility (can be “read” by different reader-apps, vision-challenged folks), ready for multi-lingual translation, compatible with other popular plugins (WooCommerce, media, etc).

    Simply put, Genesis holds the perfect balance in giving you all the customization options you need…but not requiring you to add in essential elements from scratch or having to delete delete existing code.

    The value of the Genesis community

    If you’ve been in the web-development world long enough, you’ll know that almost nothing ever lasts. Software and sites go in and out of trend faster than anything. And so to have a theme that will be with you even 5 years is remarkable. Most of the popular themes out there don’t even last beyond 2 years.

    And here’s why that’s a problem.

    It’s because when you need to update something or customize something, you might have another developer by then. The last thing you’ll want to hear as a business owner is that you need to re-code a completely new site. UGH!!! And this is why it’s so awesome that Genesis is popular amongst legit A-grade developers. You can find an abundant number of developers who are comfortable and familiar with Genesis. A good many will even prefer it (if they’re honest in building you a comprehensive well-coded site). That’s not only a massive convenience but also cost-savings, and think of all the anxiety you won’t have!

    Frequently asked questions about Genesis:

    • Does that mean Genesis is the fastest? – yes, it is. A fast or as lightweight as any other theme. Can be considered “faster” when you factor in that other themes may require extra plugins for basic functions (which would add code and load).
    • Is it still popular? – yes, very healthy developer community. I can ask questions and get dozens of helpful answers from EXPERT-level people.
    • Great SEO, accessibility? – yes, all that.
    • Secure? Well-maintained? – yeaup!
    • How do you feel about it being owned by WP Engine? – I hate that. But WP Engine (and the core Genesis team) have so far held to their word of keeping Genesis alive despite the absence of original Genesis founder Brian Clark.
    • Is Genesis still the best WordPress theme? – I think Genesis is still the best for developers

    Coming from the pre-framework era (Thesis, Headway)

    The evolution of PARENT & CHILD themes

    Genesis came from an era where [mostly] only developers and “code-explorers” could edit themes. Want to make your header an extra 100px taller? Gotta muck around in CSS and throw in a PHP snippet. Want to add a widget to the footer? Same thing. Want to change the colors? Same thing. Quite often, the changes didn’t work and/or you broke your site design/function in the process. Even if the theme DID have documentation…the documentation was just explanations teaching you how to hack the php/css, hahaha!

    But the funny things was…if you were from that era, you never complained about how hard it was to do the task; you were simply overjoyed that it was even possible and that you didn’t have to run out and buy a new theme. In other words, you were grateful for the opportunity to get lost in the code. (Crazy, I know.)

    Even if you DID manage to figure out which edits to do, it was a pain to find them again. And let’s not forget…this is BEFORE the mobile-responsive era!!! So you can only imagine how much more work it is now make unofficial hacks for all 3 desktop, tablet, and mobile viewpoints!

    And what about when your theme updated? Hahahah, you would lose all these edits and have to do them all over again. Some people transferred the hacks manually to the updated files. Others just updated blindly and then cycled back to re-edit things. Whether you do it before or after the update, it’s still a painstaking process comparing php files line-by-line. God help you if the loop structure changed. This all happened WITHOUT staging sites, btw. Hahaha!

    Oh but what about if your theme DIDN’T UPDATE and the developer just ran off and launched a new theme. You were stuck with an abandoned theme that couldn’t grow with the times. Constantly deciding whether you should spend time hacking your old theme further or hacking a new theme to make it look more like the old one. Ahhh, the stress!

    The birth of theme frameworks

    Luckily…the concept of frameworks was born. There needed to be separation between theme functions and theme styling. There needed to be a theme base that didn’t have to be rebuilt with each theme. There had to be a way that we could at least style our sites without losing our hacks/customizations every time the theme updated. And thus, the concept of PARENT and CHILD themes were born. Parent themes are basically “theme frameworks”….the underlying foundation of a theme. And ideally, each theme house or development agency would use the same foundation throughout.

    But to take it even a step further is to make a parent theme that was easy to work with, and heck even open to 3rd party developers to make child themes for them. This was a total revelation. Instead of fragmented theme houses all over the place (some good at coding, others good at designing), frameworks gave designers a well-coded foundation on which to place their designs. (And also a more trusted marketplace to sell them.)

    DIY frameworks

    Some ingenious minds decided to create even more user-friendly frameworks. They realized that WordPress was being used by more and more non-coders. And they tried catering to them by building a “you can design this theme anyway you want”. It was great, and they succeeded in attracting massive fanbases overnight.

    But much of their success wasn’t always due to their actual usability.

    • Thesis promised “easy DIY design” but was actually successful because of it’s SEO success (at the time, Thesis was often toted as the theme for best SEO. Speed wasn’t as critical an issue then).
    • Headway promised to be the truly easiest DIY but never quite released the version that was supposed to blow away everyone’s minds. It sold well because people believed it to be the next evolution to Thesis.
    • Genesis was in Thesis’ shadow for many years and wasn’t widely adopted until people saw the big bloggers moving to Genesis.

    The reality was, Thesis still wasn’t user-friendly enough. The interface was hard to use. Things were laid out in way where yes, you didn’t have to code to make changes but you still have to have coding ability and know the terminology to make changes. Changing the placements of simple things required many visits to the their documentation and many nested boxes inside other boxes. It was a whole other language within itself and very unlike WordPress.

    Headways was only a more somewhat-more-friendly version of Thesis but still far from a true WYSIWYG builder like what you see with pagebuilders today. Genesis *wisely* didn’t even bother with the whole DIY feature maze. They went straight to marketing their 3rd-party child theme designers. Looking back, you could totally argue that they these DIY frameworks were the very first “pagebuilders”.

    So what makes Genesis so great?

    Genesis simply allowed developers (and “code explorers”) an easier way of editing code! First off, they used the whole parent-child theme structure so that custom edits wouldn’t be overwritten when you edited the main theme. Next, they separated the theme into multiple smaller files and named them in proper logical programmatic ways (header section was put into header.php, footer section put in footer.php). They also had many hooks and filters so that you could easily edit almost everything in your theme. Want to remove the header hero section or edit the copyright code? A simple snippet in your functions.php could do it. No need to hack 3 separate php files. Sure, other themes did this through but perhaps not as extensively and as logically.

    Genesis became the developer’s favorite theme overnight.

    Its structural logic and terminology made sense. And developers everywhere adopted it easily. Sure, none of that makes it any easier for newbie users BUTTTT does it make it more popular amongst designers. And that means more 3rd-party themes to choose from. And a bigger user community to contribute to the framework. Despite it’s fall out of limelight within the casual market today, Genesis still has a healthy number of compatible plugins and yes, still new child themes coming out.

    So what’s the problem with Genesis now?

    Websites are [expected to] be even more user-friendly now. It’s not enough to have editable themes. They need to be EASILY editable, and WITHOUT mucking in code. And for a short time, it seemed Genesis could do that. Edit some text and widgets here and there. Maybe change the layout, colors, font. But that’s about it. And it’s not enough. Today’s websites are so full of gadgets and widgets that Genesis feels like it’s not user-friendly at all. Every little change you want to make requires coding to some degree. It’s fantastic for developers who prefer lean sites built straight from scratch. But a nightmare for those without any coding ability. What’s even tougher is that you can’t even test things! No simple settings to play and preview with. OUCH!

    The market was still wide open for user-friendly AND easily-customizable themes and that’s where GeneratePress enters the story.

  • The BEST WordPress theme (for non-coders) – GeneratePress

    I think I’m ready to crown GeneratePress as the best theme framework for WordPress (ESPECIALLY for non-coders).

    And I do think even the diehard coders would like it as well!

    • lightweight (with essential features built-in!)
    • easy to use and customize for non-coders (no pagebuilder needed, friendly community)
    • easy to work with for developers (logical structure, comprehensive hooks and filters)
    • also compares favorably to my favorite theme, Genesis

    Let’s break it down…

    GeneratePress is a GREAT WordPress theme.

    The “lightweight” hype around GeneratePress

    If you haven’t already heard, most of the hype around GeneratePress is that it’s free, fast, and easy-to-use. It’s often compared along the likes of other lightweight themes like Astra and OceanWP. But oh, let me tell you this…it’s so much more than that!

    Lightweight themes are a dime a dozen. It’s the trend now more than anything. Every WordPress theme is promising to be the fastest WordPress theme ever made. Every other one toting how small their CSS and JS are. Proprietary caching and performance options, blah blah blah. As a speed optimization consultant, I can tell you right now…the secret to being lightweight is not about not having any features at all. It’s about having comprehensive BUT MODULAR features. As in, you have a wide variety of options but the ones you don’t use are not loaded in the background.

    Sounds simple but you’d be surprised just how almost nobody out there has gotten it right. Just about every other theme is either:

    • Lightweight, but no features – so it’s only fast until you inevitably install all the 3rd-party plugins to finish your site (design/function).
    • Full-featured – but slow as heck.
    • Full-featured AND modular AND has performance options – but still slow as heck. Lol, I know. Bloated themes with “performance options” are like junk food with “natural flavors”. It doesn’t help because the darn thing was bloated junk in the first place!
    • Lightweight and reasonably featured – but only customizable by developers. Fine for me…but no dice for the newbies or folks that can’t afford programmers!

    Unparalleled usability

    Let’s start with the most important quality…USER INTERFACE. At the end of the day, what makes a tech tool useful is how well it strikes the fine balance between features and simplicity. Quite often, tools fall off-balance to one side or another. I think GeneratePress is absolutely the perfect medium. Just the right amount of features, and yet still very simple. Their UI is perfect.

    Are you a self-proclaimed “idiot” who doesn’t know what he/she is doing? The interface is simple and foolproof enough for you to touch only what you need. Are you a curious tech-savvy explorer? The interface allows different settings to click deeper into and muck around with options.

    Admittedly, there’s still a slight learning curve. But never will you pull your hair out clicking through a dozen settings screens to change your font color. Never will you break your site and scramble to figure out which JS-optimization option to undo.

    Overcoming reliance on pagebuilders and programmers (“SECTIONS” and “ELEMENTS”)

    Out of the box…GeneratePress allows very intuitive things that many other themes (including my favorite, Genesis) don’t have. For example…the “SECTIONS” feature allows you to have content sections (card format layout) but doesn’t require a bloated pagebuilder (noob style) or hard coding (programmers only). Yes, it’s like their very own mini-pagebuilder and actually structured in a way that I think makes even more sense than pagebuilders.

    The fact that GeneratePress makes their “SECTIONS” modular is clever as heck. Think about the usual pagebuilder scenario. What’s the point of a pagebuilder? To allow non-coders to alter their content layout and design? To alter their content in the first place? It sounds like a great idea until beginners start to realize how much work it is to even build a simple page. So many boxes, fonts, colors, spacing, layouts…and SETTINGS TO MANAGE! And then what? What if you only wanted to edit one part? What if you wanted to make one of these sections available for some time and then make it hidden and then bring it back later?

    In many cases, those adjustments can’t be done. In other cases, it’s possible but messy as heck. I think GP’s “SECTIONS” feature gets it done in a much more organized way. You don’t have to get lost going through 5 different versions of your homepage and comparing their maze of settings to remember which one was the right one.

    And then there’s the “ELEMENTS” feature which allows you to easily customize layouts and page templates. It’s like a really simple (graphical) interface for hooks and filters. For those who don’t know…”hooks” refers to page location (above header, below title, footer, etc) and “filters” refers to pages (posts, pages, contact page, home page, etc).

    So let’s say you wanted to stick a countdown timer BELOW PRODUCT TITLE but only on SALE PRODUCT PAGES, or how about RANDOM X WIDGET placed ABOVE TOP MENU…how easy would that be? I’d bet you most themes wouldn’t be able to entertain all your random content-placement combinations. And you’d end up having to ask your programmer to do it (also wasting lots of time explaining how you want it). Well with GeneratePress, you can do that yourself. Tons of hooks and filters to choose from so you can control exactly what content goes where and on which pages. How cool is that?!

    So just step back and think about it. That’s 90% of what we ever really needed pagebuilders and programmers for! Pagebuilders were mostly there to make carded sections and manipulating content layout. Programmers were for hooking content and widgets to our desired locations. And now with GeneratePress, the average person can get that much more done without bloated pagebuilders or expensive programmers.

    Community and marketing

    As a small-time business owner, I absolutely hate marketing hype and products making outlandish claims. And especially for WordPress themes, I hate themes trying to accomplish every and whichever feature/design function out there. GeneratePress (and its community) maturely steers clear of that junk. The GeneratePress Facebook Community is really helpful and friendly should you ever have a question.

    It’s also used by not only newbies but also seasoned developers. The main developer (Tom/CANADA) is a one-man show who does everything and anything for his theme. You can tell he’s really passionate about it and has done well to make this one of the most complete WordPress theme/frameworks out there. Stable and reliable. No bugs. Seriously works better than the themes built by big development agencies charging an arm and leg for their “premium WordPress theme”.

    Just try GeneratePress, ok?

    Seriously, I urge you all to download GeneratePress and play with it. So clean and intuitive. Choose where you want to hook things, apply the filters you want. Build different page layouts, etc…all without bothering a programmer. Even if you ARE a programmer, GP makes life easier by allowing you to control many things with a logical (and SENSIBLE) UI. Less work for you in building the site, and less work for you supporting your client in the long run.

    If you ever want a theme that you can grow with forever, and has a knowledgeable community to draw advice from, you can stop looking at everything else and get GeneratePress. The free version works great and the premium version is so reasonably-priced (something like $40 for unlimited websites).

    GeneratePress WordPress theme

    Coming from Genesis

    If you didn’t already know, I’m a diehard Genesis user. I absolutely LOVE LOVE LOVE Genesis theme/framework. [Almost] all my critical sites are using it. For me, it’s the most comprehensive WordPress theme out there…tons of beautifully written-code with every hook and filter you could ever possibly want. Also backed by the most respected theme-community ever created…thousands of A-level coders using it to churn out beautiful super professional sites.

    …but….

    Yes, BUTTT…it just isn’t that user-friendly. I hate to say this but times have evolved and Genesis has not in some ways. Genesis came from an era where [mostly] only developers and “code-explorers” could edit themes. Want to make your header an extra 100px taller? Gotta muck around in CSS and throw in a PHP snippet. Want to add a widget to the footer? Same thing. Want to change the colors? Same thing. Quite often, the changes didn’t work and/or you broke your site design/function in the process.

    But the funny things was…if you were from that era, you never complained about how hard it was to do the task; you were simply overjoyed that it was even possible and that you didn’t have to run out and buy a new theme. In other words, you were grateful for the opportunity to get lost in the code. (Crazy, I know.)

    So what’s the problem with Genesis now?

    Websites are [expected to] be even more user-friendly now. It’s not enough to have editable themes. They need to be EASILY editable, and WITHOUT mucking in code. And for a short time, it seemed Genesis could do that. Edit some text and widgets here and there. Maybe change the layout, colors, font. But that’s about it. And it’s not enough. Today’s websites are so full of gadgets and widgets that Genesis feels like it’s not user-friendly at all. Every little change you want to make requires coding to some degree. It’s fantastic for developers who build sites straight from scratch. But a nightmare for those without any coding ability. What’s even tougher is that you can’t even test things! No simple settings to play and preview with. OUCH!

    The market was still wide open for user-friendly AND easily-customizable themes and that’s where GeneratePress enters the story.

  • Best WordPress Themes in 2026

    A list of my favorite WordPress themes and why! I also include my most hated themes(for better context). If you’re looking for pagebuilders, go here.

    WordPress “themes” (as they are called) are individual extensions that give your site a different look. Some themes are simple and come with one standard look right out of the box. Other themes have a few basic settings allowing you to change the colors or fonts. And then other themes are labyrinth of options, allowing you to change almost every little detail (colors, fonts, animations, even switching up layouts to make it look like an entire site altogether). Obviously: the more options, the more complicated.

    WordPress (PREMIUM) Themes & Frameworks:

    • Genesis Framework – the absolute best WordPress framework (used by respected developers). Best-coded, fast, and easy to use with many great themes.
    • GeneratePress – great performance theme and well supported. A cult favorite among coders and DIY’ers. I love their “elements” feature for replacing pagebuilders (but without the bloat of one).
    • Artisan Themes –  love the unique designs and ease of use of this little-known company. Incredible “modules” feature without the bloat of pagebuilders.
    • ElmaStudio.de – from Germany. If you love that European minimalist Bauhaus design, Ellen and Manuel’s work is incredible.
    • ThemeBeans – beautifully coded, lean, and sexy minimalist designs.
    • Marketer’s Delight – beautifully-coded theme for “internet marketers”. Highly recommended the better-known Thrive. Is this generation’s Thesis?
    • Thesis Theme – clumsy UI, tricky to customize (for beginners AND developers). Popular theme back in the day and still many loyal users are familiar with it.

    My personal recommendation:

    Premium themes cost money and while they aren’t always better than free themes, it’s usually the case. It’s no surprise that free themes tend to be simpler with fewer options while paid themes are fancier-looking with more customization options. The free themes don’t usually come with support and are made to help the theme developers market their paid themes. If anything, their feature sets tend to be castrated a bit to encourage you to upgrade.

    Paid themes have not only more features but also more support. As the years go by, these themes are also more likely to be updated to keep them compatible with newer servers, WordPress updates, and other plugins. And while not ALL paid themes are quality, they are a much safer bet for future-proofing your site. Updating themes takes a lot of work, so how do theme developers make money with only one look? Trends come and go, with users chasing a new “cool look” elsewhere the moment a theme gets too popular and is used everywhere.

    The worst theme developers, IMO, are the ones that stop supporting their old themes when creating new themes. The best theme developers use what is called “frameworks”. Instead of building a completely new theme and rewriting the code from scratch each time. They use the same base code and then change only the design. This was formerly known as “parent theme” (the main theme) and “child themes” (the customizations). But now the term has been changed to “framework” and “child themes”. If you’re going with a premium theme, try getting a framework or at least a paid theme that has many users and lots of ongoing development & support.

    WordPress (FREE / FREEMIUM) Themes:

    • GeneratePress – my 2nd favorite framework at the moment. Has a beautiful free version as well, and the premium version is only $59! Incredible support and thriving community of newbs and pros. Highly recommend this one!
    • Blocksy – awesome. Great coding, super fancy starter designs, awesome header/footer builder. Officially now a top player with big user base.
    • KadenceThemes – nice and sweet. They also have a Kadence Blocks plugin. I like their clean design vibe that doesn’t have that generic stock look.
    • Neve – nice designs and UI, all trendy features, nice cloud library, amazing customer support. Big company with resources to really support newbies.
    • Astra – very customizable free theme, lightweight and runs fast, good for those using pagebuilders. The most popular free theme at the moment. The only problem is many bugs, slow support, and auto-loads in their other plugins!
    • OceanWP – free starter theme, beautiful and comes with a pagebuilder. I like their area where you can granularly disable all scripts/styles (but I wish it had more explanation). Requires paid plugins to get full functionality. I personally dislike their aggressive pricing for every little add-on and it’s no surprise Astra is more popular. :/
    • WordPress default themes – yes, they look like every other theme out there but they aren’t bad. Nicely-coded, just personalize the look a bit and you’re all set!
    • ProSpeedTheme (coming soon) – hehehe 😉

    My personal recommendation:

    Free themes are rarely a good option for serious websites. You’ll always get to a place where you want a design change or feature that isn’t provided in the free theme. And now you’re stuck at the crossroads of deciding whether to install bloated plugins, custom-code this extra feature or migrate to a premium theme that does everything you want and more. At the very least…if you’re going with a free theme, pick one that has a “premium” version you can upgrade to.

    Be careful with overly minimal themes. Minimal may be fast, but that’s sometimes because it’s “unfinished”. There’s no point in choosing an unfinished theme that requires a dozen more plugins to really do the job, essentially nullifying all your speed savings.

    BAD (or mediocre) WordPress themes:

    • AVADA – bloated, slow, poorly-coded, many issues. The designs can appear incredible to beginner website owners but actually very gimmicky and generic-looking to professional designers.
    • Electro – crazy bloated! Don’t use it. Requires a lot of processing and many queries (1000+ compared to under 100 for other) even without anything on the page.
    • Envato theme market – lots of junk themes with a few goodies in between.
    • Flatsome – it’s not bad looking, just still too bloated. Sorry!
    • Jupiter X Theme – slow and bloated!
    • MyThemeShop – lots of generic mass-produced themes. Some are obvious ripoffs. Their latest “Schema” looks like the GeneratePress default child theme (which I think Astra ripped off as well). Even some of the showcase sites in their testimonials look very amateurish
    • ThemeForest – The7, BeTheme, Enfold, X. These are all the same junk as AVADA. While truly professional sites are working hard to cut down on non-essentials and cleaning up their sites more and more, these junk themes are piling on more and more features to be everything to everyone. They will always be a poor fit for your site for that reason. But yes, you can buy it for the sexy generic out-of-the-shelf look!
    • Qode – bloated!
    • Redux framework – anything with Redux framework.
    • Thrivethemes – I’m especially turned off by their gimmicky marketing that does so well with “internet marketers”. They’re not bad, but simply not how I would recommend serious internet marketers to build their sites. (FYI: just about everyone on the internet is an “internet marketer”.)
    • ZigZagPress – nice look, but not so nice coding. Or at least that’s what many programmers say.

    My personal recommendation:

    I think these themes are great if you’re just wanting to learn WordPress and play around with options. But realistically speaking, they are an absolute waste of time and money, orrrrr…there’s way better options out there. If you planning for a serious website and want to have thousands of users, you’ll soon throw these themes away and pick another. Why? They are slow, cumbersome, and have many compatibility issues with other plugins that you’ll need in the future as a website owner.

    Oh, and I’m not done yet. They are awfully difficult for professional developers to work with. I hang out with developers regularly and every day, they mention yet another “client that had an AVADA/X/DIVI theme”. And they all laugh because they know what the inside joke is. The funny thing is clients soon find out as well. The reason why they chose the theme in the first place was that it “looked cool”. But you soon realize the “cool look” isn’t cool at all, and is extremely generic, because you now look like a million other amateur sites with the same look. That theme was marketed to the masses for a reason.

    Still not done. The themes are also not that easy to use. They CLAIM to give you this amazing look out of the box but guess what, try to change anything or shift things around and you’ll see how hard it can get. Simple changes are ok but doing anything more than a minor change will require either a programmer or help from the developers or community. The developers will be slow to answer because guess what, they’re buried under thousands of other beginner requests and the community won’t be much help either because very few professional developers will be using these themes. So while they might be popular and have many users, they have many BEGINNERS users that won’t be much help to you.

    BUT WHAT ABOUT THEIR LOOK?! “But these themes look so cool!” you say. You can copy any look you want with any other framework, almost even without coding.

    What WordPress theme should you choose?

    TRUTH #1 – you need to go with a popular theme.

    Why? The true support for a theme comes from the community, not the official theme developers. The more popular it is, the more support you can find for it (written guides, video tutorials, etc). It’s easier to get free tips from people who’ve used it before and also easier to find professional developers who know how to work with it efficiently. There are also more 3rd-party extensions. And also continuing development for the theme to keep it alive, updated with trends, and compatible with future plugins. The theme keeps getting better and better with time when the community grows (and developers are rewarded for ongoing development).

    Going with some obscure theme from some unknown company will always cause you problems (no matter how much “support” the official theme company claims to offer). Nobody will know how to fix problems or make customizations. Developers will be unfamiliar with it and take twice as much time to make simple changes. Does this mean you should NEVER try a new theme or theme company? If you’re on an important production site, I wouldn’t take that chance.

    TRUTH #2 – you need to go with a framework.

    Frameworks allow theme developers to reuse functional code while staying flexible with design code. Aside from aesthetics, themes need to be coded for compatibility with plugins (shopping, multi-lingual), Google search engines, social media sharing, accessibility, WP customizer integration, DNS prefetch, and many other areas beyond my awareness. To re-code, this for every new theme would be time-consuming and probably overlooked!

    But if you’re going with a company that uses a framework, you can bet their themes will always be coded well and supported since they all share the same base code. You could be using one of their older themes but still, have the updated base code and maximum compatibility/security. Not only that but if you build your theme design of a framework, you’re free to update the framework as often as needed without worry that your design may break or lose compatibility one day. It’s an incredible idea!

    I never liked theme developers that keep jumping from one theme to another, cashing out each one for a short period before abandoning it to chase their next cash cow. This contributes to a wasteland of abandoned code…leaving a trail of vulnerable sites full of issues that other developers have to clean up. It’s unethical wasteful coding and cheating customers out of a more futureproof solution.

    TRUTH #3 – when in doubt, pick something more neutral.

    This is the hardest part. Many beginners see a billion different themes, each one super cool-looking in its own way and they no longer know what they or what their brand should be. When in doubt, remember that it’s about the content and not the theme. What text do you have, what images do you have? Where will your stuff go?

    Don’t waste your time trying to pick the coolest design and then later trying to stuff your content or even worse—create content to fit your design. There’s an even worse possibility than that, that the design is distract users from appreciating your content. That bold red theme looks great on the previews but throws in your content and now it feels like that red is all over the place, clashing with your images, and you get sick of it. The more exciting your content and logo, the more neutral your design can be (to let your content shine). And the more simple your content is, the bold your design can be. 

    Pick a theme that won’t bore you out so quickly. Strong colors get annoying after a while and become a branding dilemma later when you want to switch to another color. Unique layouts can also get boring when you want your site to just function like a normal site. Side-scrolling might be fun for artsy portfolio sites but not for daily blogs, shopping, or business when readers just want to get to your content!

    Why are some themes so slow?!

    Haven’t you noticed many themes on Envato, ThemeForest, or Code Canyon are slow as hell?

    Why do you think that is?

    It’s because they’re coded for newbies/non-coders. They load every CSS/JS library ever invented so that people don’t have to learn how to code.

    Think about it like this:

    • DEVELOPERS prefer to work on a blank sheet of paper…drawing up only what they need.
    • NEWBIES are different, they buy the whole store…buying every song on every CD even when they only like a few. And then they spend the rest of their lives trying to unload/prevent unwanted items from loading.

    It also helps A LOT to not have a pagebuilder. If all you need a pagebuilder for is just the homepage, you can custom-code it for like $300-1000. So worth the money. Design it in Elementor first if you want, then show a programmer and say “I want you to hard-code this”.

    We build so many custom themes/plugins in-house because of this. We want it to load ONLY what we need and nothing more. That’s why our sites break speed records. We have fancy WooCommerce sites loading in 200ms.

    Now maybe for smaller clients, they only have a few thousand dollars…not a big budget. That’s fine, pick a clean theme, and custom code the home page. and you should be able to get under 1 sec pretty easily with only a few thousand spent.