Static Photo Galleries

Turn your photos into fast, beautiful static websites with a single command. No database. No backend. Just images that load instantly.

npx zone5 create ./photos ./gallery
Zone5 gallery screenshot
Scroll
01

Why Zone5?

Zero Runtime

Pure static HTML, CSS, and optimized images. Host anywhere—GitHub Pages, Netlify, Vercel, S3, or your own server. No database, no backend, no CDN configuration.

Build-time Processing

Sharp-based pipeline generates responsive variants, extracts colors, creates blurhash previews. Cached for instant rebuilds.

Markdown-first

Write galleries in MDX or plain markdown. The ?z5 suffix triggers automatic processing and lightbox support.

Vite Integration

Import images directly in Svelte with full TypeScript support. Get variants, blurhash, EXIF, colors, and GPS coords.

Responsive & Mobile-first

Galleries adapt seamlessly from phone to desktop. Touch-friendly navigation, optimized image loading, and fluid layouts that look great everywhere.

02

How It Works

1

Write Markdown

'![Mountain sunrise](./mountains.jpg?z5)\n![Valley at dusk](./valley.jpg?z5)'
2

Or Import Directly

"import photo from './photo.jpg?z5';\n\n// Returns:\n// - Responsive variants (400-2400px)\n// - Blurhash placeholder\n// - EXIF metadata\n// - Dominant color\n// - GPS coordinates"
3

Get a Gallery

Photo lighttable view
03

Technical Details

Caching Content-addressed in .zone5/
Output GeoJSON-compatible features
Variants Optimized JPEG scaled in linear light
Blurhash low-res placeholders when the internet is slow
EXIF Camera, lens, exposure + GPS, customisable
Stack SvelteKit 2 + Svelte 5 + Tailwind 4

Your photos deserve
better than a plugin.

Ship them as static sites.

Create new gallery
npx zone5 create ./photos ./gallery
or
Add to existing project
npm install zone5
Zone5 MIT License · Made for photographers.