From camera roll to catalog
A new WooCommerce store, five product lines, 2,232 photos straight off the camera, on a stock Bluehost shared account. Here is what it took to get them onto the site with WordPress, and what it took with Flying Pigs Pro. Every number below was measured on that site, in one afternoon, with the same files.
5 h 53 min
WordPress Media page, estimated for 2,232 photos
Measured: 221 of these photos in 35 minutes, before any WebP or optimizer pass.12 min 57 s
Flying Pigs Pro, all 2,232 photos, everything included
Resized, optimized, WebP only, all sizes, rights statement written. Nothing left for the server.The test rig: a Bluehost Business shared plan; Chrome on a Mac mini (M2, 16 GB) with the photos on its own disk; a 1 Gb fiber connection whose uploads to the host ran at about 80 Mb/s, which is the number that matters; the same 2,232 camera JPEGs, about 6.7 GB in five folders. Your photos, host and line will give different minutes; the shape of the comparison is what holds.
The store
Five product lines, photographed on a camera: about 2.5 to 3 MB per file, 6.7 GB in all. WooCommerce registers three image sizes of its own on top of the six WordPress makes, so every photo becomes up to ten files on the server before any WebP is added. The host is a Bluehost Business shared plan, which is where a store like this usually starts, and which caps disk I/O and holds each connection to a modest speed.
Two ways to get the photos in
The WordPress way
- Upload through the Media page, twenty or so at a time. The server resizes every photo into its sizes while you wait.
- Install an image optimizer and let it recompress the library, on a schedule or on the first visitor.
- Install a WebP plugin and let it write a sidecar beside each of the ten files.
- Set up delivery so browsers get the WebP instead of the JPEG.
- Pick a folder in the folder plugin before each batch, the same as with Flying Pigs. On disk, though, every file lands in this month’s directory with today’s date; there is no way to file a product line under its own directory or date.
With Flying Pigs Pro
- Drop a product line’s folder on the Flying Pigs page.
- Pick the folder and the date, press Start. The browser resizes each photo to 2560, optimizes it, writes it and every size as WebP, and adds the rights statement, while the upload runs.
- Done. Every file lands final. No optimizer, no WebP plugin, no delivery to set up.
What landed on the server
| After the run, in the uploads directory | Total | Per photo |
|---|---|---|
| Camera files in | about 6.7 GB | about 3 MB |
| Files on disk | 17,508 | 7.8 |
| Disk used, base image and every size | 1.0 GB | about 470 KB |
| Main image against the camera file | 90% smaller |
Every one of those files is a WebP: a 2560-pixel base and up to seven sizes. There is no JPEG twin beside any of them, because WebP only drops the JPEG instead of keeping it, and the two sizes the store never shows, 1536 and 2048, were unticked in the Sizes panel. Shared hosting counts files as well as bytes, and 17,508 is under half of what the WordPress way produces.
| The WordPress way, same photos | Per photo | Store |
|---|---|---|
| Original kept, plus the 2560 scaled copy WordPress makes | 2 large files | 6.7 GB of originals before anything else |
| Seven JPEG sizes, then a WebP sidecar for each of the nine | 16 more files | about 40,000 files |
The WordPress row is worked out from the file rules, not measured. The Flying Pigs row is a count of the directory.
Five product lines, five folders, one afternoon
The same photos went in a second time, one product line per run, to see what the workflow costs. Each run got its own FileBird folder and its own directory on disk, with a custom file date per line, while the post date stayed on Current so the library lists all five under today.
| Run | Entries | Time | On disk | In the library |
|---|---|---|---|---|
| Product Line 1 | 558 | 3 min 20 s | uploads/2020/03 | today |
| Product Lines 2 to 5 | 558 each | within seconds of the first | a directory each | today |
| All five | 2,790 | about 16 min 40 s | five directories | one month in the date filter |
| Product Line 1 again, watermark across the full width | 558 | 4 min 3 s | its own directory | today |
| Product Line 1 again, watermark in the corner at a quarter width | 558 | 4 min 0 s | its own directory | today |
The last two rows are the same 558 photos with a watermark on: a logo and a line of text built in the maker, at 70 percent opacity, applied to the base and to every size at least 300 pixels wide. Stretched across the full width it cost 43 seconds on the run; as a small mark in the lower right corner, the way a store would actually use it, 40 seconds. The size of the mark hardly matters. The cost is the extra pass over each size, about a twelfth of a second per photo, and the upload was still the thing waiting on the engine.
Between runs there was nothing to do but the next line. The page keeps the three things that change in view, so a product line is:
Change the custom file date to the line’s month.
Pick the product line in the folder dropdown.
Drop the line’s folder of photos.
Press Start. A few seconds of work per line.
No scrolling, no page reload, no settings panel opened again. Folder plugins add a label; they never move a file. The file date and the post date are the only controls in WordPress that decide where a photo lives on disk and when the library says it arrived, and Pro sets each one separately.
Changing your mind about the watermark
A catalog is never finished. The mark that looked right on the first product line looks heavy a month later, a new brand wants it in the other corner, or the owner decides the photos are better without one. That is not a straw man: store owners really do ask for this, and they ask after the catalog is built, not before. Done the WordPress way that is a batch job in an image editor, a re-import, and then a hunt through every product for the images that still point at the old files.
With Pro it is the same run again. Drop the camera-roll folders on the page, change the mark in the maker or turn it off, tick Overwrite, and press Start. Overwrite match already points at the WebP name, which is what a WebP-only library needs: the library holds photo.webp and the drop is photo.jpg, and the run lines the two up. Every photo is made again in the browser and replaces the old file under the same URL and the same attachment ID. Featured images, product galleries and the theme’s srcset lists keep pointing where they always did, and the sizes are regenerated behind them. WooCommerce is never told anything changed, because nothing it can see did.
Drop the same folders of photos.
Move the mark, restyle it, or switch it off.
Tick Overwrite. The match is the WebP name by default.
Press Start and let the browser work.
Going by the 558-photo runs above, the whole 2,232-image catalog with a new mark is about 16 minutes on this host. That is what changing your mind costs: a quarter of an hour of the browser working while you do something else, not an afternoon, and no product touched by hand.
Why Pro, feature by feature
- WebP only. Free keeps the JPEG and adds a WebP beside it. Pro stores only the WebP, at your own upload size. That is the 1.0 GB and the 17,508 files above.
- Turbo boost. Up to six upload lanes. On a host that holds every connection to a modest speed, this is most of the 12 minutes 57 seconds.
- Resize before upload. Fit within 2560 by 2560, the size WordPress would have scaled to anyway, before a byte leaves the browser.
- File date and post date. A directory per product line on disk, today’s date in the library. The five-folder run above.
- Overwrite in place. When a product is re-shot, or the watermark changes, drop the photos with Overwrite on and they replace the old files under the same URLs and attachment IDs, with gallery and page-builder references repaired.
- Watermark. Bring your own or build one in the maker. Applied in the browser, on every size. About 40 seconds on a 558-photo run, corner mark or full width.
Everything else in the run is in Free too: resizing and optimizing in the browser, all the sizes, WebP and AVIF companions, the rights statement against AI data mining, uploads hidden from optimizer plugins, folders, and runs that survive a dropped connection.
The honest footnotes
- Encode and upload time scale with the photos. Product shots on white take a fraction of what landscapes take, and a smaller camera file uploads faster. The minutes are for this set on this host; the ratio is what carries.
- Your line sets the pace. In every run the browser had work waiting and the upload was busy 99 percent of the time, so a faster connection, or a host that takes uploads faster, shortens the minutes directly. The run summary tells you which was the limit on yours.
- The Media page figure is the upload alone. The WebP and optimizer passes that would follow it were not run, so the WordPress column is a floor, not a ceiling.
Where to start
Flying Pigs Pro is its own plugin, sold at flying-pigs.wpspeedmeup.com: install it, enter your key, open its page under Media, and drop a product line’s folder on it. Everything in this study ran on it. The free Flying Pigs Uploader on WordPress.org does the browser processing, the sizes and the companions, without the store features above.