What You Need To Know About WordPress Image File Size And Compression

Here are a few tips for you about using/uploading images to your WordPress site.

First, web browsers do not render 300 dpi, so for all you photo fanatics out there, stop uploading uncompressed 300 dpi images to your media library. A browser renders only 72 dpi regardless of the resolution of your images. Yep, I know it reduces image quality, but only to you! Remember, your perception is your reality. The person viewing your image online doesn’t care whether it’s 300 or 72. They just want to see the image. Sure, that doesn’t help photographers or art galleries much, so you’ll just need to go old school and FedEx your printed books instead, if you want your intended audience to see the full resolution image.

Second, reducing the dpi also reduces the file size. If you have 300 dots per in, then reducing it to 72 dpi is only going to help your website visitors download your images faster, especially over mobile phones. Remember that we all have finite mobile bandwidth, except those who pay for unlimited. That means you are burning up your website visitors mobile bandwidth allotment (if not on wifi) by not compressing your images. If I were looking at your photos, then waiting for them to download on my phone and it’s not fast, I would leave your site and go somewhere else. No one wants to wait for your huge images to download on their phone.

Third, you can certainly reduce the dpi and that will compress an image, but remember the physical landscape of the image itself should only be sized to what you need to display on the web. That’s probably around 1800 pixels. I’ve seen some clients upload photos that are over 3000 pixles wide! Resizing your images BEFORE you upload to your media library is important. Fortunately, WordPress now provides a resizing tool inside the Edit feature of your WordPress Media Library, so you can resize photos down. Note: Never resize photos up or you will literally be stretching the photo like a rubber band. That will stretch the pixels in the image and your image will look like crap. You always downsize. Never upsize!

Fourth, you can use a tool like WP Smush, which is a freemium plugin, to compress your images to the best possible size and resolution. When you install WP Smush, you can compresses up to 50 images at a time with the free version. You’ll have to keep clicking if you have more images to compress. It will also not compress images over 1MB, so to process all images and images over 1MB, you’ll have to upgrade to the paid version.

Fifth (and maybe it should have been first), under Settings > Media, you can set the sizes for Large, Small, and Thumbnail images when you upload them. WordPress will retain the original file, but also copy and store resized versions to select for posts/pages. While this does not “compress” the image, it does help with managing the sizes you want to set for your site.

Sixth, remember that PNG is for transparency. You might use PNG for a logo, a small icon, or some other small graphic that may have a special use case, like a drop shadow. Don’t use PNG for large photographic images. It adds data to the image and therefore increases the file size. If you have a photo, always used JPG. There’s no reason to use PNG for any photo.

Lastly, use a CDN (content delivery network) to speed up the delivery of images on your website. With plugins like W3 Total Cache or Super Cache, you can send your website’s image to servers around the globe for storage and retrieval at the “edge” of major cities, so that they are served quickly to your intended audience. If you’re using JetPack by Automattic, you can turn on Photon, which is powered by Automattic. Photo is the CDN employed by WordPress.com, so you can leverage Automattic resources to store your photos on servers around the world. The caveat here is that it most likely only store and serve images uploaded to your media library. If you have images in your theme’s folder, they may be ignored by whatever solution you use. You want to choose a theme that doesn’t store images in the theme folder, or they’ll just be forgotten. The’ll then show up on a Google Page Speed Insights report telling you they need to be compressed, but WP Smush only compresses images in your media library and not extraneous images in theme folders.

If you need additional custom image sizes, you can use a plugin like Simple Image Sizes to create additional settings for you to select when publishing posts/pages: https://wordpress.org/plugins/simple-image-sizes/

Here’s the link to download WP Smush:
https://wordpress.org/plugins/wp-smushit/

Note: The Featured Image above is set to  624 KB and 1800 × 916. That means, it will size for most large screens and will automatically resize in mobile responsive for smaller screens. Compression will help the image load quickly on mobile devices.

CloudFlare and free Flexible SSL on WP Engine

For the past three months, I’ve tried my best not to have a mini meltdown over the fact that a number of my domains in a WordPress multisite network using Cloudflare’s free Universal SSL would not serve up a green padlock over HTTPS. When I first heard Cloudflare was offering free Universal SSL, I was very excited to take advantage of it. For some reason, it just wouldn’t work and for months, I couldn’t figure out why.

