Imagery

Pictures are where generated pages most obviously give up: a grey box, an icon in a square, a fake dashboard, an abstract blob. This file is how to decide what the pictures are, where to find real ones, how to crop and place them, and what to do when there are none.

Contents

  1. What the study measured
  2. Decide what imagery exists
  3. Real pictures from the open collections
  4. The dealt photographs
  5. Cropping and placing
  6. Treatment
  7. Showing software
  8. Drawing the subject
  9. Type and colour alone
  10. Markup and credits
  11. Video
  12. Where pictures and footage go

1. What the study measured

2. Decide what imagery exists

In order of preference:

  1. The project's own images. Product shots, the place, the people, the work. Even ordinary photographs of the real thing beat beautiful photographs of something else. Ask what exists; look in the repository.
  2. Images you can generate with an image tool in this session. Write prompts as a photographer's brief: subject, angle, light, background, crop ratio, and "no text". Generate the hero first and make the rest match its light.
  3. Real pictures of the subject's world from the open collections (section 3). Archives, museums and photographers have published millions of pictures anyone may use with a credit: the client's city and street in old postcards, maps of its neighbourhood, its materials, its trade in engravings, museum objects of its kind. Whenever an honest one exists, it beats a drawing of the same thing: it is real, it has detail no drawing in a page's budget reaches, and it carries history. Honest means nobody could take it for the client's own product, room, dish, person or team.
  4. Pictures you draw in code from the subject itself (section 8), for what no honest picture exists of: the product's own objects as flat shapes, the place's tiles and windows, a map of its streets, the document a tool produces, the interface of a piece of software. In testing, pages that drew their subject with care beat pages that borrowed unrelated photographs every time, and beat pages that showed nothing.
  5. The photographs dealt on the direction sheet. Real photographs of places, light, texture and weather. Use them only where an honestly generic picture fits (the open sea for a house on the sea, fog for a quiet retreat). They cannot stand in for a specific product, dish, room, person or screen: a foggy motorway on a restaurant page reads as stock at once, and jurors notice.
  6. Type and colour alone, done on purpose (section 9).

Tell draw.mjs the truth with --have. If you have no product photographs and no image tool, do not pass product-photo; the draw will avoid the directions that depend on showing the object. Pictures found in the open collections are not the project's own: do not pass photography for them.

3. Real pictures from the open collections

scripts/assets.mjs searches four open sources without keys and prints, for each find, a direct image URL, the page it comes from, its size, its creator, its licence and a credit line:

node <skill>/scripts/assets.mjs "ghent postcard"
node <skill>/scripts/assets.mjs "fig" --source museums --orientation portrait
node <skill>/scripts/assets.mjs "basalt texture" --min-width 2400 --source openverse,commons
node <skill>/scripts/assets.mjs --get commons:36649959,met:707892     # download, record the credits
node <skill>/scripts/assets.mjs --credits                             # footer line and report list

By default it keeps only licences that allow commercial use (CC0, public domain, CC BY, CC BY-SA) and pictures at least 1000 pixels wide, and checks that every image it prints actually loads. --license pd keeps only pictures that need no credit; --orientation, --min-width and --limit narrow the list; --source picks the sources; --json gives the raw results. Each result has a ref (commons:36649959) that --get takes.

What to search for. The inventory (SKILL.md step 1), not the category: "bakery" finds other people's bakeries. The subject's world is specific:

Search in the place's own words (azulejo, not "blue tile"; Korenmarkt, not "market square"), add a medium (postcard, engraving, old map, lithograph, aerial photograph) or a decade, and try two or three queries per idea. The museum sources match best on one or two words ("fig", "harbour", "teapot").

What makes a good find.

Use it creatively. Found pictures are material, not decoration:

Treatments stay within section 6: untouched, greyscale for the whole set, or multiply on a field.

Stay honest.

If two or three honest queries per idea find nothing that fits, draw (section 8). A drawing made for the subject is better than a found picture that is merely nearby. If the script cannot reach any source (no network), draw, and say so in the report. For moving pictures, the same script searches real footage with --video (section 11).

