Meridian handbook
ReferenceConfiguration

images.yaml

Every key of config/images.yaml (breakpoints, image defaults and named transforms) and config/sites/<key>/images.yaml.

config/images.yaml holds the install’s image breakpoints, defaults and named transforms. A site’s config/sites/<key>/images.yaml adds transforms or replaces them by name. Image configuration is design, not deployment, so none of it is in engine.yaml.

breakpoints:
  md: 48rem
  lg: 80rem
transforms:
  hero:
    aspect: "16:9"
    sizes: "100vw"
  card:
    aspect: "4:3"
    widths: [320, 480, 640, 960]
    sizes: "(min-width: md) 33vw, 100vw"

engine-dmo media transforms prints every resolved transform with its width ladder. See Images.

images.yaml

KeyTypeDefaultMeaning
breakpointsmap of string{}Named min-widths as CSS lengths, such as md: 48rem, which sizes and sources name
defaults.densityinteger2The highest pixel density a fixed-width transform serves
defaults.formatslist of avif, jpeg, png, webp[avif, webp, jpeg]The formats every transform generates unless it says otherwise
defaults.placeholderblur, dominant, nonedominantWhat paints an image’s box before it loads: dominant (its dominant colour), blur or none
defaults.qualitymap of integer{avif: 55, webp: 75, jpeg: 80}Quality per format
defaults.widthsobject{min: 320, max: 2560, ratio: 1.25}The width range: each width is the previous times ratio, from min to max
defaults.widths.maxinteger2560See defaults.widths
defaults.widths.mininteger320See defaults.widths
defaults.widths.rationumber1.25See defaults.widths
transformsmap of objects{}Named transforms templates use, such as hero or card
transforms.<key>.animatedfirst, keepFor an animated source: keep the animation or take the first frame
transforms.<key>.aspectstringThe source’sThe proportion, width:height such as 16:9
transforms.<key>.backgroundstringThe padding colour for contain
transforms.<key>.fitcontain, cover, insidecovercover crops to the box around the focal point; contain fits inside and pads with background; inside fits inside and keeps its own proportions
transforms.<key>.formatslist of avif, jpeg, png, webpdefaults.formatsThe formats generated, best first: avif, webp, jpeg, png
transforms.<key>.heightintegerA fixed height in pixels
transforms.<key>.qualitymap of integerdefaults.qualityQuality per format, such as { avif: 50 }
transforms.<key>.sizesstringThe sizes attribute, using breakpoint names
transforms.<key>.sourceslist of objects[]Art direction: another transform used below or from a breakpoint, in a picture
transforms.<key>.sources[].belowstringA breakpoint name: use transform below it
transforms.<key>.sources[].fromstringA breakpoint name: use transform from it up
transforms.<key>.sources[].transformstringRequiredThe transform to use there
transforms.<key>.widthintegerA fixed display width in CSS pixels; served at each density up to defaults.density
transforms.<key>.widthslist of integer or objectdefaults.widthsThe widths generated: a list ([480, 800, 1200]) used as written, or a range { min, max, ratio } whose missing keys come from the defaults. Each width 16 to 8192

sites/<key>/images.yaml

The same transforms keys as above. A transform here with the same name as the install’s replaces it on this site.