Repository navigation
Managing media
Cactus stores your images and files with a cloud storage provider. Before you can upload anything, you need to connect a provider in Settings → General → Media.
Go to Settings → General → Media and pick a provider from the dropdown. The options are:
| Provider | Good for |
|---|---|
| Vercel Blob | The simplest option if you're already on Vercel. No extra accounts needed. |
| Cloudflare R2 | No charges for delivering images to visitors. A great choice if you're already using Cloudflare. |
| Backblaze B2 | Very affordable and reliable. |
| AWS S3 | The most established option, with a huge ecosystem. |
| DigitalOcean Spaces | Straightforward and well-priced. |
| Wasabi | Low cost, no delivery charges. |
| Supabase Storage | Good if you're already using Supabase for other things. |
| Cloudinary | Handles image delivery and resizing itself. No Cloudflare Worker needed. |
| ImageKit | Similar to Cloudinary - images served from their own delivery network. |
Enter the credentials for your chosen provider and click Save. Cactus will trigger a short rebuild (usually under two minutes) to apply the new settings. A progress screen keeps you updated.
Not sure where a particular value comes from? The credentials panel shows a Where to find these row with links straight to the right page in your provider's console - the bucket list, the key-generation screen, and so on. No hunting through their dashboard required.
Note: Most providers (all except Cloudinary and ImageKit) deliver images via a Cloudflare Worker - a tiny free program that resizes and serves your images. You don't have to build it by hand. The credentials panel has a Set up the Worker automatically box: paste one Cloudflare credential, click Deploy Worker, and Cactus creates and configures it for you. No terminal, no code.
If your site's domain is in the same Cloudflare account, Cactus goes one better and serves your images from a tidy address on your own domain -
media.your-site- instead of a long Cloudflareworkers.devone, and moves any images you've already uploaded across to it. If the domain is managed somewhere else, it quietly falls back to the standard Cloudflare address and tells you why. Redeploy your site afterwards to switch over; the secure certificate for the new address can take a minute to go live.You'll need a (free) Cloudflare account and one of:
- an API token (recommended) - safer, because it's limited to managing Workers. There's a Create a token link that takes you straight to the right page; create a Custom Token with the permissions it lists. All of them, mind - the Workers Scripts · Edit one is what actually lets Cactus create the Worker, and leaving it off is the usual reason a deploy comes back complaining about authentication.
- your Global API Key - simpler to find but it has full access to your whole Cloudflare account, so the token is the safer choice. There's a Find your Global API Key link too.
Setting it up a second time? You don't need to dig any of it out again. Once a deploy has worked, Cactus remembers your Cloudflare credential and your storage credentials, and every field in the box goes optional - just click Deploy Worker. Fill a field in only when you actually want to change that value. (If you've only just saved a new storage password and haven't redeployed your site yet, Cactus will say so and point you at the Status tab, because passwords are stored write-only and it genuinely can't read them back until then.)
Prefer to do it by hand? The same box has a Prefer to set it up yourself? section with step-by-step dashboard instructions, and there's more technical detail in Self-hosting and operations.
Once a provider is connected, an Upload button appears in:
- Any block with a picture in the page editor - Image, Image + Floating Chips, Card, plus the Hero (its background and side image) and any Section background - where the picker opens a window to choose an existing image, with a + Upload button in its top corner for adding a new one. You pick from your library or upload on the spot, rather than pasting in a web address
- The Site logo settings in the page editor
- Appearance → Styles → Branding (for your logo and favicon)
Click Upload (or + Upload in the picker window), select a file from your computer, and it will be stored with your chosen provider and added to your media library. In the block pickers the freshly uploaded image is popped in and selected for you straight away, so there's no need to nip off to the media library first.
In the media library the Upload button spells out where files will land (+ Upload to Photos, say), and as soon as you pick or drop files the notification bell pops open with a live progress list, showing each one filling up as it goes and ticking green when it's done. Files go up three at a time rather than in single file, so a few hundred photos take minutes rather than an afternoon, and one slow-moving file doesn't hold up the queue behind it (three rather than more, because some browsers - Safari in particular - flatly refuse anything past a modest number of simultaneous connections). If one won't do - wrong sort of file, or a stray oversized SVG - it's flagged there and then with the reason, so nothing fails in silence. And when an upload does go wrong mid-flight, the message now says which step failed and why - the check for existing names, the hand-off to storage, or the final filing - rather than a bare "upload failed", so there's something worth passing on if you need help. These upload entries sit above your usual notifications and don't count as unread - clear them with a click once you're done.
Dropping a really big batch - thousands of files, or tens of thousands - is fine, and the bell keeps up: instead of drawing a row for every single file (which would be a wall of thousands), it shows one overall bar with a running "so many of so many" count, and lists individually only what's in flight right now and anything that went wrong. It all still uploads; you just get a tidy summary rather than an unreadable list.
File names: whatever you called the file is what it's stored as. Upload 160cm-white-6-person-1.jpg and that's the name it keeps, in your storage and in the web address it's served from - no scrambled prefix in front of it. Names are tidied on the way in: spaces and punctuation become hyphens, capitals become lower case, because web addresses are fussy about such things.
If that name is already taken in the folder you're uploading to, Cactus stops and asks rather than deciding for you:
- Replace - the file that's already there keeps its web address and everything pointing at it, and simply starts serving your new one. Handy for updating a photo you've used in a dozen places.
-
Keep both - your upload goes in alongside it as
name-1, with the suggested name shown on the button so there are no surprises. - Skip - leave that one out and carry on with the rest.
- Cancel - abandon the rest of the batch.
If several files in the same batch clash at once, the question comes up just the once. It carries a Do the same for the other files with a clashing name tick-box, on by default, so one Replace, Keep both or Skip settles the whole lot. Untick it if you'd rather be asked about each one.
The question is asked before a single byte leaves your computer, so nothing is overwritten or renamed behind your back.
Supported formats: JPEG, PNG, WebP, GIF, SVG, the video formats MP4 and WebM, plus the 3D model formats GLB, glTF, OBJ, FBX and 3DS.
File size: photos (JPEG, PNG, WebP, GIF) upload straight to your storage, with a 50 MB ceiling - roomy enough for the full-fat shot from a phone or camera several times over. SVGs have a modest 4 MB ceiling, which they never trouble in real life. If you ever see a "too big" note on a photo well under 50 MB, your media connection just needs a quick refresh: pop to Settings → General → Media and redeploy. Should a file ever be refused, you'll get a plain message saying so, rather than it vanishing without a word.
The same 50 MB ceiling covers 3D model files. They go the same way photos do - browser straight to storage - and can be uploaded here in the media library as well as from a product's own 3D views tab, where Product 3D views files them with that product's pictures rather than off in a corner of their own. One thing worth knowing: 3D files need Cloudflare R2, Backblaze B2 or S3 storage with the media service deployed. On any other setup they'll be turned away with a note saying as much, rather than half-uploading and going quiet.
Worth doing once: if you set your Worker up before this release, go to Settings → General → Media and click Deploy Worker again. The new one is stricter about what it will accept and hand back - it checks that an upload really is the image it claims to be, and it refuses to serve anything back as a web page. Older Workers keep working, they just don't have those guards.
Necessary, not merely worth doing, if you want 3D models. A Worker deployed before this release will turn every 3D file away, because accepting them is new and your Worker only learns new things when you send it a fresh copy. Redeploy and they upload as normal. Photos are unaffected either way.
And once more, if you would rather people didn't help themselves to your 3D models. A redeployed Worker will only hand out a model file to someone whose link carries a valid pass, and Cactus expires those passes after a day or so. Copied links go stale, and other websites can't point at your models at all. Photographs are deliberately left alone, so nothing else on your site changes. Until you redeploy, models are served to anyone who has the address - which is what every Worker did before now.
Once more still, if your pictures are feeding a shopping comparison site. Storage occasionally fumbles a perfectly good request - once or twice in a hundred, more when something is working through your whole catalogue at speed - and the old Worker passed the fumble straight on as an error. A person's browser shrugs and asks again; a shopping feed does not, it simply marks the product as having a picture it cannot read. A redeployed Worker quietly asks storage again, twice, before giving up, and it also answers the "is this really there?" question that link checkers and shopping feeds ask before they download anything, which the old one refused outright. If Google Merchant Center has been turning products down over their images, this is very likely why.
You can upload video to your media library the same way you upload a photo - MP4 and WebM files are both welcome. A video sits in the library as its own tile with a little film-strip marker, and clicking it plays a preview.
The first thing to do with any video you upload is press Optimise video - see Slimming down videos. Video is the heaviest thing on most sites by a distance, and halving it is a matter of one click and a couple of minutes. You can do a whole folder at once: tick the videos, then press Optimise videos in the bar above the library.
To show one on your site, add the Feature video block to a page or a product description - see Available blocks. It plays your video beside a headline and a paragraph, quietly looping once it scrolls into view.
The Media page has a Video tab next to your library. It holds two things. First, an optional Fly.io API key: with one saved (or supplied by your hosting configuration), each video gets its own short-lived machine, so a selection of twenty optimises in the time one does, and every machine is removed the moment its job finishes - nothing sits around costing money between jobs. Without a key, videos queue on the single service one at a time. Second, a running list of every optimise and where it got to, with a live status while it works and how much it saved when it lands; when one's done with, Clear tidies it away (and clears the matching note from the bell).
Scroll sequences have been retired. Cactus used to be able to rebuild a video into a frame-by-frame "scroll sequence" with the studio background removed, played back as you scrolled. It was slow, fiddly and never quite good enough, so it has gone - along with the Scroll sequence block. Use Feature video instead: no conversion, no waiting, and the visitor scrolls the page as normal instead of the animation taking the wheel off them. Any sequence you built before now still sits in your library as a file, and can be deleted like anything else.
You'll need to redeploy your media service once before videos will upload. Pop to Settings → General → Media and click Deploy Worker - the same one-click refresh as for 3D models. Until then, videos are politely turned away rather than half-uploaded.
Everything you've uploaded lives in Media. Down the left is your folder tree, and the main area shows whatever's in the folder you're currently looking at, with a breadcrumb trail along the top so you always know where you are.
If your folder names are long, drag the divider between the tree and the grid to widen it - the setting sticks in that browser, so you only have to do it once. Double-click the divider to put it back where it started. With the keyboard, tab to the divider and use the left and right arrows (hold Shift for bigger steps).
Across the top sits a row of summary tiles, so you can see the state of your library without digging:
- Files - how many you've got, and how many folders you've sorted them into.
- Storage used - the total space everything is taking up.
- Unused - how many files nothing on your site points to, and how much space you'd get back by clearing them out. Click the tile to jump straight to those files. "Nothing points to it" covers the whole site, not just your pages: a product photo, an option or attribute swatch, a 3D model, a downloadable file, a board icon or an article's headline picture all count as in use.
- Optimisable - how many files could still be slimmed down (and how many you've already done). Photos and 3D models both count. Click it to line up exactly those files, ready for a tidy-up - the ones you've already done stay out of the way.
The Unused and Optimisable tiles light up while there's something worth doing, and clicking either one gathers the matching files from every folder in one place. The Optimisable list arrives with a Still to optimise chip above it, which you can lift at any time to see everything again.
Every folder at once is the right starting point and the wrong finishing point: a few thousand spare files spread across a hundred folders is a list nobody works through. So while you're looking at the unused files, a folder button joins the controls, listing every folder that actually has something spare in it - each with its full path, how many files and how much space.
It opens with everything ticked, which is exactly what the tile showed you. Untick the ones you'd rather leave alone - the client folder you daren't touch, the archive you keep on purpose - and they drop out of the list then and there. Tick all and Untick all are there for the sweeping gestures, and there's a small box to find a folder by name when there are more of them than patience. A tag appears under the controls saying how many folders you're looking at, with an × to put them all back.
Folders with nothing spare in them aren't listed at all - a tick box that changes nothing is just something else to read. And as you delete, the list keeps itself honest: a folder you've just cleared out stops being offered.
If part of your site can't be checked for some reason, the library errs on the side of caution and reports nothing as unused at all, rather than pointing you at files that may well be in use.
All of these tiles are counted from Cactus's own records. If you want to know what your storage provider is really holding, see Checking your storage at the bottom of the page.
Below that is a row of controls to help you find things in a hurry:
- A search box that looks inside the folder you're standing in, filtering as you type so you don't have to press Enter and wait. Next to it a small In [folder name] / Everywhere switch appears: leave it be to search where you are, or flip it to sweep the whole library. Searching a folder means that folder itself - files tucked away in folders inside it aren't counted, which is the same set you'd see by browsing it. If a search inside a folder comes up empty, the message offers a one-click Search all folders, and the little tag under the controls always says which of the two you're looking at.
- Sort - newest or oldest first, by name A-Z or Z-A, by file size (largest or smallest file first), or by picture size (biggest or smallest picture first). The last two are a different question from the first two: a scan of a postage stamp and a wall-sized photograph can weigh exactly the same on disc and be nothing alike on a page, so "biggest picture" sorts by how many pixels across and down a photo actually is.
- File type - show everything, just images, just videos, just 3D files, or the odds and ends that are none of those (PDFs, zips and so on).
- Picture shape - show everything, only square pictures, or only ones that aren't. Useful when you want the square ones for an icon or an avatar and would rather not eye up a whole folder to find them. Both narrowings show only pictures Cactus has measured: videos, 3D files and vectors have no shape to judge, and a picture whose proportions nobody has recorded yet is left out rather than guessed at - so if a folder looks emptier than you expected, measure the unmeasured ones and they'll join in.
- Usage - show everything, only files that are in use, or only the ones nothing points to. "In use" means referenced somewhere real: on a page or layout, as your logo or favicon, as a page's social-sharing image, or as a member's avatar. Once you're looking at the unused files across the whole library, a folder button appears beside it so you can leave whole folders out - see Narrowing the unused pile by folder.
- Tags - narrow down to a single tag (see Tags below).
- A view switch on the right flips between a grid of thumbnails and a tidy list - the list is handy when you want to eyeball names, sizes and folders down a column, and you can sort it by tapping the Name, Size, Dimensions or Uploaded headings. Cactus remembers both your chosen view and sort order for next time.
Cactus records a photo's width and height the moment it arrives, and shows it in the list view and on the file's own preview. Pictures uploaded before that came along have never been measured, so they can't take part in a picture-size sort and sit at the end of it instead.
The first time you choose one of the picture-size sorts, a note appears above the files saying how many are unmeasured, with a Measure image sizes button beside it. It works steadily through them in the background, showing its progress as it goes, and it picks up where it left off if you wander off mid-way - so on a big library you can run it, leave it, and come back. A file it genuinely can't read (one whose storage has gone walkabout, say) is left unmeasured and reported at the end, rather than holding up the rest. Videos, 3D files and vector logos never carry a measurement: a video isn't a picture, and a vector has whatever size you draw it at.
Whenever a filter is on, a little tag appears under the controls spelling out what you're looking at ("Images only", "3D files only", "Square only", "Not in use", and so on). Each has an × to lift just that one, or Clear all to start fresh. A small line above the files tells you how many there are, so you always know how big the set you're looking at is. If a search or filter turns up nothing, the empty message offers a one-click Clear filters to get everything back.
Thumbnails sit in a square well and show the whole picture inside it rather than cropping it to fit, so a tall photo looks tall and a wide banner looks wide - you can tell at a glance what shape a file actually is. And when you change a picture - crop it, reshape it, resize it, optimise it or swap the file - the thumbnail updates there and then, rather than making you wander into another folder and back to see it.
Each file carries a small in use dot (green) or unused (grey) marker. Files you've already slimmed down wear a green ✓ Optimised badge, and any tags you've added show as little chips. Any photo that's missing its alt text gets a small Alt? flag in the corner, so gaps in your descriptions are easy to spot and fix. If a file's preview can't be loaded, you'll see a tidy placeholder rather than a broken-image icon.
Got a big library? Just keep scrolling - more files load in automatically as you go, no need to click through pages.
Hover over a thumbnail and a couple of quick buttons appear in its corner: Optimise (the little lightning bolt, on photos and 3D models that haven't been done yet) and Copy link - so the two things you reach for most aren't tucked away behind a right-click.
Click any file and a details panel slides in from the right. It shows the full picture along with the filename, file size, type, folder, and who uploaded it and when. Click a 3D model and you get the model itself, turning gently on the spot: drag it to look round it, scroll to move in closer. It stops turning the moment you take hold of it, so it isn't fighting you while you inspect a corner. Handy when a folder holds a dozen chairs whose filenames all look much the same - no need to download one to find out which is which. From here you can edit its alt text - a short description used by screen readers and search engines - and tick Decorative for images that are purely for show and need no description. You can also edit its tags on the spot, step through your files with the arrow buttons (or the arrow keys) - and Cactus keeps loading more as you reach the end, so stepping through never hits a wall - and reach every action for that file in one place: Open original, Copy link, Download, Optimise (for photos and 3D models that haven't been), Edit image…, Change ratio…, Resize…, Rename…, Move…, Cut, Copy and Delete. Press Esc or click outside to close.
Copy link pops the file's web address onto your clipboard, ready to paste wherever you need it; Download saves the original back to your computer. Both are also on the right-click menu.
Drag files straight in from your computer - drop them anywhere on the library and they upload into whichever folder you're viewing, no need to click Upload first. You can also drop them straight onto a folder in the tree on the left to upload into it without opening it first. It has to be a file, mind: a picture dragged straight off another website (a supplier's page in the next tab, say) is only a link to that picture, so the library tells you as much instead of pretending to upload it. Save it to your computer first, then drag the saved file in.
Right-click an empty patch of the library (not on a file) for a handy menu to paste, upload, make a new folder or select all - so pasting no longer needs a file to aim at.
A few keyboard shortcuts if you like to move quickly: Ctrl/Cmd+A selects everything on show, Ctrl/Cmd+X cuts and Ctrl/Cmd+C copies your selection, Ctrl/Cmd+V pastes whatever you've cut or copied, Delete removes what's selected (with the usual confirmation), and Esc clears your selection.
When you've got a few files selected, a Copy links button on the selection bar puts all their web addresses on your clipboard at once, one per line - handy for pasting a batch into an email or a spreadsheet.
Only tapped a few pictures but want the lot? The library only shows 25 at a time to keep things snappy, so ticking every visible one still leaves the rest of a big folder untouched. A Select all [total] button appears on the selection bar whenever there's more to grab - click it and every file your current folder, search or filter matches gets selected, loaded or not, ready for Delete, Move, Optimise or any other bulk action.
A word of caution: "Not In Use" means nothing on your site links to it right now. If you've saved an image's address somewhere Cactus can't see - pasted into a third-party tool, say - it'll still show as unused. So have a quick think before deleting anything you don't recognise.
Folders keep a growing library tidy - one for logos, one for blog photos, one for that client's product shots, however you like to work.
- Make a folder with the + New folder button at the bottom of the folder tree. It's created inside whichever folder you're currently viewing, so you can nest them as deep as you like.
- Open a folder by clicking its name in the tree, or a step in the breadcrumb trail to hop back up.
- Rename or delete a folder using the small pencil and bin icons that appear beside its name in the tree.
- Upload straight into a folder by opening it first, then clicking Upload - the new files land right there.
- The number beside each folder counts everything inside it, subfolders and all - so a folder that only holds other folders no longer reads "(0)" while quietly containing two hundred photos. Hover the number and it tells you the split: how many are filed in that folder itself (which is what you see when you click it) and how many are in there altogether.
- Stay where you were: the folder you're viewing is remembered in the page address, so refreshing the page (or bookmarking it, or sending the link to a colleague) opens that same folder rather than tipping you back out to the top.
Drag and drop is the quickest way to file things away: grab any thumbnail and drop it onto a folder in the tree (or onto a step in the breadcrumb). Selected several files first? Dragging any one of them carries the whole selection along.
Reorganise whole folders the same way - drag a folder in the tree onto another folder to nest it there, or drop it on Media at the top to move it back to the root. Everything inside travels with it.
If you have the shop installed, you don't file product pictures by hand. Every photo, 3D model and download attached to a product is put away under Shop → the product's master category → the product's own folder, matching your category tree, and it is re-filed whenever you save the product with a different category or a different name.
Renaming a product takes its whole folder with it. Not just the product's own photographs: its variations' pictures, its 3D models, its spec sheets, colour swatches and description videos all move to the folder named after the new name, in one go. The folder itself moves the moment you save, so the library shows it in the right place straight away; the files are then copied across behind the scenes. A big range can have several hundred of them, so on a very large product the copying may not all fit into one save - nothing is broken while it catches up, every file keeps showing from where it was, and your next save of that product (or the tidy-up below) finishes the job. Two folders that turn out to belong to the same product are merged rather than left side by side, and a file that would land on a name already taken is kept under a slightly different one, never written over.
(Before this, renaming a product moved its own photographs and left everything else under the old name. If you renamed products back then, the tidy-up below finds those leftovers and puts them where they belong.)
There is one thing that does not re-file itself, and it is worth knowing about: renaming a category, or moving it under a different parent. The files already filed under the old name stay where they are, which leaves the same category showing up twice in your library with its pictures split between the two spellings. The same goes for a product renamed or re-categorised by a spreadsheet import, which changes the product without touching its files.
So the shop tells you when it has happened. Open Shop → Categories, or rename or re-parent a category there, and if anything is filed under a name the shop no longer uses, a note appears at the top of that screen saying how many files are affected, with a Tidy up filing button. Nothing is broken while you wait - your shop shows every one of those pictures either way - so you can do it there and then or leave it for later. Pressing the button moves them across in small batches and counts them off as it goes (a product with more files than one batch has time for simply goes round again), and every place that pointed at a file follows it automatically: product galleries, variation swatches, 3D models, spec sheets, description videos, even old saved quotes.
A picture that two products share is left in whichever of their folders it already sits in. Moving it into one product's folder would only take it out of the other's, and the note would never go away.
Why not just do it automatically? Because moving files is real work in your storage, and a single category can carry tens of thousands of them. A rename that quietly turned into twenty minutes of copying would either give up half way or leave you staring at a spinner. Better to tell you, and let you press the button.
If you have the Unified Inbox installed, everything that arrives on a message or goes out on one is filed under Inbox → the other person's email address → Received or Sent. One supplier's whole paper trail in one folder, without anybody dragging anything anywhere.
Two things worth knowing. They are ordinary library items, so anybody who can use the media library can see them, invoices included. And the message still points at them: renaming or moving one of those folders is fine, because the conversations follow it, but deleting a file out of there does mean the paperclip on that email has nothing left to open. The library will tell you a file is in use before you delete it, and an email counts.
Careful with deleting folders. Deleting a folder is permanent and takes everything inside it with it - every file and every subfolder, removed from your storage for good. Before it does anything, Cactus shows you exactly how much it's about to remove and warns you by name about any files that are still in use on your site. Anything that was in use gets unhooked as it goes (see Deleting something that is still in use below), so a folder of product photography does not leave a row of broken pictures behind it. There's no undo, so read that summary before you confirm.
- Rename a file by right-clicking it and choosing Rename…. The new name flows through to everywhere the file is used, so nothing on your site breaks.
- Move files either by dragging them onto a folder, or by selecting them and choosing Move to… (from the right-click menu or the selection bar) and picking a destination.
If a file you're moving or renaming would end up with the same name as one already in the destination, Cactus stops and asks what to do: Keep both (it adds a number, so logo.png becomes logo (1).png), Replace the existing one, or Skip it and leave things be.
New photo of the same product? Logo redrawn? A typo spotted in a graphic after it went up in nine places? Replace swaps the file for a fresh one while keeping the item itself, so everything already pointing at it carries on pointing at it and simply shows the new picture.
You'll find it three ways:
- Hover any tile in the grid and click the 🔄 button.
- Right-click a file and choose Replace file….
- Open a file's preview and use Replace file… in the action row.
Pick your new file and that's it. The item keeps its name, its folder, its alt text and its tags - only the picture changes. Every page, product and setting using it updates in one go, with nothing to go round and re-point by hand.
This is the bit worth knowing: it's not the same as uploading the new file and deleting the old one. That way round, every page still holding the old file goes blank, and you get to find each one yourself. Replacing keeps them all working.
A couple of things to expect:
- There's no undo. The old file is gone from your storage once the new one is in. If you might want it back, download it first.
- Big files are fine - the same generous limit as a normal upload, with a progress bar in the notification bell while it goes up.
- Pictures can change format freely. A JPEG can take over from a PNG, a PNG from a WebP, and so on - Cactus quietly re-points everything that was using the old file, so nothing on your site notices the swap. This matters more than it sounds: after Cactus optimises a picture it's stored as WebP behind the scenes, and replacing it with your original again used to be refused for being "the wrong type". It isn't any more.
-
3D models are the one place Cactus will say no to a change of type. A model's address is pinned by the product pages that show it, so a
.glbhas to be replaced by another.glb. Cactus tells you up front rather than after the upload.
If what you actually want is a changed version of the picture you've already got - trimmed, reshaped, or scaled down - the next three sections do that without you leaving Cactus at all.
Need to trim an image down or reframe it? Edit image… opens a built-in crop tool - no need to fire up Photoshop for a quick tidy-up. You'll find it two ways: right-click any picture, or open its preview and use the button in the action row. (It only shows for photos - the sort of vector logo that scales to any size has nothing to crop.)
Drag the corners or edges of the box to choose the part you want to keep; drag from the middle to slide the whole box around. The bit you're cutting away dims so you can see exactly what you'll be left with.
- Preset shapes - tap 1:1 for a perfect square, 16:9 for a widescreen banner, or any of the other common ratios (3:2, 4:3, 2:3, 3:4, 9:16). The box then keeps that shape however you resize it.
-
Your own shape - pop your own numbers into the two ratio boxes (say
5and4) and press Apply to lock the crop to that. - Free-form - or leave it on Free and crop to whatever suits.
When you're happy, you've two ways to save:
- Save (replaces original) swaps the cropped version in for the old one everywhere it's used on your site - pages, logos, everywhere. The file keeps its name and its place in your folders, so anything pointing at it carries on pointing at it. It's a genuine replacement with no undo, so Cactus asks you to confirm first.
- Save as new… keeps the original exactly as it was and tucks a fresh, cropped copy into the same folder. It'll suggest a name (the original plus "(edited)"), which you're free to change.
Sometimes you don't want to lose any of the picture - you just want it to fit. A gallery that wants neat squares, a banner slot that wants widescreen, a set of product shots that arrived in six different shapes. That's Change ratio…, and you'll find it in the same two places as the crop tool: right-click any picture, or open its preview and use the button in the action row.
Here's the honest bit, because it explains everything about how this works. A picture can't change shape without one of three things happening: you cut bits off, you squash it, or you add space around it. The crop tool above is the "cut bits off" option, and squashing is nobody's friend. So Change ratio adds space. Your picture arrives at the new shape completely untouched - nothing trimmed, nothing stretched - sitting in the middle of a little more room than it had before.
Pick your shape - 1:1 for a square, 16:9 for a widescreen banner, or any of 3:2, 4:3, 2:3, 3:4 and 9:16. Fancy something else entirely? Put your own numbers in the two boxes.
Then choose what fills the new space:
- Blurred image - a soft, out-of-focus blow-up of the picture itself, sitting behind it. It's the one to reach for nine times out of ten: it fills the gap without announcing that there was a gap.
- Colour - a flat colour of your choosing, with White and Black a click away. Best when your page background is a known colour and you want the padding to vanish into it.
- Transparent - no fill at all, so whatever's behind it on the page shows through. Only offered when the picture can actually hold transparency; JPEGs can't, so for those it's greyed out (a "transparent" JPEG would just come out black, which helps nobody).
A preview shows you exactly what you'll get before you commit. Then save the same two ways as the crop tool: a new image, which leaves your original alone, or replace the original, which swaps it in everywhere it's used on your site - no undo, so you'll be asked to confirm. Replacing keeps the file's name exactly as it was, which matters more than it sounds: a reshaped product shot is still the same file your shop is pointing at, so it stays on the page.
One thing worth knowing. Because the file keeps its name, browsers that have already downloaded it may hang on to the copy they've got for a while. If you've reshaped a picture and still see the old shape, give the page a hard refresh - your visitors will pick up the new one as their own copy expires.
Tick as many pictures as you like - or use the select-all box - and Change ratio… appears in the bar along the top. Choose the shape and the fill once, and every selected picture gets the same treatment.
A few sensible things happen without you asking:
- Anything already the right shape is left well alone rather than needlessly re-saved.
- One awkward file won't spoil the batch. If a picture can't be reshaped, the rest still go through and the toast tells you how many were done and how many weren't.
- Six at a time, counted off as it goes. The button shows how far along it is, so a few hundred pictures don't leave you staring at a spinner wondering whether anything is happening.
- Saving as new copies gives each one a name based on the original plus the ratio, so forty files don't all fight over the same name.
- Very extreme shapes - a long thin panorama forced into a tall portrait, say - would technically need an enormous canvas of mostly empty space, so Cactus quietly scales the whole thing to something sensible. The picture keeps its proportions; it just doesn't become a 60-megapixel monument to padding.
Modern phones and cameras produce enormous pictures. A photo straight off a decent phone can be 4000 pixels wide, which is roughly four times more than any website will ever show and rather more than your visitors want to download. Resize… makes the picture smaller - the actual picture, not just how it's displayed. You'll find it in the same places as everything else: right-click any picture, or open its preview and use the button in the action row.
Where Change ratio above changes an image's shape, resizing keeps the shape exactly as it is and changes the size. Nothing is cropped and nothing is squashed - the whole picture is simply scaled down.
Pick how big you want it: Extra large (2400px), Large (1920px), Medium (1000px) or Small (600px). Those numbers are the longest edge, so a landscape photo and a portrait one both come out sensibly sized without you having to think about which way round it is. Want something specific? Type a width, a height, or both into the boxes. Leave one blank and it simply follows along, keeping the proportions.
For a single picture, Cactus tells you what you're getting before you commit - the size it is now, and the size it's about to become.
Resizing only ever makes pictures smaller. Ask for a 2400px version of a 900px picture and Cactus will tell you it already fits and leave it alone. Blowing an image up doesn't add detail that was never there; it just makes a bigger file that looks worse. If you need a genuinely larger version, you need the original.
Save it the same two ways as everything else: a new image, which leaves your original untouched, or replace the original, which swaps it in everywhere it's used - no undo, so you'll be asked to confirm first. Replacing keeps the filename exactly as it was, so anything already pointing at that picture carries on working. The same cache note from the ratio tool applies: if you've replaced a picture and still see the old one, give the page a hard refresh.
Tick as many pictures as you like and Resize… appears in the bar along the top. Set the size once and every selected picture gets it, each measured on its own merits:
- Anything already smaller than the size you picked is left alone, not needlessly re-saved.
- One awkward file won't spoil the batch. The rest still go through, and the toast tells you how many were done and how many weren't.
- Six at a time, counted off as it goes. The button shows how far along it is, so a big pile of holiday photos doesn't leave you guessing.
- Saving as new copies names each one after the original plus its new size, so nothing fights over the same name.
- The toast tells you how much space you saved, which on a folder of holiday photos is usually the most satisfying number in this entire admin area.
This pairs nicely with Optimise further down: resizing throws away pixels nobody was looking at, optimising squeezes what's left. Doing both to a stack of camera photos routinely takes a page from unpleasant to instant.
Order doesn't matter. Resize a picture you've already optimised and it keeps its green ✓ Optimised badge, because the smaller copy comes out of the same wash and is smaller still. You won't be nagged to do a job that's already done.
Right-click any file for a familiar Cut, Copy and Paste menu - handy for shuffling things between folders.
- Cut then Paste moves the files into the folder you're viewing (cut files look faded until you paste them).
- Copy then Paste makes a duplicate in the folder you're viewing, leaving the original where it was.
Select several files first and the whole lot travels together. You can also cut, copy and paste from the bar that appears when you've got files selected.
Folders put a file in one place; tags let you label it with as many keywords as you like - "hero", "winter-campaign", "team" - so you can round up related images no matter which folder they live in.
Click a file to open its details panel (or right-click and choose Tags…, which opens the same panel). In the Tags section, type a word and press Enter to add it; start typing and Cactus suggests tags you've used before so you keep them consistent. Remove one with the little × on its chip, then press Save tags. Once you're using tags, the Tags filter above the library lets you show just the files carrying a particular one.
- In the page editor, drag an Image block onto your page.
- Click the block to open its settings.
- Click the media picker to choose an image you've already uploaded, or upload a new one.
- Add alt text (a short description of the image - important for accessibility and search engines).
You can switch to a different provider at any time from Settings → General → Media.
When you switch:
- New uploads go to the new provider immediately.
- Existing images stay where they are and continue to display correctly.
To move existing images to the new provider, click Migrate now on the Media settings page. Cactus moves everything across in batches while you wait. You can see a breakdown of how many images are on each provider before you decide.
At the bottom of Settings → General → Media there's a switch: Load images only as visitors scroll to them. It's on to begin with, and for almost every site that's where it should stay.
With it on, pictures wait until a visitor is nearly scrolled to them before they're fetched. Nobody downloads the eight photos at the bottom of a page they abandoned after the first paragraph - which is most people, most of the time.
This applies to every picture on your pages: the images in your content, the photos in quotes, the pictures on cards and panels, and logo strips.
That includes the big picture at the top, and it's worth knowing what that means. The image at the top of a page is the one visitors are actually waiting to see, and asking the browser to hold off on it can make the page feel slower to arrive even though it's doing less work overall. If the top of your pages feels sluggish, this switch is the first thing to try turning off.
Turn it off and every image on a page is fetched immediately, whether anyone scrolls that far or not. More work for your visitors' connection and more traffic on your storage bill, but the top of the page appears without hesitation. It's your site, and this is the trade.
Images added by modules - a shop's product pictures, say - follow their own module's rules rather than this switch.
A few things change where a file actually lives without changing which file it is: optimising it (a PNG becomes a WebP), resizing or cropping it, replacing it, renaming it, or dragging it into a different folder. Cactus goes round and updates everything that pointed at the old spot - your pages, your layouts, your product photographs, your swatches - so nothing breaks.
The awkward case is a screen that was already open. If you had a product open in one tab, optimised its pictures in another, and then pressed Save on the first tab, that Save wrote down where the pictures used to be. There was nothing to update at the time, because you hadn't saved yet.
Cactus now keeps a note of every address a file has ever had, which sorts out both halves of that:
- The file never counts as spare. Something still points at it, even if it's pointing at the old address, so it stays out of the Unused tile and won't be offered up for deletion.
- The old address gets quietly corrected. Save that product page and Cactus swaps the out-of-date address for the current one on its way into the database, so the pictures keep showing.
You don't have to do anything for this. It's worth knowing about mainly so that a file listed as unused really is unused.
One limit, and it's an honest one: this only covers moves from this version onwards. Anything that shifted before it has no note against it.
There's one more place an old address can linger: a page somebody's browser, or a speed service like Cloudflare, saved before the move. If you've switched on page caching under Settings > General > Speed, a product page can be handed out from that saved copy for a while, old picture addresses and all. Cactus used to bin the old file the moment it moved, so for the rest of that window the page drew a broken picture in place of every colour swatch - not a look anybody was going for.
So the old file now stays where it is until no saved page could still be asking for it, and an hourly clean-up deletes it after that. How long that is depends on your cache settings: twice the longer of your two cache times (a saved page can be served for its full time, then again while a fresh one is fetched), plus an hour to be safe. With the usual settings that's a few hours; with a week-long cache on option pages it's a fortnight. The files are small and it's only the previous copy, so the extra storage is pocket change.
Pages you build in the page builder are refreshed straight away when a picture on them moves, so they never hold onto an old address in the first place. You don't have to do anything for any of this.
A product photograph is a big file because it has to be. Somebody on the product page wants to lean in and see the weave of the fabric, so the picture behind it is a few thousand pixels across and weighs the better part of a megabyte.
The same photograph then gets drawn about three centimetres wide on a category page, twelve of them at a time, and as a postage stamp in the strip of thumbnails under the main image. Sending the big one to do those jobs is like posting a poster to somebody who asked for a stamp.
So Cactus keeps a small copy of each picture, 300 pixels on its longest side, filed in a folder called thumb tucked inside the original's own folder, with -thumb on the end of its name. Category pages, product cards and thumbnail strips are drawn from that copy; the product page's main image is still the original, because that's the one people look at properly.
Keeping them one level down is worth a word. A shop's folder of product photographs used to hold every picture twice - the photograph and its small copy, side by side, all the way down - so finding the one you actually wanted meant reading past its double. Now the folder holds your pictures and a thumb folder you can happily ignore.
On a real catalogue this is the difference between a category page pulling down five and a half megabytes of photography and pulling down a few hundred kilobytes.
You don't have to do anything. Add a photograph to a product - or to one of its variations - and the small copy is made when you save. It's the same for a picture you swap in later.
A few pictures won't get one, and that's fine rather than broken:
- anything already small enough that a copy would be a waste of a file
- drawings and animations (SVG and GIF), which either scale on their own or would stop moving
- a picture hosted somewhere else, where there are no bytes for us to work from
In every one of those cases the original is used, exactly as it always was. Slightly heavier, never wrong.
These copies count as in use. They'll show up in the media library like any other file, and they will not appear in the Unused tile - something is pointing at them. Don't go hunting them down to tidy up; deleting one takes a card picture with it.
Move a picture and its copy follows. Drag a photograph into another folder, rename it, refile a product - the small copy goes along and keeps its matching name, so nothing is left stranded behind in the folder you just emptied.
Crop it, resize it, replace it, run the optimiser over it - whatever you do to a picture in the media library, its small copy is remade from the new version straight away, and everything pointing at the old one is moved across for you.
This matters more than it sounds. Without it, you would crop a product photograph, look at the product page and see your crop, and every category page in the shop would go on showing the uncropped one indefinitely. Nothing would look broken, which is exactly why nobody would spot it.
The remade copy gets a new address rather than overwriting the old one, which is the only way a change like that actually reaches somebody who has visited before - a file at the same address is one their browser has already been told it can keep.
If the remake fails for any reason, the old copy is left exactly where it is. An out-of-date picture is a nuisance; a missing one is worse, so nothing is thrown away until its replacement is ready.
One case behaves differently on purpose: replace a photograph with something that has no sensible small version - a drawing, an animation - and the copies are cleared rather than remade, and everything falls back to the picture itself.
Saving a product is what makes the copies for its photographs, and that covers nearly everything. Two cases slip through: a bulk import, which writes hundreds of products at once and is deliberately not allowed to sit there resizing them, and the occasional picture that simply cannot be read.
So there's a nightly tidy-up that picks up whatever is outstanding. It works in small amounts - a few dozen pictures a night - because it is there to catch the trickle, not to work through a whole catalogue. Anything waiting its turn shows its full-size picture in the meantime, which is heavier but perfectly correct.
If you have just switched this on over an existing shop, don't wait for the nightly job to grind through thousands of pictures. That's what the one-off sweep below is for.
A shop that has been running a while has thousands of photographs and no small copies of any of them, and they only get made when somebody saves the product. Rather than asking you to open and re-save every product you own, there's a one-off sweep that goes through the lot.
It isn't a button, and deliberately so: it reads every photograph in the shop once, which on a decent-sized catalogue is several gigabytes and a couple of hours. That's a job for whoever looks after your site, run from their own machine, not something to set off from a web page and hope it survives. Ask them and point them at modules/shop/scripts/backfill-thumbs.mts.
It picks up where it left off if it's interrupted, so there's no way to half-break it.
Small copies used to sit beside their originals rather than in a thumb folder of their own. If your site has been running a while, most of yours still do - which is untidy and nothing more, because Cactus looks in both places and always has.
There's a one-off sweep for it. Same shape as the one above: not a button, because every file it moves is a real move at your storage provider, and on a catalogue of any size that's tens of thousands of them. Ask whoever looks after your site and point them at scripts/backfill-rendition-folders.mts. It works folder by folder, says which one it finished on, and a folder it has already done costs it nothing - so an interrupted run just carries on.
If you also run variations and are tidying those into their own folder, do the variations sweep first. Otherwise this one dutifully tidies the copies, and then they all move again.
Deleting an image via the admin removes it from your storage provider immediately. There is no recycle bin or undo. If you need a deleted image back, you'll need to re-upload it or restore from a backup.
If the image is still in use somewhere - a page, a layout, your logo, and so on - Cactus won't let you delete it by accident, and tells you where it's being used. Swap it out or remove it there first, then delete. That includes anything still pointing at an address the file has since moved off (see When a file moves above), and anything Cactus couldn't check because part of your site wasn't answering - it would rather hold a file back than bin one it wasn't sure about.
You can still go ahead. Choose Delete anyway and Cactus unhooks the picture as it goes, so nothing is left pointing at a file that is no longer there:
- A product photograph is taken out of that product's gallery, on every product using it, and the remaining photos close the gap. If it was the main photo, the next one takes over as main - so a product is never left with a full gallery and nothing on its card.
- A small copy - the shrunk version Cactus makes for cards and thumbnail strips - is simply unhooked, and those surfaces go back to drawing the full-size original until a new small copy is made. The original is untouched.
- And the other way round: deleting a picture takes its own small copies with it. A shrunk copy of a photograph that no longer exists cannot be drawn by anything and cannot be found in the library either, so leaving it behind would only ever mean finding a file you thought you had deleted. Anything holding one of those copies is unhooked first, exactly as above.
- An option swatch loses its picture but keeps the choice: a fabric called Rivet Teal is still orderable, it just shows as a name rather than a square.
- A category picture, a collection cover, a social sharing image, your logo, your icons, a page's sharing image and a member's photo are all cleared.
Three things are deliberately left alone, because unhooking them would lose something you cannot get back by re-uploading the file:
- A digital download somebody has bought. The product keeps its download entry so you can see what is missing and put a new file in its place. Left to a sweep, it would look as though there was never a file at all.
- A delivery photo or signature, and a customer's "report an issue" photograph. That is evidence, kept for the day there is a disagreement about an order. A tidy-up of the library is not the moment to erase it.
- A picture inside a designed description. That one sits in a block with its own heading and text around it, and whether the block should go, shrink or show a gap is an editing decision rather than something to guess at. Open the description and take it out yourself.
None of this brings the file back - it only makes sure the rest of your site carries on rendering. And if something goes wrong part-way through unhooking, the delete stops and the file stays where it is, rather than leaving you half-way.
Tick the small checkbox in the corner of each thumbnail (or the tick-boxes in the list view) to select more than one file. A bar appears above the library telling you how many you've picked, with a Delete button. Confirm in the pop-up and they're gone.
Got a long run of files to bin? Tick the first one, then hold Shift and tick the last one - everything in between gets picked too.
If any of your selection turns out to be in use somewhere, Cactus holds those back and tells you where - you can then choose Delete anyway if you're sure, or back out and go and unlink them first. Delete anyway unhooks each one on the way out, exactly as described above, so a bulk tidy-up does not leave a trail of broken pictures behind it.
Everything else on the media page is counted from Cactus's own records, so it can only ever agree with itself. The Storage check at the bottom of the page is the one thing that goes and asks your storage provider what is actually sitting there, and reports the difference. You'll only see it if you're allowed to manage settings.
Press Run check. It can take a little while on a big library, because it genuinely reads through everything your provider holds - the button counts the files as it goes, so you can see it is getting somewhere. There is no upper limit on how many files it will check; a big library is simply read in several passes, one after another, and the results only appear once the last one is in. Then it tells you about up to six things:
- Leftover files - files sitting in storage that no item in your library points to and nothing on your site is using, along with how much room they're taking up. These are the usual reason your provider's own dashboard reports more files than your library does. They build up in small ways: a file gets replaced or moved and the old copy doesn't quite get cleared away.
- In use, but with no entry here - files your site is genuinely serving that never got an entry in the library. A 3D model or a product photograph added in bulk can land this way, and so can a file whose entry was deleted while a product page carried on using it. They look like leftovers and are anything but, so nothing here is ever offered for deletion.
- Kept outside the library on purpose - files an add-on holds that were never meant to be library items in the first place: a picture that is part of an email rather than attached to it, say, or a file dropped onto a reply that has not been sent yet. Those stay out of the media picker deliberately, so this is a count for the sake of the arithmetic and nothing more. There is no button, and there won't be one. You'll only see this heading at all if something on your site keeps files that way.
- Old copies waiting to be cleared - the previous copies of pictures you've recently optimised, resized, replaced or moved. They're kept for a while so a page saved before the change doesn't show a broken picture (see The old copy hangs about for a bit above), and the hourly clean-up deletes them on its own. No button, deliberately: clearing them early is exactly the thing that breaks those pages.
- Files that have gone - the opposite problem. An item shows in your library but its actual file is no longer in storage, which is why it appears as a broken picture. Usually because someone tidied up in the provider's own dashboard: deleting a file there tells Cactus nothing, so the entry stays behind.
- Sizes recorded wrongly - where Cactus has the wrong size written down for a file. Harmless in itself, but it makes the "Storage used" figure on this page slightly out.
Four of them you can put right on the spot. Correct these rewrites the wrong sizes to match the real files, and changes nothing else. Delete all leftovers removes the stray files from storage and tells you how much room you got back. That one asks you to confirm first, and only appears if you're allowed to delete media. Before it offers you anything, the check reads through every page, every layout and every add-on's own records to see what your site is actually using, so a file in use can't reach that list. If any of that can't be read for whatever reason, the check reports no leftovers at all rather than guess. It is not undoable from here.
Add these to the library gives an entry to the files your site is using that the library never knew about. Nothing is moved, copied or re-saved - each file stays exactly where it is, and simply gains the entry it should have had, filed in the folder its own address already puts it in. Afterwards they turn up in the library like anything else, count towards your storage total, and can be renamed, tagged or replaced in the usual way. It's the only way that list ever empties, and it needs permission to upload media. A file whose name doesn't say what kind of file it is gets left alone and named for you, rather than being guessed at.
Remove these entries clears out the items whose file has gone. Nothing is deleted from your storage by this - the file went long ago - it only tidies away the entries left pointing at thin air. Anything still used on a page is left alone and listed for you instead, so you can see what needs a new picture before you commit. If you'd rather have them gone regardless, there's a second button for that, and the spots they filled will simply be empty until you put something else there.
Big clean-ups - hundreds of entries, leftover files or additions at once - are worked through in batches, with a running count shown as it goes. If a batch stumbles along the way it's quietly retried a couple of times before the check admits defeat, so a wobbly connection doesn't send you back to square one.
If you'd sooner keep an item and get its picture back, use Replace file on it instead and upload a fresh copy over the top.
If some of your storage can't be read, the check says so plainly rather than pretending it found nothing. That matters most if you use Cloudinary or ImageKit, which file things under references they invent themselves, so their contents can't be lined up against your library this way.
If you look at your storage provider's own file browser, it may well report several times as many files, and a great deal more space, than your library does. That usually isn't a fault.
Most providers keep the previous copy of a file for a while after it's replaced, and leave a small marker behind when one is deleted. Their file browser counts all of that. So a spell of tidying up, renaming or reorganising can briefly triple the numbers on their dashboard while your library stays exactly the same size. Providers generally have a housekeeping setting that clears the old copies out automatically after a day or so. If yours does, it's worth having it switched on, and the numbers will settle by themselves.
The Storage check ignores all of that and looks only at the current version of each file, which is why it's the figure to trust.
Photos straight off a phone or a designer's machine are often far heavier than they need to be, and heavy images make pages slow to load. The media library can slim them down for you. The same goes for 3D models, which are heavier again - see Slimming down 3D models below - and for video, which is heavier still: see Slimming down videos.
Open any un-optimised photo and its details panel has an Optimise button (it's on the right-click menu too). Press it and Cactus re-saves the image in a leaner modern format (WebP), keeping the same dimensions and near-identical quality but usually at a fraction of the file size. The original is tidied away and the slimmer version takes its place everywhere it was already being used - pages, layouts, your logo, avatars - so nothing on your site breaks. Your file keeps the name you gave it, too; only the bit after the dot changes, because the picture genuinely is a WebP now. Once done, the image picks up a green ✓ Optimised badge so you know it's been through the wash.
Not sure where to start? The Optimisable tile at the top of the library tells you how many photos are still worth doing and, with a click, rounds them all up for you.
Tick the checkbox in the corner of each thumbnail (or tick the first, hold Shift, and tick the last to grab a whole run - the list view has tick-boxes too, and a "select all" box at the top), then press Optimise in the bar that appears above the library. Cactus works through six at a time and counts them off as it goes - "Optimising 214/600" - so a big batch tells you it's getting on with it rather than sitting there silently. At the end it says how many it slimmed down and roughly how much space you saved.
Doing several at once is genuinely faster than doing them one after another, which matters once you're into the hundreds: a batch that used to take an age now gets through it in a fraction of the time, and a very large selection no longer risks giving up part-way through.
A few sensible rules keep things safe:
- Logos and icons in the SVG format are left alone - they're already tiny and shrinking them would do more harm than good.
- Anything already as small as it's going to get is skipped rather than made bigger, and marked as optimised so you're not offered it again.
- Optimising is a one-way tidy-up - the heavier original isn't kept - but since the picture stays visually the same, there's rarely a reason to want it back.
Plenty of people optimise their pictures on their own computer before uploading them, particularly for a big batch. Cactus has no way of knowing that has happened, so it will cheerfully offer to do the job all over again.
You can put it straight. Select the files and press Mark as optimised in the bar above the library, or use the button on a single file's details panel - it's on the right-click menu too. The files themselves aren't touched: nothing is re-saved, the picture doesn't change and neither does its name. All it does is tell the library to stop asking. The green ✓ Optimised badge appears, and the Optimisable tile stops counting them.
Marked something by mistake? Select it again and the same button now reads Mark as not optimised, which puts it back on the list. Nothing is lost either way, which is rather the point of letting you say it in the first place.
To be clear, pressing Optimise on a picture that genuinely is already as small as it gets does no harm at all - Cactus re-saves it, finds it can't do better, leaves your original exactly where it was and ticks it off. Marking simply spares you the wait, which on a few hundred files is a wait worth sparing.
If you use the Product 3D views module, your 3D models sit in the media library alongside everything else - and they are comfortably the heaviest files on the site. A model straight out of a design tool routinely carries duplicate copies of the same part, materials left behind by things that were deleted, and textures at four times the detail any screen can actually show. Every shopper who opens that product downloads the lot.
New models are slimmed down automatically. Upload one and Cactus compresses it on the way in, so it arrives wearing the same green ✓ Optimised badge your photos do. There is nothing to remember and nothing to press.
Models you uploaded before this existed get the same Optimise button as everything else - on the file's details panel, on the right-click menu, and as the little lightning bolt when you hover its thumbnail. The Optimisable tile at the top of the library counts them in with your photos, so one click rounds up everything still worth doing and the selection bar's Optimise button works through the lot six at a time.
The saving is usually substantial - often more than half the file, sometimes a good deal more - and the model looks exactly the same. Nothing is simplified, smoothed or thrown away: it is the same shapes and the same materials, packed far more sensibly, with textures brought down to a size a screen can genuinely resolve. Shoppers get a product that appears in a fraction of the time, particularly on a phone.
A few things worth knowing:
- GLB files are the ones that get slimmed. They are the format we recommend anyway (see the Product 3D views guide), because a GLB carries everything it needs in one file. Models in the OBJ, FBX and 3DS formats are left exactly as they are - there is no equivalent tidy-up for them, and pretending otherwise would risk the file for nothing.
- A model keeps its place. Unlike a photo, which changes format and picks up a new extension, a slimmed model is written straight back over itself - so every product and variation pointing at it carries on pointing at it, with nothing to relink.
- If it can't be slimmed, nothing is lost. A model that was already tight, or that the tidy-up couldn't finish, is stored exactly as you uploaded it and simply keeps its Optimise button for another day. An upload never fails because of this.
- Models that arrived already squashed now go through too. Most design tools offer to squash a model on the way out, and plenty of the free "make my model smaller" websites do it whether you ask or not - so a fair few models turn up having already had a go at this. For a while those were the one kind Cactus couldn't finish: it would unpack the model perfectly well and then fall over putting it back together, which showed up as a grumble from the Optimise button, or as nothing at all on upload, the file quietly staying at full weight. Rather a poor showing, given they were often the very models most worth slimming. Fixed. If you have models sitting there still wearing the Optimise button after a failed go, press it again and they'll go through. One thing to expect: a model that was already squashed to within an inch of its life may come back saying it's as small as it gets, which is Cactus being honest rather than idle - the file is left exactly as it was.
- Striped desks get straightened out on the way in. Furniture models very often come out of a catalogue tool that shades the whole catalogue from one tiny shared swatch, a few pixels across, with every part of every product told to read one particular pixel of it. It is a neat trick and it works perfectly - right up until a part is re-cut so a shopper's finish can tile across it at a real size, at which point that reading wanders across the swatch and the surface picks up broad bands of the wrong sheen. The picture is right, the wood grain is right, and the top looks like it has been polished in stripes. Cactus now spots that as a model arrives, works out the single shade the part was standing on, and pins it there instead. Models that use the trick properly - which is nearly all of them - are not touched at all.
- The texture map stays put. For a while the slimming threw away a model's texture map - the part that says how a flat piece of material wraps round a shape - whenever its surfaces had no picture on them yet. It applied to both routes in: a file being slimmed as it uploaded, and a file you slimmed yourself with the Optimise button. Nothing looked wrong afterwards: the model still turned, still took its colours. But the material configurator had lost the one thing it measures the weave against, so every part sat on "not measured" for good. Fixed, with apologies. Models slimmed since then keep it; a model slimmed while that was the case was rewritten in place, so if it has since started reporting "not measured" it wants putting back from your own copy.
Video is the heaviest thing on most sites by a distance. A clip straight out of an editing suite is routinely exported at the quality you would want for a television rather than a product page: our own sample videos arrived at thirty to forty-five megabytes for twenty seconds of a chair going up and down. A shopper on a train pays for every one of those megabytes.
Open any video and its details panel has an Optimise video button - or tick several videos and press Optimise videos in the bar above the library, which does the lot at once, each on a machine of its own. Press it, choose how careful you want Cactus to be, and it re-saves the clip in the one video format that plays on absolutely everything - every phone, tablet, computer, and the smart TV in the showroom - at a fraction of the weight. Typically about half, and often less, with no difference you can see.
You get two choices:
- Quality. Balanced is the recommended one and does what it says: roughly half the size, and nobody has ever picked the copy out of a line-up. Best quality is barely smaller than the original and is there for a hero video where every stitch matters. Smallest file gets you down to about a third, which is the right answer for a background clip or a site with a lot of visitors on thin connections.
- Largest size. Full HD by default, which leaves a normal product video exactly the size it was shot. Videos smaller than the limit are never stretched up to meet it. Drop it below full HD only for clips that never fill more than half the page.
A few things worth knowing:
- The video keeps its place. The slimmer version is written straight back over the original, so every page, product description and link already pointing at it carries on working with nothing to relink. Same file, same address, less of it.
- A silent soundtrack is dropped. Product videos are very often exported with an entirely silent audio track riding along for no reason. If there is genuinely nothing on it, Cactus leaves it behind; if there is, it is kept and re-saved properly.
- If it cannot do better, it does nothing. A clip that was already sensibly saved is left exactly as it was and simply ticked off, rather than re-saved into something slightly worse. You are told as much.
- It takes a few minutes, not seconds. Close the window and get on with something else. The bell keeps a live progress bar while it works and tells you how much it saved when it lands, in plain megabytes.
- This is a one-way tidy-up - the heavier original is not kept. Since the video looks the same, that is rarely a thing to want back, but if a particular clip is precious, keep your own master somewhere as you would for any other export.
If you have already compressed a video yourself before uploading it, use Mark as optimised to stop being offered it, exactly as you would for a photo. Nothing is touched.
Videos are optimised by a background service, so it needs to be set up for this to appear (see the Video tab). It also needs Backblaze B2 storage, which is what the service writes to.
Worth one click while you are at it: pop to Settings → General → Media and press Deploy Worker once. Videos are now told to check back for a newer copy every few minutes rather than being trusted for a year, so a visitor who watched the heavy version picks up the slimmer one almost straight away instead of keeping the old one on their machine.
Your site logo and favicon are uploaded in Appearance → Styles → Branding.
- The logo appears wherever you've placed a Site logo block in the header, footer, or a page.
- The favicon appears in the browser tab.
Both require a media provider to be configured first.
Upload one square App icon and Cactus generates the whole set for you - browser favicon, Apple touch icon, and the icons used when someone installs your site as an app. Underneath, a small preview shows exactly where each one turns up: a browser tab, an iPhone home screen, an Android home screen, and the installed app's loading screen - so you can see what you're getting before you save.
Once a logo is uploaded, an Optimise button appears next to it. Press it and Cactus will shrink an oversized logo down to a sensible size and compress it, without any loss of quality (the picture stays pixel-for-pixel identical). It tells you how much smaller the new version is (for example, 240 KB → 38 KB) and swaps it in automatically. Press Save changes afterwards to keep it.
It is worth doing if your logo started life as a large file straight off a designer's machine, since a lighter logo means faster page loads. If your logo is already small, Cactus simply leaves it alone.
Wiki: Home · Managing pages · Appearance and design · Managing users · Managing media · Modules · Configuration reference