4. The dealt photographs

5. Cropping and placing

6. Treatment

One treatment for the whole page:

Not treatments: colour washes over photographs, duotone overlays, blur, grain overlays, vignettes, tilted "polaroid" frames with shadows.

For text on a photograph, a neutral scrim covering only the text area: a solid block at 40–55% black, or a fade from 55% black to transparent over the lower third. Never a coloured overlay.

7. Showing software

8. Drawing the subject

When nothing real can be photographed and the open collections hold no honest picture of it, draw it, and draw it well. Inline SVG and CSS are enough. Drawings and found pictures can share a page: the found ones show the world around the client, the drawings show the client's own things.

9. Type and colour alone

This is a legitimate design, not a gap to disguise. Only 7 of the studied sites use no imagery at all, and they hold their own: a median panel score of 7.5 against 7.2 for the whole set.

10. Markup and credits

A found picture, downloaded into the project with --get, used as the hero:

<img src="assets/fig-engraving.jpg" width="1920" height="2807" fetchpriority="high" decoding="async"
     alt="Hand-coloured engraving of a fig cut open, with its flowers and seeds, in black, pink and green">

A dealt photograph further down the page:

<img src="https://picsum.photos/id/626/2400/1500" width="2400" height="1500"
     alt="Red and white lighthouse in a turquoise sea below a chalk cliff" loading="lazy" decoding="async">

The credits, as --credits prints them, in the footer:

<p class="credits">Pictures: <a href="https://commons.wikimedia.org/wiki/File:Fig_(Ficus_carica_L.);_57_segments_of_flowers_and_fruits_at_Wellcome_V0043000.jpg">“Fig (Ficus carica L.): 57 segments of flowers and fruits”</a>, <a href="https://creativecommons.org/publicdomain/mark/1.0/">public domain</a>, via Wikimedia Commons.</p>

11. Video

A moving picture of the subject's world can carry a section the way a photograph does: the river at the end of the street, the roaster's drum turning, a timber frame going up. assets.mjs --video searches real footage without keys: Wikimedia Commons (every video there comes with web-sized transcodes; the best source for short clips), the Internet Archive's Prelinger Archives (industrial, educational, city and home films from the 1920s to the 1970s, mostly public domain and mostly long) and NASA (the Earth from orbit, launches, aircraft, laboratories). The rest of the Internet Archive is left out: anyone can upload there, and the licence claims are unchecked.

node <skill>/scripts/assets.mjs "coffee roasting" --video
node <skill>/scripts/assets.mjs "river" --video --source commons,nasa --orientation landscape
node <skill>/scripts/assets.mjs --get commons:49769620        # the clip, a poster frame, the credit

