Stock Photography Hosting

Stock photography hosting for a library measured in terabytes.

A photography store is an unusual WordPress site: the product is the file, the catalogue is enormous, and the thing you sell must never be reachable by guessing a URL.

Derivatives built off-requestOriginals outside the webrootFree migration
Large-library media handlingProtected originalsExpiring download linksDaily backupsFree SSL24/7 support
The file is the product

Everything a photo library asks of a host.

Most sites store images. Here the images are the inventory, the storefront and the delivery, all at once.

Derivatives generated outside the request

One upload becomes a thumbnail, a preview, a watermarked comp and more. Generated on upload in-request, a bulk import of two thousand photos times out on the first hundred.

QueuedRegenerable

Originals that are not in the webroot

A full-resolution file sitting under /wp-content/uploads is one guessed URL away from being free. Purchased assets live outside the served directory entirely.

Off-webrootSigned access

Download links that expire

A permanent download URL is a permanent licence. Links are signed and time-limited, so a shared link stops working rather than becoming a distribution channel.

A media table that stays queryable

Every derivative is a row in postmeta. A hundred thousand images with six sizes each is over half a million rows before a single search runs against them.

Browse pages that do not load originals

The single fastest way to ruin a gallery is serving a 40 MB master where a 60 KB thumbnail belongs. Size selection is enforced at delivery, not left to the theme.

Operations

Import thousands without taking the site down.

The dangerous day is not a busy one, it is the day somebody bulk-uploads a shoot and every derivative is generated at once on the machine serving customers.

  • Bulk imports processed as background jobs
  • Originals excluded from the served directory
  • Expiring, signed download links
  • Restore any daily backup from the dashboard
Library
Derivatives queued
118,000 images
Originals
Outside the webroot
protected
Download links
Signed, time-limited
24h expiry
Nightly backup
Replicated offsite
running
Performance

A gallery page of forty photographs.

Forty images is forty requests, and whether the page is fast is decided entirely by which size each of them resolves to.

Queued
derivative generation
Signed
download delivery
NVMe
storage on every plan
MagicWP165 ms
Originals served to a gallery4600 ms
Derivatives built in-request2100 ms

Illustrative comparison of a gallery load against a large library. Your numbers depend on image sizes and how many derivatives each photo carries.

Configuration

What we change for a photography library

These differ from a standard WordPress site on the same plan, and each follows from the media being the product rather than decoration.

SettingWhat we doWhy
Derivative generationQueued as background work instead of running during uploadOne photograph becomes several rendered sizes, so a bulk import multiplies into thousands of resize operations and exhausts the request that triggered them.
Original file storageHeld outside the served directory, reachable only through signed accessA full-resolution master under the uploads directory can be fetched by anyone who guesses its path, which gives away the thing the site exists to sell.
Download URLsSigned and time-limited rather than static pathsA permanent link is an unlimited licence the moment it is forwarded, and nothing on the site can tell that it has been.
Attachment metadataIndexed, with unused image sizes prunedEach rendered size adds a postmeta row per image, so a six-size preset turns a hundred thousand photographs into most of a million rows before any search touches them.
Image size selectionEnforced at delivery rather than trusted to the themeA template that outputs the full-size file into a grid transfers tens of megabytes to render thumbnails, which no amount of caching in front of it can undo.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly
Starter
For personal sites, blogs, and portfolios.
$20/mo
Billed $240 yearly · save $60
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
Billed $960 yearly · save $240
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
Billed $3000 yearly · save $600
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

Can WordPress handle a library of a hundred thousand photos?
Yes, with the media table indexed and unused sizes pruned. The limit is rarely file count — it is that every rendered size adds a metadata row, so the default presets quietly multiply the catalogue several times over.
How do you stop people downloading the full-resolution file for free?
Originals are not in the served directory at all, so there is no URL to guess. Buyers reach them through signed links that expire, rather than through a path that works forever.
Bulk uploads take the site down. What fixes that?
Moving derivative generation off the upload request. Each photo becomes several rendered sizes, so importing a shoot means thousands of resize operations — as background work they queue, and in-request they exhaust the worker.
Why is my gallery page so slow?
Nine times in ten the theme is outputting full-size files where thumbnails belong. Enforcing the size at delivery fixes it; caching in front of it cannot, because the bytes still have to travel.
Can customers re-download what they bought?
Yes, through their account, which issues a fresh signed link each time. That keeps the purchase re-downloadable without any single URL becoming permanently valid.

Host a photography library where the files are the business.

Free migration, derivatives off the request path, and originals nobody can guess their way into.