Now that Google is using HTTPS as a (minor) ranking signal, I want to make sure all my domains are using SSL. But even after enabling Universal SSL on Cloudflare for each domain, the one’s using the new service were void of the green padlock that tells the world each domain in my little network could be trusted. After struggling with it a bit to no avail, I thought I’d better buy a three site SSL certificate from my preferred domain name seller, Namecheap.com, for three of my most important domains. A temporary fix for 3 domains in an 11 domain multisite network.

After WP Engine installed the Commodo certificate for me, all three sites were instantly padlocked after. Since the others were not as much of a priority, I continued to ignore no green padlocks on them, but it just kept on nagging at me they weren’t locked.

It’s in my nature to incessantly focus on problems until resolved. While others might not care as much as I do or they pass the buck to someone else, I always go to the end of the earth (despite my better judgment) to figure it out myself. I don’t know why I’m like this. It’s a blessing in some ways, because I actually get things done–no matter what. It’s a curse in others, because I do it all myself and am so focused that it can take hours and hours of painstaking work to figure out the solution. In that, I’ve let the world go by while I’m trying to solve a problem I should pay someone to solve for me. But, then I’d have to give them all the passwords and account access to both my network install, Cloudflare, and WP Engine. Without a clear path to resolution, who knows how many hours someone could take to figure it out. And, who knows if you’re even talking to the right person who can figure it out.

Night after night, I would go back through my Cloudflare install and make sure all domains were set to Flexible SSL. Then I’d dump my cache at Cloudflare and in my WordPress WP Engine network admin. I tried a various plugins to see if the URLs did would not redirect and cause a loop. Nothing worked.

I made sure to get the Cloudflare plugin to connect my multisite network to the service, but I was getting some errors and I needed to research how to make sure the Cloudflare plugin connected via their API to my account. I turned off my Cloudflare service for all the domains that had no green padlocks. Of course, the API wouldn’t connect if they were off. I turned them all back on and made sure they were all set to Flexible SSL again. Once I solved that, I thought: “Great! Problem solved. My padlocks should be green!”

Nope, that didn’t happen.

After some lengthy discussions with WP Engine support on this matter, I learned I was getting a lot of mixed content and insecure content warnings on some of my domains in the network. Why? Because somehow my URLs had gotten rewritten either in the original migration from Linode to WP Engine or by some process or plugin. I’ll never know how that happened. Two of my sites were missing all of their content and their URLs were rewritten incorrectly for posts and pages in the database as “netmix-co.netmix.co” instead of “primarydomain.com/sitename.

Tasked with figuring out the underlying problem, I went in and performed search and replace surgery on all my domains using phpMyAdmin. I was able to go into my posts and post meta tables for each site in the network and find the incorrect rewritten paths. I simply replaced the incorrect ones with the correct domain names of each site in the network. That solved a ton of insecure content warnings and brought back all my missing content while also fixing redirection issues.

Now that I’d solved a number of problems using search and replace, some were still lingering. My JavaScript console reported affiliate network URLs I was using from organizations like Shareasale were http, not https. Fortunately, Shareasale provides secure URLs, but other affiliate partners did not. I had to remove their banner codes until they update their URLs to https.

Having done all this, I was pretty confident I’d see the green padlocks, but when I checked whynopadlock.com, all the sites with Cloudflare Flexible SSL turned on were hard redirecting to http. I thought, “geez, now how do I solve this?”

Earlier that week, WP Engine had helped write some html post processing logic that is set in my multi-site’s WP Engine admin area. Could that be the culprit? I removed those rules to see if anything changed.

Nope, that didn’t work either.

In the middle of all of this, let’s throw in the fact that WP Engine had to move my web services to another IP address last week after their provider was hit with a DDOS attack. I was tasked with updating all 11 sites A Records in the network. I did and learned that one of my sites had no DNS records at all (Oy!), but was still resolving. Go figure.

I went back to WP Engine again to explain my dilemma again. Fortunately, I got in at 3 minutes to 9 pm Eastern time, just minutes before chat support closed up for the night. I gave one of WP Engine’s techs, Brian F., all the earlier detail. His head must have been spinning. But, he finally figured out that they had to manually force https on their end to enable the green padlock on all sites in my network.

Finally, it was over. After months of starts and stops and weeks of going back to it, getting distracted by family stuff and client work, I was able to sit down and go through everything once and for all. Problem solved.