It takes a rendition of 720p or smaller (--res changes that), lists short clips first, prints each clip's length and file size, and flags anything over 25 MB or longer than a minute. --get refuses a clip over 25 MB unless you pass --max-mb, and saves the source's still frame beside it as the poster (Commons and NASA; the archive's own stills are too small). An archive film of ten minutes is too heavy as it stands: trim a few seconds from it with ffmpeg if it is installed, or choose a shorter clip. Licences, credits and honesty work exactly as for pictures (section 3).

Choosing a clip.

On the page.

12. Where pictures and footage go

What strong pages do with their pictures, measured on the latest 100 Awwwards Sites of the Day (10 July to 17 October 2026, captured at 1440×900 and 390×844). 91 were usable. A panel described where every picture sat and scored each site the Awwwards way, and a script measured how much of each screen is picture. "Top" means a panel score of 7.5 or more (36 sites), "lowest" under 7.3 (16 sites). The scores sit close together (6.7 to 7.9) and a single score carries about half a point of noise, so read the links between a placement and the score as leanings, not laws.

How much of each screen is picture

How many

The placements, ranked

Placement Sites (of 91) Top (of 36) Lowest (of 16) Mean score with / without
Split: picture in a half or two-thirds 32 17 2 7.50 / 7.38
Horizontal gallery 32 13 4 7.44 / 7.41
Full-bleed band between sections 31 14 3 7.48 / 7.40
Full-bleed picture or film as the first screen 26 10 3 7.45 / 7.41
Uneven mosaic 25 11 1 7.49 / 7.40
Picture held while text scrolls 23 12 1 7.52 / 7.39
Footage behind text 22 8 2 7.46 / 7.41
Even grid 20 11 2 7.48 / 7.41
Scattered collage 19 6 3 7.47 / 7.41
Panel sliding over a held picture 19 8 2 7.48 / 7.41
Inset frame that grows 17 7 1 7.52 / 7.40
One picture centred on a field 14 5 3 7.38 / 7.43
Cut-out object on a flat field 13 7 1 7.57 / 7.40
Index with hover preview 12 6 1 7.49 / 7.41
3D gallery 12 4 4 7.30 / 7.44
Small card docked in a corner 11 5 1 7.47 / 7.42
Picture inside or in front of display type 11 7 1 7.50 / 7.41
One small picture beside a statement 8 5 0 7.56 / 7.41
Small pictures between words 6 4 0 7.52 / 7.42

Each placement

Each entry gives when to use it, the geometry at 1440×900, the phone version and how it fails.

Split: picture in a half or two-thirds

Full-bleed band

Picture held while text scrolls

Inset frame that grows

Uneven mosaic

Horizontal gallery

Panel sliding over a held picture

Even grid

Index with hover preview

One picture on a field, or one small picture beside a statement

Small pictures between words

Picture inside or behind display type

Cut-out object on a flat field

Scattered collage

Small card docked in a corner

3D gallery

Footage

What the study measured.

Where it goes.

How text sits on it.

On the phone. Footage re-crops to a full-screen portrait (a separate tall source, or object-position on the subject); inset frames go full-bleed. One site in the study adds a 40% scrim on the phone only, where the type covers more of the picture.

Crops and treatment

Text over pictures

Rules for a generator

  1. About a third of the page is picture. Across the scrolled screens, pictures fill 30–40% of the area, and at least one screen in four carries no picture (top sites: 30% and 28%).
  2. A picture leads its screen or stays small. A leading picture takes at least 60% of its screen; an accent stays under 10% of it. Avoid screen after screen of pictures at 20–40%: in the study 42% of screens are 0% and 19% are 90% or more.
  3. Three to five placements per page, and no two neighbouring sections with the same one. Sites with two or fewer average 7.31, sites with three or more about 7.5.
  4. Six to twelve pictures, never fewer than four. Study median 7; top sites 4–27; lowest 2.
  5. Two ratios for at least 75% of the pictures (76% in the study), a third only for a deliberate exception. Defaults: 4:5 for portraits, 16:9 or 3:2 for landscapes.
  6. Square corners on every picture (94% in the study). If the direction rounds them, one radius of 4px for every picture and clip.
  7. Split pictures take 42–50% of the width, or two-thirds, at the full height of the section and touching the viewport on their outer side; the text starts on the 50% line. On the phone the picture goes first, full width.
  8. Full-bleed bands are 100% wide and 100–150vh tall, one every three or four screens, oversized by 10% at most for parallax, with text only in one corner at least 32px in. On the phone, re-crop to a full-screen portrait.
  9. One inset frame that grows per page, from 35–50% of the width to the full screen over 720–2,700px of scroll, with nothing else moving on that screen.
  10. Horizontal galleries show three cards and a cut fourth: cards 25–35% of the width with 16–20px gaps; on the phone one card at 75–80% of the width with the next one showing.
  11. One moving picture per screen. Clips of 5–15s (median 10s), muted, looped, inline, with a poster, paused out of view; a hero source of 1920×1080 under 10MB, inline clips at 1280×720 or smaller under 5MB.
  12. Only display text on a picture: a headline, one line and one action at most, with contrast measured at the text's position across the whole loop. Body text, 16px or more, goes beside or under the picture, never on it.