TYPO3 + T3Bootstrap generate a -element with multiple variants—tailored to the viewport, in a modern image format (WebP/AVIF), and with lazy loading. The editor simply manages the image in the backend; the template handles the rest.
The template generates multiple sizes for each image (e.g., 320w, 576w, 768w, 992w, 1200w, 1400w, 1920w). The browser automatically loads the smallest version that matches the current viewport width and pixel density (Retina).
Using DevTools (Network tab → “Img” filter), you’ll only see the loaded version. The Inspector displays the complete markup.
Inspect the image above (right-click → Inspect). You'll see an with several elements + srcsetattributes per breakpoint.
For each breakpoint, you can set the number of images per row. The template then calculates the corresponding image width and returns the appropriate version:
imagecols_xsMobile (≤ 575 px) — typically 1 image per row
imagecols_smSmall (≥ 576 px) — 1–2
imagecols_mdMedium (≥ 768 px) — 2–3
imagecols_lgLarge (≥ 992 px) — 3–4
imagecols_xlX-Large (≥ 1200 px) — 4–6
imagecols_xxlXX-Large (≥ 1400 px) — 4–6
Important: The JSON field imagecols_grid must define all breakpoints—a missing value results in a single-column fallback.
The template automatically converts uploaded JPGs/PNGs to WebP (60–80% smaller than JPG) or AVIF (50% smaller than WebP)—depending on the settings.
Controlled via the TypoScript constant plugin.tx_t3bcore.settings.preferredImageFormat:
jpg(Default)Original format without conversion — maximum compatibility
webpRecommended standard, ~95% of all modern browsers
avifState-of-the-art codec; browser support is growing rapidly (as of 2026: 90%+)
All images below the visible viewport are loaded loading="lazy" automatically. The browser loads them only when the user scrolls—saving initial bandwidth and reducing time to interactivity.
The first hero image on a page (LCP candidate) is intentionally loaded eagerly so that Largest Contentful Paint is not artificially delayed.
The editor can define different crop variants for each image (TYPO3 standard). Default variants in the T3Bootstrap template:
defaultFree crop for standard layouts (max-width 1920 px)
square1:1 Square — for avatars, cards
flat2:1 Landscape — for hero images
- Hero crop variants
xs (576), sm (768), md (992), lg (1400), xl (1920) — mobile-first crops for different image sections based on the viewport
The editor uploads the original image once, then crops it in the TYPO3 Image Editor using drag-and-drop; the template selects the correct variant.
- Editor
Upload image, select number of columns (imagecols_*), optionally define crop variants
- Template (automatic)
srcset generation, WebP/AVIF conversion, lazy-loading attribute, `picture` markup with all breakpoints
- Site Settings
plugin.tx_t3bcore.settings.preferredImageFormat(jpg/webp/avif) — project-wide default conversion