While all the abovementioned things I did were important, Cloudflare did tell me in one response they were seeing WP Engine had the ability to do something on their end to fix this, but they didn’t say exactly what that was. With Universal SSL, WP Engine does not have to install a certificate. It’s a one-way call to WP Engine who do not have to confirm the request with an installed cert. What they didn’t say was that WP Engine has to manually force HTTPS. It wasn’t until Brian F. figured this out that the curse was finally over.

I did not use a Force HTTPS plugin, because I think WP Engine disallows a few of them. I don’t know that they would have worked anyway. I’m was happy to have WP Engine manually write that rule every for this instance and in the future. At any rate, the problem is resolved. On to the next issue.

I hope this helps someone not have to go through weeks of pain like I did to finally figure out that all WP Engine had to do was force HTTPS manually. That’s it. Problem solved.

Fixing Insecure Content

For the past few weeks, I’ve been suffering from what is called “insecure” or “mixed content” issues on my WordPress multisite network, which I’m hosting over at WP Engine. The goal has been to use the new free Flexible SSL from CloudFlare on a number of sites in my multisite, but leaving three of those sites as Full a as designated in CloudFlare, because I purchased a 3-domain certificate from Commodo, through my domain name registrar, NameCheap.

Somehow, someway, something did a search and replace across my entire multisite and changed the domain from the origin domain to “netmix-co.netmix.co.” The network’s primary site is netmix.co, but I don’t use it for anything. After contacting WP Engine, they pointed out the issue with the URLs rewriting. I’m not sure if it was one of the insecure content plugins that are freely downloadable or JetPack’s Photon service, because not only was I in JavaScript console rewritten primary URLs for post content and images, I was also seeing URls from wp.com, which after turning off JetPack, those URLs disappeared – despite being served over https anyway.

It was a very strange situation, but after doing a search and replace on post and post meta in my databases, I was able to fix all my URLs and content. There was one more thing I didn’t know. An old plugin called Bad Behavior I used to use has an “http headers” table. There I found some of my domains in the multisite with a ton of incorrect URLs rewritten in the http headers table. I decided to fix those with a search and replace across all sites with the issue of rewritten URLs and that ended up clearing more JavaScript console errors.

While I’ve done all of this…I’m still not seeing my free, Flexible SSL locks on the site in the network that are SSL enabled at CloudFlare. I’m not sure if it’s going to take 24-hours to possibly resolve all those mixed content errors, which will finally unshackle me from a plain grey file looking icon up there in the URL bar of some sites in my network (not this one, as this one has a paid cert from Commodo).

What I’m working on

  Last night I clocked out at 1 am after working on a WordPress DNS setup for Comfort Theory, trying to figure out why my Flexible SSL locks from CloudFlare aren’t fully green on my WordPress multisite network, and figuring out how to get a custom URL for another client, Youth Mission Co here in Asheville.

On my multisite, I’m getting a bunch of mixed content errors on my Digital Strategy Works domain, despite the Chrome JavaScript console showing me that all error URLs start with https! Sigh. More research needed.
Today was quite busy too. Between caring for Hudson, our 13-month old, all morning while my wife continues to work on her health, fitting in the configuration of Modern Tribes’s Event Calendar ticketing system with Woo Commerce checkout and PayPal IPN for CQResults.com, as well as having a late afternoon dinner with wife and son, the day is still not over.
I just launched a new coupon campaign for All In One SEO Pack Pro and cleared some social media posts tonight in Sprout Social and I still haven’t figured out my issue with my multisite. I have yet to run by another client’s restaurant, East Village Grille, to show him his new restaurant menu system I implemented using OpenMenu.com.

Ah ha! I just now finished the battle with YouTube on merging two channels. Learning something new everyday! Verification was a little difficult as well, but enduring leads to success! Just gotta work the issues.

I’ll probably be in bed tonight again at 1 am.

Getting back to the basics

wordpress_desktop_app_webiste_screenshot.png

Now that WordPress has released its new desktop app for Mac, it incentivizes lazy bloggers like myself to keep the app open and do what we’re supposed to be doing – blogging.

The desktop app is pretty sweet and much faster than logging into your WordPress admin. Since it’s always there are the ready and you can switch sites easily (as long as you’ve connected all your self-hosted sites using WordPress.com username and password connected through JetPack), this new app for both Mac, which is what I’m using, and PC should increase your blogging output.

It’s a New Year and with this great new tool from WordPress, I should be able to churn out my thoughts on my blog, before I publish to a Facebook feed or a Twitter status update.

I’m going to try and be more dilligent about using the new WordPress desktop app to increase my blogging output, for sure.

