Blog

  • How to Serve WebP Images in WordPress (Without Touching Your Originals)

    How to Serve WebP Images in WordPress (Without Touching Your Originals)

    Run your site through PageSpeed Insights. Chances are, somewhere in the results, you will see the line: “Serve images in next-gen formats.” It has probably been there for a while. You have probably ignored it.

    That is fair. The suggestion sounds simple, but the actual work never felt safe. Most WebP plugins want to rewrite your URLs, replace your originals, or route your images through someone else’s server. Any of those can break things in ways that are hard to undo — a CDN stops serving the right file, an old embed points at nothing, a plugin you forgot about caches the wrong URL. So you leave the suggestion there and move on.

    But the cost of ignoring it adds up. A JPEG from 2024 weighs 200–800 KB. A site with a hundred images is shipping tens of megabytes in a format from 1992. WebP cuts 25–35% off that weight with no visible quality loss, and every major browser has supported it for years. That is real bandwidth, real load time, and a real Core Web Vitals score sitting on the table.

    ImageCraft handles the conversion without any of the risk. It creates a WebP copy beside each original — photo.jpg gets a photo.jpg.webp in the same folder. Your original files stay exactly where they are, named exactly what they are named, with exactly the same URLs. On your public pages, a standard <picture> element lets the browser pick the WebP when it can, and the original when it can’t. Turn it off, and every page goes back to how it was.

    TL;DR

    • ImageCraft generates WebP copies of your images and serves them to browsers that support the format. Originals are the automatic fallback.
    • Your original files are never touched. The WebP copies sit beside them as sidecar files (photo.jpg.webp). Remove them anytime, and you are back to where you started.
    • Setup: go to ImageCraft → Performance → Next-gen Formats, turn on WebP and Serve next-gen images, then convert images from the Compress screen.
    • Delivery uses the HTML <picture> element. The browser picks the format. No .htaccess rules, no server config, no rewrite tricks.
    • Typical savings: 25–35% smaller files, no visible quality loss.
    • Free includes manual and bulk WebP conversion plus <picture> delivery. Pro adds AVIF, auto-convert on upload, and no daily limit.
    • It is off by default. Updating the plugin changes nothing until you turn it on.

    Why your images are bigger than they need to be

    JPEG is from 1992. PNG is from 1996. Both do their jobs, but their compression is showing its age. A 400 KB JPEG becomes a 260–300 KB WebP. A 1.2 MB PNG with transparency can drop to 400–600 KB. Same picture, same quality, fewer bytes.

    On a single blog post with six images, that saves 500 KB to 1 MB. On a WooCommerce category page with twenty thumbnails, you save several megabytes. Multiply that by your monthly traffic and you are talking about gigabytes of bandwidth — bandwidth your visitors are paying for with their time, and you might be paying for with your hosting bill.

    Google cares. Core Web Vitals measure how fast your largest visible content loads — Largest Contentful Paint, or LCP. On most pages, that content is an image. Smaller image, faster LCP, better search ranking. Google has been saying this since 2021, and they are the ones who built WebP in the first place.

    Browser support is not a concern anymore. Safari was the last holdout. It added WebP in 2022. As of mid-2026, over 97% of web traffic comes from browsers that handle WebP. The <picture> fallback covers the rest, so no visitor ever sees a broken image.

    How other plugins do it (and why you hesitated)

    If you have looked into WebP before, you probably ran into one of these approaches and thought “maybe later.”

    Cloud services send your images to someone else’s server, convert them there, and serve them back — sometimes from a CDN, sometimes as a replacement in your uploads folder. The conversion is fast, but your images pass through a third party. You pay per image or per month. And if that service disappears or has a bad day, your images are part of the problem.

    Rewrite plugins generate WebP files on your server, then use .htaccess or Nginx rules to swap the file the browser actually receives. When your server setup is standard, this works. When it is not — a reverse proxy, a CDN that ignores rewrite rules, a managed host with locked config — the swap silently fails. Your visitor gets the old JPEG, you think they are getting WebP, and nobody knows until you wonder why your scores haven’t changed.

    Replace-in-place plugins convert your originals directly. The JPEG becomes a WebP. This is efficient, but it is also permanent. If another plugin, a theme, or a CDN still expects the old file at the old URL, things break. And if you want to go back, you need a backup — if you made one.

    Each of these works for some people. But each asks you to trust something: a third party, a server config, or the idea that you will never want the original back. That trust is why a lot of people never flip the switch.

    How ImageCraft does it differently

    ImageCraft does not replace anything, rewrite anything, or send anything to an external server.

    Sidecar files

    When you convert an image, ImageCraft reads the original and writes a WebP version next to it. If the original is wp-content/uploads/2025/06/photo.jpg, the WebP is wp-content/uploads/2025/06/photo.jpg.webp. Same folder. Predictable name. It does this for the full-size image and for every size WordPress generated — thumbnails, medium, large, all of them.

    Your original file is not renamed. Not moved. Not deleted. Not re-encoded. The Media Library entry does not change. The URL does not change. Open your uploads folder and you see the same files as before, plus the .webp files sitting beside them.

    <picture> delivery

    On your public pages, ImageCraft wraps each <img> in a <picture> element:

    <!-- What your page normally outputs -->
    <img src="photo.jpg" alt="A sunrise over the mountains">
    
    <!-- What ImageCraft turns it into -->
    <picture>
      <source type="image/webp" srcset="photo.jpg.webp">
      <img src="photo.jpg" alt="A sunrise over the mountains">
    </picture>

    The browser reads this top to bottom. If it knows WebP, it grabs the <source>. If it doesn’t, it grabs the <img>. That is how the <picture> element was designed to work — standard HTML, not a hack. No JavaScript. No server-side browser sniffing. No .htaccess. It works behind any CDN, with any caching plugin, on any host.

    Never-bigger guard

    WebP does not always win. A tiny PNG or an already-optimized file can sometimes produce a WebP that is actually larger. ImageCraft checks: if the WebP is not smaller than the original, it throws it away and moves on. You never serve a file that is worse than what you had.

    One-click cleanup

    Every conversion is tracked in the image’s metadata. If you ever want to remove all the WebP files — all of them, at once — there is a Clean button. It removes the sidecar files and the metadata. Your originals, again, are not touched.

    Setup: turn it on, convert your library

    You do this once.

    1. Install or update ImageCraft from the WordPress plugin directory.
    2. Go to ImageCraft → Performance → Next-gen Formats.
    3. Turn on WebP. This tells ImageCraft you want to create WebP copies. It does not convert anything yet.
    4. Turn on Serve next-gen images. This enables the <picture> delivery on your public pages.
    5. Click save.

    That is it. Now you can start converting.

    If the toggle says “Not supported by server”: your host does not have the PHP extensions needed to create WebP files (Imagick with WebP support, or GD with imagewebp). Most modern WordPress hosts have this out of the box. If yours does not, contact them — it is usually a one-line configuration change on their side.

    Converting images to WebP

    From the Compress screen. Go to ImageCraft → Performance. Your images are listed with sizes and status. Select the ones you want and click Convert Selected. ImageCraft creates the WebP sidecar for each image and its sizes. Everything runs on your server. No files go anywhere.

    From the media modal. Open any image in the WordPress media modal — from the Media Library or from inside a post. The ImageCraft panel has a Convert button alongside Compress and Rename. One click, one image, done.

    Both paths do the same thing. The Compress screen is better for working through a backlog. The media modal is better when you are looking at a specific image right now.

    How your visitors get the smaller files

    Once an image has a WebP sidecar and delivery is on, there is nothing else to do. ImageCraft wraps each matching <img> in a <picture> element. The browser picks the smaller file. The original is always there as a fallback.

    • Only converted images get wrapped. If you have 500 images and you converted 200 of them, only those 200 get the <picture> treatment. The other 300 show up exactly as before.
    • It does not run in wp-admin. Your editor, your Media Library, your admin screens all show the originals. The WebP swap is for visitors only.
    • Caching plugins just work. The <picture> HTML caches like any other markup. WP Super Cache, W3 Total Cache, LiteSpeed, WP Rocket — no special config.
    • CDNs just work. The browser decides the format, not the server. No CDN-side rules needed.

    Bulk convert: do the whole library at once

    One at a time is fine for a handful of photos. If you have hundreds, you want the bulk route.

    ImageCraft Compress screen with the Convert Selected button highlighted and several images selected

    1. Go to ImageCraft → Performance (the Compress screen).
    2. A scan shows how many images can be converted and how many already have been.
    3. Select what you want, or hit Select All.
    4. Click Convert Selected.

    The batch runs in the background with a progress bar. You can close the browser and come back later — the job keeps going. Images already converted are skipped. Images where the WebP would be larger are skipped too.

    How long does it take? Depends on your server and the number of images. On a typical shared host, roughly 1–3 seconds per image. A 500-image library takes maybe 10–25 minutes. You are only doing this once.

    Tip: If you already compressed your images with ImageCraft, the WebP conversion works from the compressed files. Compression reduces the image data — strips metadata, optimizes encoding. WebP uses a more efficient format on top of that. The savings stack.

    Will this slow down my site?

    The opposite. Your pages will load faster. The conversion is a one-time job. Once a WebP sidecar exists, it is just a file on disk. Serving it adds nothing to your page load — the <picture> wrapper is built once when WordPress renders the page, and after that it is static HTML.

    The files themselves are smaller, so every image loads faster. Pages with lots of images — blog archives, product category pages, portfolio grids — see the biggest difference, because the savings stack across every image in the layout.

    What about AVIF?

    AVIF goes further than WebP. It usually produces files 20–30% smaller than WebP, which means 40–50% smaller than the original JPEG. Chrome, Firefox, and Safari all support it now, though not as universally as WebP yet.

    ImageCraft handles AVIF the same way — sidecar files, <picture> delivery, never-bigger guard, one-click cleanup. The <picture> element offers AVIF first, then WebP, then the original. The browser picks the best it can handle.

    The catch is on the server side. AVIF encoding needs either PHP 8.1+ with GD’s imageavif(), or Imagick with an AVIF delegate. A lot of WordPress hosts do not have this yet. If yours does not, ImageCraft says “Not supported by server” on the AVIF toggle — no guessing, no cryptic error.

    AVIF is a Pro feature. If your server supports it, Pro unlocks the toggle.

    Free vs Pro

    FreePro
    WebP conversionManual single + bulkManual + auto on upload
    WebP deliveryYesYes
    AVIFYes (where server supports it)
    Daily limit50 actions / 24 hours (shared with compression and alt text)Unlimited
    Auto-convert on uploadYes

    Frequently asked questions

    Does this change my original images?

    No. Your originals are never modified, renamed, or deleted. The WebP files are separate copies sitting next to them. Turn the feature off and your pages serve the originals as if nothing happened.

    What if I turn off delivery?

    The <picture> wrappers disappear from your pages. Every <img> renders as it did before. The WebP files stay on disk but nothing uses them.

    Can I remove all the WebP files at once?

    Yes. The Clean button removes every sidecar file and its tracking metadata. Your originals stay.

    Does it work with my CDN?

    Yes. The browser picks the format using the <picture> element — the server and CDN are not involved in that decision. No CDN configuration needed.

    Does it work with caching plugins?

    Yes. The <picture> HTML is page-level markup, cached like everything else. No special setup.

    Will old browsers see broken images?

    No. A browser that does not understand <picture> ignores it and loads the <img> inside. A browser that understands <picture> but not WebP skips the <source> and loads the <img>. Either way, the visitor sees an image.

    Is the conversion done locally?

    Yes. Everything runs on your WordPress server using PHP’s image libraries — Imagick or GD. Nothing is sent to an external service.

    How much disk space do the WebP files use?

    Less than the originals they were made from. Worst case, your uploads folder grows by roughly 65–75% of the originals’ combined size. For most sites that is a few hundred MB.

    I already compressed my images. Should I also do WebP?

    Yes. They work together. Compression reduces the image data. WebP uses a more efficient format to encode it. You get both savings stacked.

    Does this help my SEO?

    Yes. Smaller images load faster, which improves Largest Contentful Paint — a direct Google ranking signal. Your alt text, dimensions, and other image attributes are unaffected.

    Do I need an API key for this?

    No. WebP conversion has nothing to do with the AI features. You can use ImageCraft purely for WebP without ever adding a key.

    I updated the plugin — did anything change on my site?

    No. Next-gen Formats is off by default. Nothing changes until you turn it on.

    Get started

    You have probably seen “Serve images in next-gen formats” on your PageSpeed report more than once. The reason it stays there, for most sites, is not that WebP is complicated. It is that the path to get there felt like it might break something.

    ImageCraft takes the risk out of it. Your originals never move. WebP copies sit beside them, and a standard <picture> element lets the browser pick the smaller file. No URL changes, no server rules, no third-party service. Turn it off and your site is exactly what it was before.

    Open ImageCraft → Performance → Next-gen Formats, turn on WebP and Serve next-gen images, save, then go to the Compress screen and bulk-convert your library. Five minutes, and every image on your site gets lighter without a single original being touched.

    Ready to serve smaller, faster images? Get ImageCraft →

  • How to Hide Prices in WooCommerce Until Login (Free, Step by Step)

    How to Hide Prices in WooCommerce Until Login (Free, Step by Step)

    Many B2B and wholesale stores don’t want the public to see their prices. Maybe your wholesale prices are private. Maybe you only want approved trade buyers to order. Either way, the goal is the same: hide the price and the “add to cart” button until a buyer logs in.

    WooCommerce can’t do this on its own. Every product shows a public price and a public buy button by default. So you need to add a gate: hide prices from visitors, let businesses apply for a trade account, approve the ones you want, and give approved buyers their wholesale pricing.

    This guide shows you how to hide prices in WooCommerce until login — step by step, using the free B2B Suite plugin. You don’t need Pro for any of it.

    TL;DR

    • WooCommerce shows all prices in public by default. To hide them, go to B2B Suite → Settings → General and turn on “Hide prices from people who aren’t logged in.”
    • Also tick “Also hide the add-to-cart button” so visitors can’t order at a price they never saw. This is WooCommerce catalog mode.
    • Prices are hidden everywhere — shop pages, search results, the product API, and the structured data search engines read. Not just the shop page.
    • Turn on “Let businesses apply for a trade account,” paste the registration shortcode [smb2b_registration] on a page, and choose which group approved buyers join.
    • New applicants see normal retail prices until you approve them under Customers → Applications. Approve by hand (the safe default) or auto-approve. Approved buyers then get your wholesale pricing.
    • All of this is free on WordPress.org. You do not need Pro to run a login-to-see-prices store.

    How the price gate works

    Before you touch a setting, it helps to know how B2B Suite decides who sees what. There are three kinds of visitor:

    1. Not logged in (the public). If you turn the setting on, they see no price and no buy button — just a message you write.
    2. Logged in, not yet approved. They have an account, so they see your normal retail price. They don’t get wholesale pricing until you approve them.
    3. Logged in and approved. They’re in a B2B group, so they see your wholesale pricing.

    So “hide prices until login” and “wholesale pricing after approval” are two separate layers. This guide sets up both. Everything is in one place: B2B Suite → Settings → General.

    The two cards you’ll use: “Prices for visitors” and “B2B registration,” both on Settings → General.

    Step 1: Hide prices from visitors

    In your WordPress admin, go to B2B Suite → Settings → General and find the Prices for visitors card.

    Turn on these two options:

    Hide prices from people who aren’t logged in. This is the main switch. Trade prices stay private until someone has an account. (Remember: any logged-in customer still sees a price, so this hides prices from the public, not from your buyers.)

    Also hide the add-to-cart button. Tick this too. It stops visitors adding items they can’t see a price for. Hiding the price but leaving the buy button is a classic mistake that creates support tickets.

    One thing that makes this safe: prices are hidden everywhere, not just on shop pages. Search results, the product API, and the structured data that search engines read are all covered — so a hidden price doesn’t leak out a side door.

    Save your changes. Then open your shop in a private or incognito window so you see it as a guest. The prices and buy buttons should be gone, replaced by the message you’ll set in Step 4.

    Tip: Want to hide prices for only some products or categories, not the whole store? Look under Settings → Access & visibility. (Hiding whole categories from certain buyers — a private catalogue — is a Pro feature. Hiding prices is free.)

    Step 2: Turn on trade registration and add the form

    Hiding prices only works if buyers have a way to apply. On the same Settings → General page, find the B2B registration card.

    Let businesses apply for a trade account. Turn this on. Applicants see your normal retail prices until you approve them.

    Approve new applicants automatically. Leave this off unless you really want open access. Off means every application waits for you to review it by hand — which is the whole point of a gated trade store.

    Group new applicants join when approved. Pick the B2B group approved buyers land in — for example, “Wholesale.” That group is where their wholesale pricing comes from. (You can still change the group per applicant when you approve.)

    Add the form to a page. B2B Suite gives you a shortcode:

    [smb2b_registration]

    Create a “Trade Account” or “Apply for Wholesale” page, paste the shortcode, and publish. Link that page from your menu and from the “log in to see price” message. Paste the shortcode into a Shortcode block (or a Custom HTML block) and it renders the full application form.

    Keep the form short — every extra field loses you some real applicants. For most trade stores, company name, VAT or tax ID, phone and address are enough.

    Turn on trade registration, choose the approved group, and copy the shortcode.

    Step 3: Approve or reject applications

    This step turns your shop into a real gate, not an open door.

    When someone applies, their account is created but stays unapproved, so they only see retail prices. Their application shows up under Customers → Applications on the Trade applications screen, sorted into Waiting, Approved and Rejected tabs. New ones sit in Waiting.

    Each row shows the applicant and the business details they sent — company name, VAT or tax ID, phone and address — so you can decide at a glance. For each one:

    • Approve — this adds them to the B2B group you chose in Step 2, and from that moment they see your wholesale pricing.
    • Reject — for the ones that aren’t a fit.

    Here’s the full journey: a visitor lands on your shop, sees no prices, applies with their business details, waits for you to approve, and then sees your wholesale prices and can order. That’s a proper login-to-see-prices B2B store — built with the free plugin.

    Approving a new trade account moves the buyer into your wholesale group.

    Step 4: Write the message visitors see

    Don’t skip this. It’s the difference between a shop that looks locked and one that looks broken.

    Back in the Prices for visitors card (Step 1), there’s a field: “What visitors see instead of the price.” This is what shows up where the price used to be.

    If you leave it empty, B2B Suite shows “Log in to see prices,” already linked to the account page. Or write your own. Basic HTML is allowed, so you can link straight to your trade-account page:

    Log in to your trade account to see wholesale pricing.

    A good message tells the visitor exactly what to do next, so a hidden price becomes a reason to register instead of a dead end.

    Now test the whole thing end to end in an incognito window: land as a guest → see the message → click through to apply → submit the form → approve yourself in the admin → refresh and check that prices now show. Five minutes, and you’ll catch any problem before a real buyer does.

    What a guest sees instead of a price.

    Common mistakes to avoid

    • Hiding the price but not the buy button. Buyers order at a price they never saw. Tick “Also hide the add-to-cart button” too.
    • Leaving the message empty (or blank). “Log in to see prices” is fine, but a message linked to your registration page converts far better than a dead end.
    • Auto-approving everyone. If every sign-up is approved instantly, you don’t have a gate. Keep “Approve new applicants automatically” off unless you want open access.
    • A long registration form. Every field you don’t need loses real buyers. Ask only for what you need to approve them.
    • Never testing as a guest. What you see as an admin is not what the public sees. Always check in a private window.

    FAQ

    Does “hide prices from people who aren’t logged in” also hide them in search and the API?

    Yes. B2B Suite hides prices everywhere — shop pages, search results, the product API, and the structured data search engines read — so a hidden price doesn’t leak out a side door.

    Do logged-in customers still see a price before I approve them?

    Yes. Any logged-in customer sees your normal retail price. Approval doesn’t unlock a price — it moves the buyer into a B2B group so they see your wholesale price.

    Do I need Pro to hide prices until login?

    No. Hiding prices, the “also hide add-to-cart” option, the trade registration form, and approving applicants are all in the free plugin on WordPress.org. Pro adds extras like a fully private catalogue and multiple customer groups.

    Does this hide prices in the block checkout too?

    Yes. B2B Suite controls prices and visibility through one pipeline that covers both the classic checkout and Cart & Checkout Blocks. A gated product stays gated everywhere.

    Can I hide prices for only some products or categories?

    Yes — look under Settings → Access & visibility. Hiding whole categories from certain buyers (a private catalogue) is a Pro feature; hiding prices is free.

    Where do I put the registration form?

    Paste the [smb2b_registration] shortcode onto any page — a “Trade Account” or “Apply for Wholesale” page works well. It renders the full application form.

    Conclusion

    Hiding prices in WooCommerce isn’t one switch. It’s a small, simple system: hide the numbers from the public, let businesses apply, approve the buyers you want, and give approved accounts your wholesale pricing. Done right, a hidden price stops being a wall and becomes a reason to register.

    Every step here runs on the free B2B Suite plugin. And if you’re hiding prices, you’re building a trade channel. When your buyers start needing more price tiers, company accounts, or pay-on-account terms, Pro picks up where the free plugin leaves off — same data, same pricing pipeline.

    Get B2B Suite free on WordPress.org and set up your login-to-see-prices store today. Need help? The docs cover every setting, and support is here if you get stuck.

  • Introducing B2B Suite for WooCommerce: real B2B, not just wholesale pricing

    Introducing B2B Suite for WooCommerce: real B2B, not just wholesale pricing

    Most WooCommerce stores that sell to businesses started life selling to people. Somewhere along the way a wholesale customer showed up, then a distributor, then a buyer who wanted to pay on 30-day terms — and the store got stretched to fit them. You installed a wholesale-pricing plugin, built a few discount tables, and hoped the rest sorted itself out.

    It rarely does. Because real B2B isn’t a discount. It’s a relationship.

    A B2B buyer represents a company, not just an email address. Several people from that company might place orders, and someone senior wants to approve the big ones. They expect to pay on terms, not up front. They ask for a quote before they commit. They come back every month and reorder the same forty SKUs. None of that is “10% off for wholesale customers” — and none of it fits neatly into a shop that was designed for a one-time consumer checkout.

    That gap is why we built B2B Suite for WooCommerce: one plugin for the whole trade channel, not just the price tag on it. This post introduces what it does, the thinking behind it, and how the free plugin and Pro fit together.

    TL;DR

    • B2B Suite is one plugin for the whole B2B channel on WooCommerce — group and wholesale pricing, hidden prices, trade registration and approval, company accounts, net terms and credit, and request-a-quote. Not five plugins stitched together.
    • Real B2B is more than a discount: it’s companies, terms, quotes and approvals. A wholesale-pricing plugin only solves the smallest part of it.
    • Every trade price runs through a single pipeline with a full audit trail — the price a buyer sees in the shop is the price in their cart, in the Store API, and in the explanation you can pull up when they ask why.
    • The core plugin is free on WordPress.org, and it’s genuinely useful: a complete single-group wholesale channel with pricing control, hidden prices, trade registration, quantity rules, the bulk order form, PDF invoices, and an importer.
    • Pro adds the organisational depth — unlimited customer groups, company accounts and sub-users, net terms and credit, quoting, category/tag/per-customer pricing, tax exemption and EU VAT validation, and outbound webhooks.
    • It’s built to sit properly inside modern WooCommerce: HPOS-ready, tested on classic checkout and Cart & Checkout Blocks, fast on big catalogues, with all B2B data in its own indexed tables — never scattered across postmeta.
    • We’re launching soon on WordPress.org. Join the waitlist and we’ll email you the day it’s live.

    Why “wholesale pricing” isn’t B2B

    If you search for “WooCommerce B2B,” most of what you’ll find is really wholesale pricing: a plugin that lets you set a lower price for customers in a “wholesale” role. That’s useful, and B2B Suite does it well — but on its own it answers maybe a quarter of what a trade store actually needs.

    Here’s what a real B2B relationship asks for that a price rule can’t provide:

    A company, not a person. Your customer isn’t Jane; it’s Holloway Trade, and Jane is one of four people there who place orders. They should share an order history, a set of agreed prices, and — often — a shared credit account. When the new purchasing assistant joins, they shouldn’t have to create a personal account and start from zero.

    Approvals before money moves. In most businesses, a junior buyer can build an order but someone senior signs it off past a certain size. If your store can’t model that, the buyer either can’t use it or routes around it — and you lose the order to a phone call.

    Payment on terms. B2B runs on invoices and net-30, not “enter your card now.” A store that can’t offer terms is asking trade buyers to behave like consumers, and they won’t.

    A quote before the order. For anything negotiated — volume, freight, a special line — the buyer wants a quote first. Email threads and spreadsheets are how most stores handle this, and it’s where orders go to die.

    Prices that are gated and explainable. Trade prices are often private. You want to hide them from the public, show them only to approved accounts, and be able to explain exactly why a given buyer pays a given price when they ask.

    None of these is a discount. Each one is a piece of infrastructure. Bolt five separate plugins together to cover them and you get conflicting price filters, duplicated customer data, and a checkout that behaves differently depending on which plugin got there first. That’s the problem B2B Suite is designed to remove.

    What B2B Suite actually is

    B2B Suite is a single plugin that treats the B2B channel as one system instead of a pile of add-ons. It sits on top of standard WooCommerce — your products, your checkout, your orders — and adds the layer that trade customers need, without asking you to change how the rest of your store works.

    The design goal was simple: the parts of B2B that usually take five plugins and a developer should take one plugin and an afternoon. Everything shares the same data model and the same pricing pipeline, so the features actually cooperate instead of stepping on each other.

    The pieces of a real B2B store

    Here’s what’s in the box, and the job each part does.

    Group and wholesale pricing. Put customers into groups and price for each one — percentage off, a fixed amount off, or a set price. Apply it shop-wide, per product, per category, or right down to a single customer. This is the wholesale-pricing part, done properly and without a second plugin.

    Hidden prices and trade registration. Hide prices (and optionally the “add to cart” button, or whole products) from the public, so only approved trade accounts see them. Take real trade applications with the fields you care about, and approve accounts before anyone sees a number.

    Company accounts. One buying organisation, many people. Sub-users with roles, a shared order history, spend limits, and an approval chain so an order can be reviewed before it’s placed. The company is the customer; the people are how it buys.

    Net terms and credit. Sell on invoice. Set a credit limit per company, track what’s outstanding against a real ledger rather than a spreadsheet, and issue statements. The buyer checks out on terms; you keep control of the exposure.

    Request a quote. A quote basket, a negotiation thread, and per-line prices — then one click turns the agreed quote into a real WooCommerce order at exactly the agreed numbers. No re-keying, no drift.

    Bulk ordering. A fast order pad and quick order by SKU or pasted CSV, so a buyer reordering fifty lines doesn’t have to hunt through your catalogue one product at a time. It’s the feature repeat buyers notice first.

    Tax handling for trade. Tax-exempt customers, and — for EU stores — automatic VAT-number validation and reverse charge, so cross-border trade orders are correct without manual checking.

    One resolver, one audit trail

    Here’s the piece we care about most, because it’s the one that quietly breaks on stores that grew by stacking plugins.

    In B2B Suite, every trade price is decided by a single resolver. When a buyer looks at a product, one pipeline walks through the possibilities in a fixed order — an accepted quote, then a customer-specific rule, then their company, then their group, then a category rule, then any sale price, then the regular price — and the first one that applies wins. That same walk runs everywhere a price is shown: the shop, the cart, the Store API that Checkout Blocks uses, and the explainer.

    Two things fall out of that design:

    The price is consistent. Because one resolver answers every surface, the price a buyer sees on the product page is the price in their cart and the price at checkout. There’s no second plugin applying a different rule further down the line.

    The price is explainable. You can pull up exactly why a given buyer pays a given number — which rule won, and which rules were considered and skipped — because the explanation is generated from the same walk that charges the customer. It can’t drift from what they actually pay. When a buyer emails “why is this $68.40?”, you have a real answer instead of a guess.

    That’s the difference between a bag of price filters and a pricing engine: one pipeline decides the price, everywhere, and can always show its work.

    Free vs Pro: where the line is

    The core plugin is free on WordPress.org, and it isn’t a crippled trial. The free version runs a complete single-group wholesale channel end to end:

    • One customer group with full pricing control (percentage, amount-off, fixed), shop-wide and per product
    • Quantity-break pricing and buy-one-get-one on the same product
    • Hidden prices, trade registration and approval
    • The bulk order form and quick order by SKU or CSV
    • Min/max/pack quantity rules per product
    • PDF invoices, the price explainer, and an importer to bring rules over from other plugins
    • HPOS, Cart & Checkout Blocks, and a clean uninstall

    Pro is an add-on for when your buyers need organisational depth:

    • Unlimited customer groups, plus category, tag and per-customer price rules
    • Private catalogues and per-group visibility
    • Company accounts, sub-users, spend limits and order-approval chains
    • Net terms, credit limits and statements
    • Request a quote, end to end
    • Tax exemption and EU VIES VAT validation
    • Outbound webhooks and more

    Same database, same pricing pipeline. Install free first, add Pro when you need it, and nothing you configured gets thrown away.

    Built for real WooCommerce stores

    A B2B plugin lives at the checkout, which is the least forgiving part of a store. So B2B Suite is built to sit inside modern WooCommerce properly, not fight it:

    • HPOS-ready and tested against both the classic checkout and Cart & Checkout Blocks, including the Store API.
    • Fast on large catalogues — B2B data lives in its own indexed tables, never smeared across postmeta, so pricing stays quick as your catalogue and customer list grow.
    • Translation- and currency-aware, so rules follow WPML/Polylang and multi-currency setups.
    • Clean uninstall — remove it and it takes its own data with it, without leaving orphaned rows behind.

    Boring-sounding things, all of them. They’re also the things that decide whether a plugin is safe to run on a store that’s actually taking money.

    What this blog will cover

    This is the first post, so treat it as the introduction. From here, we’ll write about the parts of B2B on WooCommerce that actually trip stores up — the specific, unglamorous problems, and how to solve them:

    • Getting wholesale-pricing precedence right, so the correct rule wins and you can prove it
    • Running trade registration without drowning in spam applications
    • Setting up net terms you can actually collect on
    • Migrating from another B2B plugin without losing your groups and rules
    • Making company accounts and approval chains match how a real purchasing team works

    Practical, specific, and grounded in how the plugin really behaves — not a feature list dressed up as advice.

    FAQ

    Is B2B Suite free, or is it a trial?

    The core plugin is genuinely free on WordPress.org — not a time-limited trial. It runs a complete single-group wholesale channel on its own. Pro is a separate add-on for stores that need multiple groups, company accounts, credit, or quoting.

    Do I need the free plugin to use Pro?

    Yes. Pro is an add-on: the free plugin owns the database schema and the pricing pipeline, and Pro layers company accounts, credit, quoting and the rest on top. Install free first, then activate Pro.

    Will it work with my checkout?

    Both. B2B Suite is tested on the classic checkout and on Cart & Checkout Blocks, and it’s HPOS-ready, so it works whether you’re on the newer block checkout or the classic one.

    Can it replace the B2B plugin I’m already using?

    That’s the plan. The importer (in the free plugin, not behind the paywall) brings your customer groups and price rules over from other B2B plugins so switching doesn’t cost you the setup you’ve already done.

    When can I get it?

    B2B Suite is in the final stretch before it lands on WordPress.org. Join the waitlist at b2bsuitewp.com and we’ll email you the day it goes live.

    Conclusion

    Selling to businesses on WooCommerce shouldn’t mean gluing five plugins together and hoping they agree with each other at checkout. It should mean one system that understands companies, terms, quotes and approvals — and resolves every price through one pipeline you can actually explain.

    That’s what we’re building B2B Suite to be. The free plugin gives you a complete wholesale channel today; Pro adds the organisational depth when your buyers need it.

    We’re launching soon. Join the waitlist and we’ll tell you the moment it’s live — one email, then you decide. Real B2B deserves better than a discount table. Let’s build it.

  • How to Fix Broken Images in WordPress (and Never Show One Again)

    How to Fix Broken Images in WordPress (and Never Show One Again)

    You know the icon. A small gray square with a torn photo inside it. It shows up on a page where an image used to be, and it tells every visitor the same thing: nobody is looking after this site.

    Here is the uncomfortable part. Your visitors see broken images before you do. You look at your own site a few times a week, and mostly the same pages. Your visitors land everywhere — old posts, deep archive pages, product pages you haven’t opened in a year. If an image broke on one of those pages last month, it has been greeting people with that gray icon ever since.

    And images break more often than you would think. You clean up your Media Library and delete a file that was still used somewhere. You migrate to a new host and a few files don’t make the trip. You hotlinked an image from another site years ago and that site is now gone. None of these feel like big mistakes at the time. Each one leaves a broken image behind.

    There is a second, quieter version of the same problem: posts with no featured image at all. They don’t show a broken icon, but they show up as a blank card in your blog archive, an empty box in “related posts,” and a bare link when someone shares them on social media. One post with no thumbnail in a grid of posts with thumbnails looks exactly like what it is — the one nobody finished.

    ImageCraft’s Image Fallbacks feature handles both. You pick one fallback image, turn the feature on, and from that moment no visitor ever sees a broken icon or an empty thumbnail on your site again. It also scans your Media Library and shows you which images are actually broken, so you can fix the real problem, not just cover it.

    TL;DR

    • Image Fallbacks does two things: it swaps broken images for a fallback image the moment they fail, and it gives posts without a featured image a default one.
    • It is fully non-destructive. Nothing is written to your posts or your database. Turn it off and your site goes back to exactly how it was.
    • Setup: go to ImageCraft → Settings → Image Fallbacks, turn on Enable image fallbacks, pick a fallback image, and turn on the parts you want.
    • The Dashboard scans your Media Library for images whose files are missing and lists them under “Needs attention,” so you can repair the real problem too.
    • The fallback carries proper alt text, so it stays friendly to screen readers and search engines.
    • Free covers one global fallback image and the manual scan. Pro adds a different fallback per post type (say, a product placeholder for WooCommerce) and a scheduled scan that emails you when new broken images appear.
    • It is off by default. If you updated the plugin and changed nothing, nothing changed.

    Why images break in the first place

    It helps to know what you are actually protecting against. Almost every broken image on a WordPress site comes from one of these:

    You deleted the file. This is the big one. You open the Media Library, see an image, think “I don’t use this anymore,” and delete it. But WordPress does not warn you if that image is still sitting inside an old post. The post keeps the image URL, the file is gone, and the page now shows a broken icon.

    You migrated or changed hosts. Moving a site is messy. Sometimes the database comes over cleanly but a chunk of the uploads folder does not. Everything looks fine on the pages you check, and the missing files hide in the pages you don’t.

    You linked to an image on another site. Maybe years ago, maybe in a post you forgot about. That other site reorganized, or shut down, and now your page points at nothing. No cleanup on your side caused it, and no backup of yours can restore it.

    You renamed a file. New file name, but one old post — or a widget, or a theme setting — still uses the old URL.

    A CDN or optimization plugin hiccuped. Sometimes the file exists but a service in front of it fails for some visitors. These are the worst kind, because the image works when you look.

    Notice something about that list: most of these are silent. Nothing emails you. No error log fills up. The page just quietly gets worse, and the only people who know are the visitors who see it.

    What a fallback image is (and what it is not)

    A fallback image is a stand-in. It is one image you choose — usually your logo on a soft background, or a simple branded placeholder — that appears wherever a real image should be but isn’t. It shows up in two situations: a broken image (an image tries to load and fails, and the visitor sees your fallback instead of the torn-photo icon) and a missing featured image (a post never got one, and it uses your fallback as its thumbnail instead of showing a blank card).

    Here is what a fallback is not: it is not a repair. If a post points at a deleted file, that reference is still wrong; the fallback just covers for it so visitors don’t suffer while it’s wrong. That is why ImageCraft pairs the fallback with a scan that tells you which images are actually broken. The fallback protects your visitors today. The scan list is your to-do list for fixing things properly.

    ImageCraft never touches your content. It does not edit your posts, and it does not save the fallback into your database. Everything happens at the moment the page is shown to a visitor. Turn the feature off and every page renders exactly as it did before — there is nothing to undo, because nothing was done to your data.

    Setup: pick one image, flip one switch

    You do this once.

    1. Install ImageCraft from the WordPress plugin directory and activate it, if you haven’t already.
    2. Go to ImageCraft → Settings → Image Fallbacks.
    3. Turn on Enable image fallbacks. This is the master switch for everything below it.
    4. Under Broken images, turn on Replace broken images on the front end and choose a Fallback image from your Media Library.
    5. Under Missing featured images, turn on Use a default featured image. You can pick a second image here, or just tick Use the same image as the broken-image fallback and reuse the first one.
    6. Click save.

    That’s it. No code, no theme edits, and you don’t need an AI key for any of this — Image Fallbacks works even if you use ImageCraft only for this one job.

    Tip: Before you pick your fallback image, give it good alt text in the Media Library. When ImageCraft swaps a broken image that had no alt text of its own, it uses the fallback’s alt text in its place. A blind visitor hears something useful instead of nothing.

    Part 1: Replace broken images for visitors

    Once this is on, ImageCraft adds one small script to your public pages. It watches every image on the page. The moment an image fails to load, the script swaps it for your fallback image. It also checks for images that had already failed before the script started, so nothing slips through on slow connections.

    The visitor experience is simple: they never see the gray torn-photo icon. They see your fallback image, sitting cleanly where the broken image would have been. The page keeps its shape, the layout doesn’t jump, and the site looks cared for.

    • It catches everything, including images you don’t control. Because the swap happens in the visitor’s browser, it works on hotlinked images from other sites, CDN failures, and files missing from your own server alike.
    • It fills in alt text. If the broken image had alt text, it keeps it. If it had none, the fallback’s own alt text is used. Screen readers and search engines still get a real description.
    • It can’t loop. Every swapped image is marked, so if your fallback image itself ever failed to load, the script stops rather than trying forever.

    What it does not do: it does not change the page’s saved content. The post still contains the original image URL. If you fix the real image later, the real image simply loads again and the fallback steps aside. Nothing to clean up.

    Part 2: Give every post a featured image

    Featured images do more work than most people realize. Your theme uses them in the blog archive, in “related posts,” in sliders and grids. Social networks use them when someone shares your link — that preview card on Facebook or LinkedIn is your featured image. A post without one shows up as a gap in all of those places.

    Turn on Use a default featured image, and any post without a featured image quietly uses your fallback instead. Everywhere. The archive card gets a thumbnail. The related-posts box fills in. The social share preview shows your image instead of a gray nothing.

    The important word is quietly:

    • Your post is never modified. ImageCraft does not attach the image to the post or write anything to the database. Open the post in the editor and the featured-image box is still empty — which is honest, because it is.
    • Real featured images always win. The fallback only appears when there is nothing else. Set a real featured image and that image is used, everywhere, immediately.
    • wp-admin is untouched. Your post list and editor show the true state of things, so you can still see which posts genuinely lack a featured image. The fallback is for your visitors, not for you.

    By default this applies to every public post type. If you want it narrower — say, posts but not pages — use the Apply to post types checkboxes on the same settings screen.

    Note for stores and Pro users: with ImageCraft Pro you can set a different fallback per post type — for example, a product-shaped placeholder for WooCommerce products and your logo card for blog posts. The free version uses one global image everywhere, which covers most sites fine.

    Part 3: Find your broken images and actually fix them

    The two features above protect your visitors. This one is for you.

    Open the ImageCraft Dashboard. It scans your Media Library in the background, checking every image against the files actually on your server. Any image whose file is missing shows up in the Needs attention area as a broken-images count, with a link to the fallback settings.

    ImageCraft Dashboard with the Needs Attention widget showing a broken images count and a Fix link

    This matters because a fallback, on its own, has a downside: it hides the evidence. If broken images always look fine to visitors, they also always look fine to you, and you might never fix the underlying references. The scan closes that gap. You get the clean visitor experience and a plain list of what is really broken.

    • It runs on your server, not in your browser. It checks whether each image’s file exists on disk. That catches deleted and lost files — the most common case. It can’t check images hosted on other people’s sites, but the front-end swap covers those for visitors anyway.
    • It is patient with big libraries. On a site with tens of thousands of images, the scan works in chunks and picks up where it left off, so it finishes without straining your server.
    • The scan runs even if fallbacks are off. You can use ImageCraft just to find broken images, without enabling any front-end behavior at all.

    What do you do with the list? For each broken image, you have three honest options: restore the file from a backup, edit the post to use a different image, or remove the image from the post entirely. The fallback buys you time to do this calmly instead of in a panic.

    Pro: ImageCraft Pro can run this scan on a schedule — daily or weekly — and email you only when new broken images appear. Break something on Tuesday, know about it Wednesday morning, instead of finding out from a visitor months later.

    Will this slow down my site?

    Short answer: no. The broken-image script is a tiny, dependency-free piece of JavaScript that loads after your page content. It does not delay anything the visitor sees, and it sits idle unless an image actually fails. The featured-image fallback is a lightweight check built to answer “nothing to do here” as fast as possible, which is what it says on every image that is fine.

    And when the whole feature is switched off — which is the default — none of this loads at all.

    Choosing a good fallback image

    The fallback image will appear in places you can’t predict — a wide hero slot on one page, a small square thumbnail on another. A few guidelines make one image work everywhere:

    • Keep it simple. Your logo centered on a soft, solid background is the classic for a reason. It looks intentional at any size.
    • Avoid text beyond a word or two. Text becomes unreadable when the image is shown small, and awkward when it is cropped.
    • Match your brand colors. The fallback will sit next to your real content. It should look like it belongs.
    • Use a reasonably large source image. Something around 1200×630 works well — that is also the size social networks like for share previews.
    • Give it alt text. The fallback’s alt text is what screen readers hear when a broken image had none. Something plain like “Sunrise Coffee Co. logo” is perfect.

    Don’t overthink it. The fallback’s whole job is to be quietly acceptable. If a visitor doesn’t consciously notice it, it is working.

    Frequently asked questions

    Does this change my posts or my database?

    No. This is the feature’s core promise. Nothing is written to your content. The broken-image swap happens in the visitor’s browser, and the featured fallback is applied at display time. Turn the feature off and your site is back to exactly how it was.

    Will the fallback show up in my wp-admin?

    No. The editor, the post list, and the media modal all show the true state of your content. A post without a featured image still looks empty in admin, so you always know what’s real.

    What happens when I fix the real image?

    The fallback steps aside on its own. It only ever appears when the real image is broken or missing. Restore the file, or set a real featured image, and the real one shows immediately. Nothing to undo.

    Does it work with my theme? Block themes too?

    Yes. The featured fallback answers the same question every theme asks — “does this post have a thumbnail?” — so classic themes, block themes, and page builders all pick it up naturally. It reaches social share previews the same way.

    Does it catch images hosted on other sites?

    The front-end swap does, yes — it covers anything that fails to load in the browser, wherever it lives. The Dashboard scan only checks files on your own server, since it can’t inspect other people’s sites.

    Do I need an AI key for this feature?

    No. Image Fallbacks is completely independent of the AI features. You can use ImageCraft only for fallbacks, or only for compression, without ever adding a key.

    Is this in the free version?

    Yes — the master toggle, the broken-image swap, the default featured image, the post-type list, and the manual Dashboard scan are all free, with no daily limits. Pro adds two things: a different fallback image per post type, and a scheduled scan (daily or weekly) that emails you when new broken images appear.

    I updated the plugin — did anything change on my site?

    No. Image Fallbacks is off by default. Existing sites behave exactly as before until you turn it on yourself.

    Get started

    Broken images are a small problem with an outsized cost. Each one is silent — no alert, no error, just a gray icon quietly telling your visitors that no one is minding the site. Image Fallbacks fixes the visitor’s experience immediately: pick one image, flip the switch, and no one ever sees a broken icon or a blank thumbnail on your site again. The Dashboard scan then hands you the real repair list, so covering the problem never turns into ignoring it. And because nothing is ever written to your content, you risk exactly nothing by turning it on.

    Open ImageCraft → Settings → Image Fallbacks, turn on Enable image fallbacks, choose a fallback image, enable both features, and save. Five minutes, once — and one whole category of embarrassment is gone for good.

    Ready to never show a broken image again? Get ImageCraft →

  • How to Add AI Alt Text to WooCommerce Product Images

    How to Add AI Alt Text to WooCommerce Product Images

    Most WooCommerce stores have hundreds of product photos with no alt text. That hurts you twice. Shoppers who use a screen reader can’t tell what each photo shows, and Google can’t read the image either, so you miss free traffic from image search. ImageCraft fixes both, in bulk, straight from your dashboard.

    Why product alt text beats plain AI alt text

    Most AI tools only look at the image. They describe a hoodie photo as “a black hoodie on a white background.” That is correct, but it does not help you sell. It has no product name and none of the words a buyer would search. ImageCraft is different. Before it writes anything, it reads the product in WooCommerce and passes the details to the AI.

    ImageCraft sends the product name, SKU, categories, and price to the AI, and tells it to include the product name. So “a black hoodie on a white background” becomes “Teton black cotton pullover hoodie, Men’s Hoodies & Sweatshirts.”

    ImageCraft saves the alt text to the Media Library, on the image itself. So it shows up everywhere the image is used: the shop page, the product page, related products, and any block or theme that reads the image. You do the work once, and every spot that uses the image gets the benefit.

    Setup: two minutes

    📷 [SCREENSHOT: ImageCraft Settings → Integrations → WooCommerce, with “Include product information” checked and “Default Tone for Products” set to Product SEO]

    1. Install ImageCraft from the WordPress plugin directory and activate it. It detects WooCommerce on its own.
    2. Add your AI key. In ImageCraft → Settings → API, pick a provider (Anthropic Claude, OpenAI, or Google Gemini) and paste your key. On WordPress 7.0 and up you can use the built-in AI instead.
    3. Turn on product context. In ImageCraft → Settings → Integrations → WooCommerce, check Include product information. This is what makes the alt text product-specific, so don’t skip it.
    4. Pick a default tone on the same screen. Start with Product SEO (Recommended).

    Method 1: Do the whole catalog at once (recommended)

    This is the fastest way to fix a whole store. If you only try one thing, try this.

    1. Go to ImageCraft → WooCommerce. Your products show up as cards with a filter bar on top. Each card has an alt-text coverage badge, like 0/1 alt or 3/3 alt, so you can see at a glance which products still need work.
    2. Under Alt Text, click Missing to show only products with no alt text. You can also filter by Generic or Long >100, and do the same for Title and Description.
    3. Optional: narrow by category, or open Advanced to filter by date or price.
    4. Click Select All. If your filter spans more than one page, ImageCraft offers to select all of them, not just the ones you can see.
    5. Tick Alt text, Title, and Description in any mix. One AI call per image fills in whatever you ticked.
    6. Click Generate. ImageCraft gathers every image, featured and gallery, removes duplicates, and runs a background job. Close the tab if you like; it keeps running and resumes if interrupted.

    One job handles up to 500 images. For a big catalog, filter by category or price and run a few jobs in a row. Each new job starts where the last one ended.

    Method 2: One product at a time

    Method 1 is great for volume. Sometimes you want a closer look. On any product card, click Generate All to write alt text for the featured image and every gallery image in one click. Or click View Details to open the product window. There you see the featured image (marked with a Featured badge) and every gallery image side by side, each with its own alt text, title, and description fields. Use the Generate link on any field to fill just that one, edit anything by hand, then click Save All Changes.

    Gallery images are the ones most often left blank. The featured image sometimes gets attention; the other gallery shots almost never do. Generate All covers the whole set at once.

    Method 3: Turn on auto-generate

    The two methods above clean up what you already have. This one keeps you clean going forward. Turn on auto-generate on upload in the settings, and every image you add to a product gets alt text as it uploads. New products go live ready for search, and you never build a backlog again. You can skip certain post types and skip images that already have alt text, so ImageCraft only fills the gaps.

    Pick the right product tone

    • Product SEO (recommended) — keyword-rich text for Google Images. Example: Teton black cotton pullover hoodie, Men’s Hoodies & Sweatshirts.
    • Product Descriptive — clear, plain text for screen readers. Example: Black pullover hoodie with a drawstring hood and front kangaroo pocket.
    • Product Lifestyle — for in-use or on-model photos. Example: Person wearing the black Teton pullover hoodie with the hood up.

    Not sure? Start with Product SEO. Set your default under Settings → Integrations → WooCommerce → Default Tone for Products. Want your own wording? Choose Custom Prompt. Even then, the product name, category, and SKU are still added as context, and your max-length limit still applies.

    Frequently asked questions

    Does it cover gallery images, or just the featured image?

    Both. Bulk Generate and per-card Generate All collect the featured image and every gallery image, with duplicates removed. Nothing gets missed.

    Will it overwrite alt text I wrote myself?

    Only if you want it to. Filter to Missing to touch empty images only, and turn on “skip images with existing alt text” to fill gaps without changing your work.

    Can it write titles and descriptions too?

    Yes. When you bulk-generate, tick Alt text, Title, and Description. One AI call per image handles the fields you pick, so there is no extra cost to adding them.

    Do I need ImageCraft Pro for this?

    No. The WooCommerce screen, product alt text, gallery generation, and the three tones are all in the free plugin. The free plan gives you 50 actions per day. Pro removes the daily limit and adds features like auto-compress on upload.

    Which AI provider should I use?

    Use your own key from Anthropic Claude, OpenAI, or Google Gemini. Any of them works well. You pay the provider directly, with no markup. If you are not sure, pick the one you already have an account with.

    Get started

    Install ImageCraft, add your AI key in Settings → API, turn on Include product information under Settings → Integrations → WooCommerce, then open the WooCommerce screen, filter to Missing, and click Generate. Your product images will be ready for search before your next coffee.

    Ready to make every product image count? Get ImageCraft →

  • Shrink Your Image Files Without Losing Quality — Right Inside WordPress

    Shrink Your Image Files Without Losing Quality — Right Inside WordPress

    Your pages can look perfect and still load slowly. Images are usually the heaviest thing on a web page — a single un-optimized photo can outweigh your entire layout, scripts, and fonts combined. That weight drags down your Core Web Vitals, your search rankings, and your visitors’ patience. ImageCraft fixes it at the source, right inside WordPress — locally, without quality loss, and with every original safely backed up.

    Why image size quietly hurts your site

    Most media libraries are full of images two to ten times larger than they need to be. Compressing them is one of the highest-impact, lowest-effort speed wins available — because page weight touches almost everything that matters:

    • Core Web Vitals. Your Largest Contentful Paint (LCP) is very often an image. Heavy images mean a poor LCP score.
    • SEO rankings. Faster pages are favored in search — and they keep visitors from bouncing.
    • Conversions. Every extra second of load time measurably reduces sign-ups, sales, and engagement.
    • Mobile experience. On phones and slower networks, a 4 MB photo is the difference between “instant” and “still loading.”

    Compress your library once with ImageCraft, and every page that uses those images gets lighter — with no rebuilds, no re-uploads, and no lost quality.

    How ImageCraft compression works

    ImageCraft takes a quality-first approach. Instead of aggressively crushing images to hit a number, it re-encodes them intelligently so the file gets smaller while the picture stays visually identical. Under the hood:

    • Runs locally on your server using Imagick, with an automatic GD fallback. No image ever leaves your site — no third-party API, nothing to sign up for.
    • Visually-lossless re-encoding. It strips bloated EXIF data and color profiles, enables progressive JPEG, and deliberately avoids chroma subsampling — so edges and text stay sharp.
    • Optional smart resize. Oversized images are scaled to a sensible maximum (2048px on the longest edge by default) — usually where the biggest savings come from.
    • Never-enlarge guard. It writes to a temporary file first and only keeps the result if it’s actually smaller. Already-optimized images are left untouched.

    Method 1: Compress a single image (or automatically on upload)

    The fastest way to optimize as you work — no leaving the screen you’re on.

    1. Open any image in the WordPress media modal and click the Compress button ImageCraft adds right there.
    2. Check the savings. ImageCraft shows the before/after size and the percentage saved — and backs up the original first.
    3. Want it hands-free? Enable auto-compress on upload (Pro) so every new image is optimized the moment it’s added.

    Method 2: Already have a full library? Compress in bulk

    If your site is already full of heavy images, you don’t need to touch them one by one. ImageCraft optimizes the underlying media library, so every page using those images gets lighter at once.

    1. Open ImageCraft → Compress and filter by Uncompressed to see everything that still needs work.
    2. Click Select page (or pick individual images) and choose Compress Selected.
    3. Watch the live progress — each image shows its new size and savings as it finishes.
    4. Changed your mind on any result? Click Restore to bring back the original instantly.

    For very large libraries, the bulk run processes hundreds of images in the background, so you can optimize an entire site in a single pass.

    Free vs Pro

    Free gives you everything you need to get real results: manual single and bulk compression, visually-lossless quality with a smart 2048px downscale, automatic backup and one-click restore, and 50 free actions per day (shared across AI features and compression). Pro removes the limits and adds automation: unlimited compression, adjustable quality and resize limits (or disable downscaling entirely), and automatic compression on upload.

    Frequently asked questions

    Will compression reduce my image quality?

    Not visibly. ImageCraft re-encodes images without chroma subsampling and strips only non-visual data (EXIF, color profiles), so the result looks identical while the file gets smaller. If a re-encode wouldn’t actually shrink the file, the original is kept untouched.

    Are my original images safe?

    Yes. Every original is backed up before it’s touched, and you can restore it — per image or in bulk — with a single click, at any time.

    Does ImageCraft send my images to a third-party service?

    No. Compression runs entirely on your own server using Imagick (or GD). Your images never leave your site, and there’s no external account or API to set up.

    Does it work with WooCommerce and page builders?

    Yes. Because ImageCraft optimizes the underlying media library attachment, anything that pulls from it — WooCommerce product images, Spectra, Kadence, Gutenberg blocks — automatically serves the lighter version.

    Get started

    ImageCraft is free to install and works alongside Gutenberg, Spectra, Kadence, WooCommerce, Yoast SEO, Rank Math, AIOSEO, SEOPress, and FileBird. Compress your library once, keep new uploads in check, and watch your page weight — and your Core Web Vitals — improve, without leaving your dashboard or risking a single original.

    Ready to lighten your library? Get ImageCraft →

  • Spectra Image Block: How to Add AI Alt Text, SEO File Names

    Spectra Image Block: How to Add AI Alt Text, SEO File Names

    A Spectra layout can look flawless and still quietly hurt your SEO and accessibility. Every Image block you place pulls from your media library — and if those images have empty alt text and file names like IMG_4521.jpg, search engines and screen readers see every flaw the editor hides. ImageCraft fixes that at the source.

    Why Spectra and ImageCraft work so well together

    The Spectra Image block doesn’t store its own copy of an image — it references an attachment in your WordPress media library and pulls that image’s alt text and file URL from there. ImageCraft works at exactly that level. So you don’t optimize images inside Spectra; you optimize them once in the media library, and every Spectra block using that image inherits the result automatically.

    Optimize an image once with ImageCraft, and every Spectra Image block that uses it gets accessible alt text and an SEO-friendly file name — with no block re-editing.

    Method 1: Optimize first, then insert into Spectra (recommended)

    This is the cleanest workflow for any new page or post — get the image right in the media library, then build your Spectra layout on top of polished assets.

    1. Upload your image to the media library.
    2. Turn on auto-generate alt text. In ImageCraft → Settings → Alt Text, enable Auto-generate on upload so every new upload gets AI alt text automatically.
    3. Rename the file for SEO. In ImageCraft → Scanner, click Rename to turn DSC_0099.jpg into something like red-leather-handbag.jpg — safely updating the file and its URL.
    4. Add the Spectra Image block and select your optimized image. The alt text and clean file name come along automatically.

    Prefer a particular wording? In Settings → Alt Text you can pick a tone (Professional, SEO, Casual, Technical) and a max length — and the Spectra block displays whatever alt text ImageCraft saved.

    Method 2: Already built the page? Fix existing images in bulk

    If your Spectra blocks are already live with missing or weak alt text, you don’t need to touch the blocks at all. Because they reference the media library, fixing the image there updates the block automatically.

    1. Open ImageCraft → Scanner — it flags every image with missing or generic alt text, including the ones used in your Spectra blocks.
    2. Select the images (or Select All) and click Generate.
    3. Review the AI suggestions and Accept them in bulk.
    4. Reload your page — the Spectra Image blocks now show the new alt text, with no block re-editing.

    For very large libraries, use the Batch screen — it processes hundreds of images in the background, so you can fix an entire site’s worth of Spectra images in one run.

    Frequently asked questions

    Does ImageCraft change the Spectra block itself?

    No. ImageCraft only optimizes the underlying media library attachment — its alt text and file name. The Spectra Image block simply reflects those values when it renders, so there’s nothing to re-edit inside Spectra.

    Will renaming a file break the image in my Spectra block?

    No. ImageCraft updates the attachment’s file and URL references safely, so your Spectra block keeps pointing at the correct new URL.

    Do I need to re-insert images after generating alt text?

    No. Spectra reads alt text live from the attachment, so accepting AI alt text in ImageCraft updates what the block outputs automatically.

    Does this work with Spectra galleries too?

    Yes. Any block that pulls from the media library — Spectra’s Image and gallery blocks included — benefits from the optimized attachments.

    Get started

    ImageCraft is free to install and works alongside Spectra, Gutenberg, Kadence, WooCommerce, Yoast SEO, Rank Math, AIOSEO, SEOPress, and FileBird. Optimize your images once in the media library, build your Spectra layout on top, and every Image block ships SEO-ready — without writing a single line of alt text by hand.

    Ready to make every Spectra image count? Get ImageCraft →

  • Meet ImageCraft: AI Alt Text, File Renaming & Image SEO for WordPress

    Meet ImageCraft: AI Alt Text, File Renaming & Image SEO for WordPress

    Images make your WordPress site beautiful — but to search engines and screen readers, an image without alt text is invisible. Writing descriptive alt text for hundreds of images by hand is the kind of task everyone knows they should do and almost nobody finishes. ImageCraft fixes that with AI.

    What is ImageCraft?

    ImageCraft is a free, open-source WordPress plugin that generates accurate, human-quality alt text for your images using AI — then takes it further with SEO-friendly file renaming and a full image-SEO audit. It works with the new WordPress 7.0 native AI Client, or you can bring your own Anthropic Claude, OpenAI GPT-4o, or Google Gemini API key.

    The plugin itself is completely free. If you bring your own key, you only ever pay your AI provider directly — there’s no middleman.

    Why alt text matters

    Alt text does double duty. For accessibility, it’s how screen-reader users understand your visuals — and in many regions it’s a legal requirement. For SEO, it’s how Google understands your images, powering image-search traffic and reinforcing the relevance of the page they live on. Missing or generic alt text (“image1.jpg”, “DSC_0042”) quietly costs you both.

    What ImageCraft does

    AI alt text in 65+ languages

    Generate natural, descriptive alt text in English, Spanish, French, German, Japanese, Chinese, Arabic, Hindi, Tamil, Korean, and 55+ more — with 7 tone options (Professional, Casual, Technical, SEO, and three WooCommerce-specific tones), or your own custom prompt.

    Media library scanner & SEO audit

    Scan your entire media library with smart filters — date range, file size, alt-text quality, and missing or generic-alt detection. The SEO Audit Dashboard shows exactly how many images need attention and suggests fixes.

    Batch processing & auto-generate on upload

    Fix a backlog of hundreds of images in a single run with chunked processing and live progress tracking. Going forward, ImageCraft can auto-generate alt text in the background every time you upload — with an optional preview before it’s accepted.

    SEO file renaming

    Beyond alt text, ImageCraft can rename the underlying image files based on the generated description, so DSC_0042.jpg becomes something search engines can actually read.

    WooCommerce-aware

    For stores, ImageCraft generates alt text for product featured images and galleries using context-aware prompts that include the product name, category, and SKU — turning your catalog images into a search asset.

    Built to be safe and simple

    Your API keys are encrypted at rest with AES-256-CBC and stored in your own database. Nothing is sent to third parties except the AI provider you choose. A guided setup wizard gets you running in minutes: pick a provider, paste your key, and start generating — then track daily usage, acceptance rates, and estimated costs from the Usage Statistics panel.

    Get started

    ImageCraft is free to install and works alongside Yoast SEO, Rank Math, AIOSEO, SEOPress, WooCommerce, Gutenberg, Kadence, Spectra, and FileBird. Install it, run a media-library scan, and watch your accessibility and image-SEO scores climb — without writing a single line of alt text by hand.

    Ready to make every image count? Get ImageCraft →