MetroTV Reel from 2000 to 2002

15-years after my stint as Senior Producer at MetroTV in New York City, I’ve finally uploaded and posted my old reel, which features Rachel Perry, a popular TV host who started her early career at MetroTV and went on to work for many major entertainment networks. In this video, you’ll see an interview with Meres, the curator of 5ptz, a graffiti art space in Long Island City, Queens. Rachel also hosts The New York Music Rundown from the original Halcyon space on Smith Street in Brooklyn. There are also interviews with Nas, Brian McKnight, and the Roots and appearances by Groove Armada, Paul Van Dyk, Boy George, and Deep Dish. My good friend, DJ Madsol Desar was on the wheels, as well.

I really enjoyed my early stint producing television programming and probably should have stuck with it. After my layoff from MetroTV due to reduction in staff at Cablevision after 9/11, it was difficult to find a job in New York City. I ended up focusing on streaming media and worked for two big banks and MLB Advanced Media, before landing a gig developing a contextual commerce music platform for StarStyle.

This video is really a throwback and reminds me of one the best jobs I ever had in New York City. I enjoyed using my music connections to book artists on The Daily Beat or feature my friends, like DJ Madsol Desar, on one of the show. The New York Music Rundown ended up winning a Communicator Award for Best New Cable Product.

Let me know what you think of this video by leaving a comment below.

Asheville House Music Society Radio Show on AshevilleFM.org

On February 8, the new Asheville House Music Society Radio show launched on Asheville, NC community radio station, AshevilleFM.org. The shows airs at Midnight each Saturday and into Sunday morning until 2 am. Listen live on 103.3 LP-FM on the radio dial or tune-in live on AshevilleFM.org or via the TuneIn app for iOS and Android devices.

Read more

SNL video featuring Kevin Hart about gentrification of Bushwick, Brooklyn

Loved this video with SNL guest and comedian, Kevin Hart, mocking the gentrification of Bushwick, Brooklyn.

Favorite lines:

  • “Said the garlic truffle was a must try.”
  • “Did they have any cheeses. What else are you gonna pair wine with…air?”
  • “Word, acting like somebody put gluten in your muffin or something.”

This is absolutely hilarious!

My Christmas story 2014 about a boy named Hudson

Missy & Tony with Baby Hudson
Missy & Tony with Baby Hudson

On this Christmas Day 2014, I am a father at 48-years of age.

My wife and I started trying to have kids in 2007, but we were unsuccessful. We kept at it, even trying the science route of fertility treatments for a while. The toxins in the treatments hit Missy hard. She has a hard time dealing with toxins in medication as a result of a condition related to a prior mold exposure. We decided it was time to look into adoption and sought out an agency in Raleigh, NC to help us start our search.

Since we began our search, we’ve moved a few times. In the world of adoption, with every move comes the necessity of a new home study and updated criminal background checks–county, state, and federal. The adoption process is extremely thorough and meant to weed out couples that may have colorful pasts.

After spending two months in Ecuador over the winter, we settled into our new apartment in Asheville, NC. We thought it was important to start marketing ourselves locally, so we printed out postcard size flyers and tacked them up in coffee shops and cafés around the city.  We also re-engaged on the web, updating our Facebook Open Adoption page, our MissyandTony.com website, and our agency adoption page. Those efforts paid off when we were discovered by a local adoption attorney here in Asheville, Christopher Craig (of Craig Associates). Fortuitously, Chris connected with a local birth mother who was almost to term at 8-months at an adoption workshop held at the Pack Library in the city center.

Chris set up a meeting with the birth mom and she selected us! It was then 3 short weeks attending ultrasounds and quickly getting to know her and her own parents, who were super supportive of her on this journey. On December 7 at 2:42 am, Missy was with the birth mother in the delivery room and witnessed the birth of our son. Just like that, we became parents almost overnight.

It was definitely not as simple as it sounds. There were some legal hurdles we needed to clear up between birth mom and a prior relationship, as well as an issue the hospital’s risk management department wanted us to resolve. The week of the 7th was a busy time getting those details taken care of from our tiny overnight room in the NICU at Mission Hospital, also here in Asheville. Little Hudson David Antonio Zeoli needed just a bit of extra care, because he wasn’t feeling well after the delivery. It was nothing serious. The hospital was just being cautious. That day, our lives changed forever.

It’s an odd feeling going through the adoption process. I think adoption, while common, is not necessarily top of mind for most people who can conceive. It’s a different kind of waiting. When you’re in a search for an adoptive child, it can get monotonous and it can become a seemingly never-ending journey. There’s all the calls with the agency for guidance, education, and support. Then there’s the marketing of yourselves and your story to prospective birth moms. Of course, there’s the hours of filling out paperwork and more paperwork to go through the red tape that is there for the child’s safety, but sometimes seems so redundant. Lastly, there’s the waiting for something…anything to happen. It’s hit or miss. You might connect with a birth mother who isn’t ready. Or, in some cases, you are contacted by people trying to sell babies illegally and women who aren’t pregnant with mental health issues that can’t control their behavior. You have to be able to read between the lines. If you’ve never gone through the adoption process, it is a challenge to recognize when something is real or when it’s not.

I never, ever would have thought I would be here adopting a child at this point in my life. But somehow, this is where I am. I’m doing something I never, ever thought I’d do. I’m not going to say that I was 100% on board with adoption in the first place. I wasn’t totally sold on the idea, but I went along with it, because it was important to Missy and we really did need to start our family. I’d been building a business and knew how important it was to stay engaged in and relevant in my field. Looking for a child seemed like a distant possibility. Really? Someone is going to give us their child? Just like that? OK.

It’s like waiting for that trip to Disney World your parents had promised you after they’d postponed it a few years in a row. Sure, Disney World seemed like a great place, but with each passing year it felt so far away–like it was never going to happen.  And to get there, you couldn’t go on your own. You needed someone to help you. As the waiting game commenced, there were times it just seemed like the Disney trip might never come. You began to treat waiting like it was something you wanted to look forward to, but without firm plans, you shift it back of mind, hoping for the day, but never fully investing in the idea.

Fortunately, we finally made it to the proverbial Disney World! Like all adoptions, it took some time. Weeks into months and months into years. But, now we are adoptive parents to this little amazing young man who we call, Hudson.

Our child, Hudson
Hudson David Antonio Zeoli | Born 12/7

He’s here. After all the waiting and wishing, Missy and I finally get to realize what comes a little easier to so many people I’ve known over the years who were able to have kids. Many of my friends have kids graduating from college or in the workforce. Time went by. Not so fast, but just as fast as time goes by. Tick-tock, tick-tock, and the calendar flips to the next day after the last.  Another year goes by and you wonder, “where did the time go?” You can’t really grasp what you’re not experiencing, because it’s hard to know what parenting is like unless you’re a parent.

BOOM! Now, we’re parents. Whoa! The whole world just stopped on a dime when someone said, “here you go…here’s your son.” We’ve arrived and are embracing this little man with all the love we have to give. With our hearts, minds, and spirit. We know that everyday he’s with us is a gift of immeasurable proportions. For this gift, we are incredibly grateful. It seems so surreal. We know adoptions happen everyday, but when they happen to you, it’s an experience one cannot really explain. Someone has made a plan for you to adopt their child and you begin a new journey without that same 9-months others have to plan. I’m now on my first ride at Disney World aka the “Interstellar Galactic World of the Marvelous (and Gassy) Hudson David Antonio Zeoli.” It’s just as fun now as it was back then.

I don’t much believe in Christmas miracles. I’m a pragmatist. I know Christmas is a man-made holiday that has become the most commercial holiday of them all. We make up these things to make sense of the world and create days to stop and celebrate for celebration’s sake. I know we had done the work to put ourselves in a place where we would be found, and we were. Yes, lightning does strike and people say magic does happen. I’m going to say that the universe felt the energy from our hearts and found a way for all that love to bring Hudson to us. The spirit of many warm and kind people looking out for us – all aligned for the same common purpose – to give Hudson an opportunity he might not have otherwise had out of the gate, most likely contributed to our celebration today.

Image of Tony Zeoli with his son, Hudson
Tony Zeoli & his son, Hudson

On this Christmas Day, I am so grateful for my wife and so grateful for my son. I now have a family to call my own. Something many men aspire to have, because it’s innate in all of us to procreate, sustain and propel human existence. While it did not happen naturally, it happened the way it was meant to. We were given the gift of caring for a child who did not come from us, but is now with us forever. He is us and we are him, brought together as one family unit through the love, support, and recognition of others.

While I have faith there is a higher power, I find that power one of energy connecting everyone’s worlds. If that is God in some people’s minds, then God is the one to thank for providing the energy and connective tissue to bring this story to a wonderful close.

Thank you for reading. Good night and Merry Christmas.