Media Asset Management
Design how images, video, and downloadable files get stored, processed, organized, and served. Stack-agnostic. The principles apply whether you're running a custom pipeline or using a hosted service.
When to use
- Designing or redesigning the image and media pipeline
- Choosing a media CDN or image service
- Setting up responsive image delivery
- Planning a digital asset management (DAM) system
- Auditing media performance issues
- Picking video hosting and embedding strategy
- Setting up workflows for designers and writers to upload assets
- Migrating media from one platform to another
When NOT to use
- Performance optimization beyond media (use
performance-optimization)
- Brand identity or photography direction (use
brand-identity, art-direction)
- Content production strategy (use
content-strategy)
- Single-image optimization (covered in
performance-optimization)
Required inputs
- Current media inventory: where assets live, in what formats
- Volume: how many assets, how much storage, how much traffic
- Sources: who creates and uploads media (designers, writers, automated tools)
- Platforms: where media is consumed (web, email, app, partners)
- Performance baseline: current image sizes, load times
- Budget reality: hosted services have monthly costs
The framework: 4 stages
The media pipeline has four stages. Each has its own decisions.
Stage 1: Source
Where assets enter the system.
Sources:
- Designers (Figma exports, Photoshop, Illustrator)
- Photographers (RAW or JPEG from camera)
- Stock photo libraries
- AI-generated images
- User-generated content (uploads)
- Automated systems (e.g., screenshots, generated thumbnails)
At source, decide:
- File formats accepted (RAW, TIFF, PSD, AI vs delivered formats)
- Naming conventions
- Required metadata (alt text, captions, credits, rights)
- Maximum source resolution (high enough to derive any size; not so high it's wasteful)
- Where source files live (separate from delivered assets)
Anti-pattern: sources and delivered assets in the same place. Hard to find masters. Hard to regenerate. Hard to audit usage.
Stage 2: Process
Transforming source files into delivery formats.
Processing decisions:
- Resize to standard sizes (e.g., a fixed set of widths: 320, 640, 960, 1280, 1920, 2560)
- Compress (lossy or lossless, with quality targets)
- Convert formats (JPEG, WebP, AVIF for raster; SVG for vector)
- Generate thumbnails and previews
- Strip metadata (EXIF, GPS) unless intentionally retained
- Color profile management (sRGB for web)
Process options:
- Build-time: Static assets processed during deploy. Predictable, fast at runtime, hard to vary.
- On-demand: A service generates the right format/size when requested. Flexible, requires a processing layer.
- Hybrid: Static processed sizes plus on-demand for edge cases.
For sites with many image variants and ongoing change, on-demand wins. For tightly controlled marketing sites, build-time can be simpler.
Stage 3: Deliver
Getting assets to users efficiently.
Delivery decisions:
- CDN: required for any non-trivial volume. Edge caching, global distribution.
- Format negotiation: serve AVIF to browsers that support it, WebP otherwise, JPEG as fallback. Use the
<picture> element or content negotiation.
- Responsive images:
srcset and sizes attributes so browsers pick the right size for the viewport.
- Lazy loading:
loading="lazy" for below-the-fold images.
- Async decoding:
decoding="async" for non-critical images.
- Width and height attributes: always set, prevents layout shift.
Modern HTML pattern:
<img
src="/image-1280.jpg"
srcset="/image-640.jpg 640w, /image-960.jpg 960w, /image-1280.jpg 1280w, /image-1920.jpg 1920w"
sizes="(max-width: 768px) 100vw, 50vw"
width="1280"
height="720"
loading="lazy"
decoding="async"
alt="Descriptive alt text">
Or for format negotiation:
<picture>
<source type="image/avif" srcset="/image.avif">
<source type="image/webp" srcset="/image.webp">
<img src="/image.jpg" alt="Descriptive alt text" width="1280" height="720">
</picture>
Stage 4: Manage
Keeping the system organized and useful over time.
Management decisions:
- Asset library or DAM (digital asset management): centralized place for the team to find assets
- Tagging and search
- Version control (designers updating an asset, old version still in use)
- Rights and licensing tracking
- Audit and cleanup (what's not used anymore?)
- Permissions (who can upload, edit, delete)
A simple shared folder works at low scale. A real DAM is necessary above a few thousand assets or with multiple teams.
Format reference
For typical web use:
| Format |
Use for |
Avoid for |
| AVIF |
Photographs, complex images. Best compression. |
Browser support edge cases (rare in 2026, ubiquitous now) |
| WebP |
Photographs, illustrations. Good compression. Wide support. |
Print, archival |
| JPEG |
Photographs (fallback). Universal support. |
Sharp-edged graphics, transparent backgrounds |
| PNG |
Sharp-edged graphics, transparent backgrounds, screenshots. Lossless. |
Photographs (file size) |
| SVG |
Logos, icons, simple illustrations. Scalable. |
Photographs, complex art |
| GIF |
Effectively obsolete. Use video formats for animation. |
Anything modern |
| MP4 (H.264) |
Video, universal support. |
Static content |
| WebM (VP9 / AV1) |
Video, better compression. |
Older browsers |
For most sites: serve AVIF/WebP for modern browsers, JPEG/PNG fallback. SVG for vector. MP4 for video.
Workflow
Step 1: Inventory
What assets exist? Where? In what state?
- Image count and total storage
- Average sizes (KB) per format
- Image-related performance metrics
- Number of pages with broken or missing images
- Source files vs delivered files
Step 2: Audit performance
For a sample of pages:
- Image weight per page (target: under 500KB total for marketing pages)
- Number of image requests
- Are responsive images used?
- Are modern formats served?
- Is there layout shift from missing dimensions?
Tools: Lighthouse, WebPageTest, your CDN's analytics.
Step 3: Pick the pipeline
Three reasonable patterns:
Pattern A: Static, build-time
- Assets in repo or storage bucket
- Build process generates sizes and formats
- Served via CDN
- Good for: static sites, low asset churn, tight performance control
Pattern B: Image CDN with on-demand
- Source uploads to a bucket or service
- An image CDN (Cloudinary, imgix, Cloudflare Images, Bunny, etc.) processes on-demand via URL parameters
- Good for: mid-to-large sites, frequent asset changes, multiple variants
Pattern C: Headless CMS with built-in image API
- CMS holds source assets
- CMS provides image API for resizing, format conversion
- Good for: content-heavy sites, non-technical content uploaders, when CMS is already chosen
The patterns aren't mutually exclusive. Big sites often use Pattern A for design assets, Pattern B for content images.
Step 4: Define standards
Document:
- Naming conventions
- Required metadata (alt text, attribution)
- Maximum source dimensions
- Minimum source dimensions per use case
- Approved formats
- File size targets
Make these enforceable through tooling where possible (CI checks on file sizes, alt text required by CMS).
Step 5: Set up workflows
For each source type:
| Source |
Workflow |
| Designer |
Export from Figma, drop into bucket, automated processing handles the rest |
| Writer |
Upload through CMS, CMS prompts for alt text |
| Photographer |
RAW into source bucket, designer or automation creates web variants |
| User upload |
Pass through the image service, automatic moderation if applicable |
Document who does what. Workflows that aren't documented break.
Step 6: Build the asset library
For all but the smallest sites:
- Centralized DAM or shared library
- Tag taxonomy (subject, style, brand, campaign, etc.)
- Search across tags and metadata
- Documented rights for each asset (stock license, custom commission, work-for-hire, etc.)
- Sunset workflow (rights expire, asset retires)
Step 7: Monitor and audit
- Performance metrics on image-heavy pages
- Storage costs
- CDN costs
- Broken image alerts (404 on referenced media)
- Unused asset cleanup (storage costs accumulate)
Step 8: Document the pipeline
A pipeline document covers:
- Diagram of source → process → deliver → manage
- Tools used at each stage
- Standards and naming conventions
- Workflows for common cases
- Escalation when something breaks
Failure patterns
Source files in the delivery bucket. 50MB RAW files served to users. Fix: separate sources from delivered.
Single image format for every browser. JPEG-only when AVIF could be 30-50% smaller. Use format negotiation.
Missing width and height attributes. Causes layout shift, hurts CLS metric. Set always.
Lazy loading hero images. Above-the-fold images shouldn't be lazy-loaded. Lazy below the fold.
Eager loading everything. All images load on page load. Use loading="lazy" for below-fold.
No responsive images. Mobile gets the desktop image. Wasteful, slow. Use srcset and sizes.
One source resolution. Source is the delivery resolution. Can't generate retina or larger. Source should be 2-3x the largest delivered size.
Stripping all metadata. Removes alt text, removes attribution. Strip GPS and personal EXIF; keep semantic metadata.
Random naming. IMG_4823.jpg, Screenshot 2024-03-15.png. Hard to find later. Use a naming convention.
No alt text. Accessibility failure, SEO failure. Make alt text required at upload.
Storage growing unbounded. Old, unused assets pile up. Quarterly cleanup or automated lifecycle policies.
One person knows the pipeline. When they're out, no one can fix issues or onboard new sources. Document.
Output format
A media pipeline document includes:
- Inventory: current asset count, formats, storage
- Pipeline diagram: source → process → deliver → manage with tools at each stage
- Format and size standards: what gets generated, when
- Naming and metadata conventions: with examples
- Workflows by source type: designer, writer, photographer, user
- Performance baseline and targets: weight per page, format adoption, etc.
- Asset library: tool, taxonomy, search, rights tracking
- Monitoring: performance, costs, broken assets
- Roadmap: improvements over the next 1-2 quarters
Reference files
references/responsive-image-patterns.md: Copy-paste HTML patterns for common responsive image scenarios (hero, content, art-directed, format negotiation), with explanations.
1---2name: media-asset-management-23description: Plan and run a media pipeline for images, video, and downloadable assets. Use this skill when designing image storage and delivery, choosing formats (WebP, AVIF), setting up responsive images, picking a video host, organizing a brand asset library, or auditing a slow image pipeline. Triggers on image pipeline, asset library, DAM, image optimization, WebP, AVIF, responsive images, video hosting, image CDN, asset workflow, media management. Also triggers when images are slow, broken, or scattered across systems.4---5
6# Media Asset Management
7
8Design how images, video, and downloadable files get stored, processed, organized, and served. Stack-agnostic. The principles apply whether you're running a custom pipeline or using a hosted service.
9
10---
11
12## When to use
13
14- Designing or redesigning the image and media pipeline
15- Choosing a media CDN or image service
16- Setting up responsive image delivery
17- Planning a digital asset management (DAM) system
18- Auditing media performance issues
19- Picking video hosting and embedding strategy
20- Setting up workflows for designers and writers to upload assets
21- Migrating media from one platform to another
22
23## When NOT to use
24
25- Performance optimization beyond media (use `performance-optimization`)
26- Brand identity or photography direction (use `brand-identity`, `art-direction`)
27- Content production strategy (use `content-strategy`)
28- Single-image optimization (covered in `performance-optimization`)
29
30---
31
32## Required inputs
33
34- Current media inventory: where assets live, in what formats
35- Volume: how many assets, how much storage, how much traffic
36- Sources: who creates and uploads media (designers, writers, automated tools)
37- Platforms: where media is consumed (web, email, app, partners)
38- Performance baseline: current image sizes, load times
39- Budget reality: hosted services have monthly costs
40
41---
42
43## The framework: 4 stages
44
45The media pipeline has four stages. Each has its own decisions.
46
47### Stage 1: Source
48
49Where assets enter the system.
50
51**Sources:**
52- Designers (Figma exports, Photoshop, Illustrator)
53- Photographers (RAW or JPEG from camera)
54- Stock photo libraries
55- AI-generated images
56- User-generated content (uploads)
57- Automated systems (e.g., screenshots, generated thumbnails)
58
59**At source, decide:**
60- File formats accepted (RAW, TIFF, PSD, AI vs delivered formats)
61- Naming conventions
62- Required metadata (alt text, captions, credits, rights)
63- Maximum source resolution (high enough to derive any size; not so high it's wasteful)
64- Where source files live (separate from delivered assets)
65
66**Anti-pattern:** sources and delivered assets in the same place. Hard to find masters. Hard to regenerate. Hard to audit usage.
67
68### Stage 2: Process
69
70Transforming source files into delivery formats.
71
72**Processing decisions:**
73- Resize to standard sizes (e.g., a fixed set of widths: 320, 640, 960, 1280, 1920, 2560)
74- Compress (lossy or lossless, with quality targets)
75- Convert formats (JPEG, WebP, AVIF for raster; SVG for vector)
76- Generate thumbnails and previews
77- Strip metadata (EXIF, GPS) unless intentionally retained
78- Color profile management (sRGB for web)
79
80**Process options:**
81- **Build-time:** Static assets processed during deploy. Predictable, fast at runtime, hard to vary.
82- **On-demand:** A service generates the right format/size when requested. Flexible, requires a processing layer.
83- **Hybrid:** Static processed sizes plus on-demand for edge cases.
84
85For sites with many image variants and ongoing change, on-demand wins. For tightly controlled marketing sites, build-time can be simpler.
86
87### Stage 3: Deliver
88
89Getting assets to users efficiently.
90
91**Delivery decisions:**
92- CDN: required for any non-trivial volume. Edge caching, global distribution.
93- Format negotiation: serve AVIF to browsers that support it, WebP otherwise, JPEG as fallback. Use the `<picture>` element or content negotiation.
94- Responsive images: `srcset` and `sizes` attributes so browsers pick the right size for the viewport.
95- Lazy loading: `loading="lazy"` for below-the-fold images.
96- Async decoding: `decoding="async"` for non-critical images.
97- Width and height attributes: always set, prevents layout shift.
98
99**Modern HTML pattern:**
100
101```html
102<img
103 src="/image-1280.jpg"
104 srcset="/image-640.jpg 640w, /image-960.jpg 960w, /image-1280.jpg 1280w, /image-1920.jpg 1920w"
105 sizes="(max-width: 768px) 100vw, 50vw"
106 width="1280"
107 height="720"
108 loading="lazy"
109 decoding="async"
110 alt="Descriptive alt text">
111```
112
113Or for format negotiation:
114
115```html
116<picture>
117 <source type="image/avif" srcset="/image.avif">
118 <source type="image/webp" srcset="/image.webp">
119 <img src="/image.jpg" alt="Descriptive alt text" width="1280" height="720">
120</picture>
121```
122
123### Stage 4: Manage
124
125Keeping the system organized and useful over time.
126
127**Management decisions:**
128- Asset library or DAM (digital asset management): centralized place for the team to find assets
129- Tagging and search
130- Version control (designers updating an asset, old version still in use)
131- Rights and licensing tracking
132- Audit and cleanup (what's not used anymore?)
133- Permissions (who can upload, edit, delete)
134
135A simple shared folder works at low scale. A real DAM is necessary above a few thousand assets or with multiple teams.
136
137---
138
139## Format reference
140
141For typical web use:
142
143| Format | Use for | Avoid for |
144|---|---|---|
145| AVIF | Photographs, complex images. Best compression. | Browser support edge cases (rare in 2026, ubiquitous now) |
146| WebP | Photographs, illustrations. Good compression. Wide support. | Print, archival |
147| JPEG | Photographs (fallback). Universal support. | Sharp-edged graphics, transparent backgrounds |
148| PNG | Sharp-edged graphics, transparent backgrounds, screenshots. Lossless. | Photographs (file size) |
149| SVG | Logos, icons, simple illustrations. Scalable. | Photographs, complex art |
150| GIF | Effectively obsolete. Use video formats for animation. | Anything modern |
151| MP4 (H.264) | Video, universal support. | Static content |
152| WebM (VP9 / AV1) | Video, better compression. | Older browsers |
153
154For most sites: serve AVIF/WebP for modern browsers, JPEG/PNG fallback. SVG for vector. MP4 for video.
155
156---
157
158## Workflow
159
160### Step 1: Inventory
161
162What assets exist? Where? In what state?
163
164- Image count and total storage
165- Average sizes (KB) per format
166- Image-related performance metrics
167- Number of pages with broken or missing images
168- Source files vs delivered files
169
170### Step 2: Audit performance
171
172For a sample of pages:
173- Image weight per page (target: under 500KB total for marketing pages)
174- Number of image requests
175- Are responsive images used?
176- Are modern formats served?
177- Is there layout shift from missing dimensions?
178
179Tools: Lighthouse, WebPageTest, your CDN's analytics.
180
181### Step 3: Pick the pipeline
182
183Three reasonable patterns:
184
185**Pattern A: Static, build-time**
186- Assets in repo or storage bucket
187- Build process generates sizes and formats
188- Served via CDN
189- Good for: static sites, low asset churn, tight performance control
190
191**Pattern B: Image CDN with on-demand**
192- Source uploads to a bucket or service
193- An image CDN (Cloudinary, imgix, Cloudflare Images, Bunny, etc.) processes on-demand via URL parameters
194- Good for: mid-to-large sites, frequent asset changes, multiple variants
195
196**Pattern C: Headless CMS with built-in image API**
197- CMS holds source assets
198- CMS provides image API for resizing, format conversion
199- Good for: content-heavy sites, non-technical content uploaders, when CMS is already chosen
200
201The patterns aren't mutually exclusive. Big sites often use Pattern A for design assets, Pattern B for content images.
202
203### Step 4: Define standards
204
205Document:
206- Naming conventions
207- Required metadata (alt text, attribution)
208- Maximum source dimensions
209- Minimum source dimensions per use case
210- Approved formats
211- File size targets
212
213Make these enforceable through tooling where possible (CI checks on file sizes, alt text required by CMS).
214
215### Step 5: Set up workflows
216
217For each source type:
218
219| Source | Workflow |
220|---|---|
221| Designer | Export from Figma, drop into bucket, automated processing handles the rest |
222| Writer | Upload through CMS, CMS prompts for alt text |
223| Photographer | RAW into source bucket, designer or automation creates web variants |
224| User upload | Pass through the image service, automatic moderation if applicable |
225
226Document who does what. Workflows that aren't documented break.
227
228### Step 6: Build the asset library
229
230For all but the smallest sites:
231- Centralized DAM or shared library
232- Tag taxonomy (subject, style, brand, campaign, etc.)
233- Search across tags and metadata
234- Documented rights for each asset (stock license, custom commission, work-for-hire, etc.)
235- Sunset workflow (rights expire, asset retires)
236
237### Step 7: Monitor and audit
238
239- Performance metrics on image-heavy pages
240- Storage costs
241- CDN costs
242- Broken image alerts (404 on referenced media)
243- Unused asset cleanup (storage costs accumulate)
244
245### Step 8: Document the pipeline
246
247A pipeline document covers:
248- Diagram of source → process → deliver → manage
249- Tools used at each stage
250- Standards and naming conventions
251- Workflows for common cases
252- Escalation when something breaks
253
254---
255
256## Failure patterns
257
258**Source files in the delivery bucket.** 50MB RAW files served to users. Fix: separate sources from delivered.
259
260**Single image format for every browser.** JPEG-only when AVIF could be 30-50% smaller. Use format negotiation.
261
262**Missing width and height attributes.** Causes layout shift, hurts CLS metric. Set always.
263
264**Lazy loading hero images.** Above-the-fold images shouldn't be lazy-loaded. Lazy below the fold.
265
266**Eager loading everything.** All images load on page load. Use `loading="lazy"` for below-fold.
267
268**No responsive images.** Mobile gets the desktop image. Wasteful, slow. Use `srcset` and `sizes`.
269
270**One source resolution.** Source is the delivery resolution. Can't generate retina or larger. Source should be 2-3x the largest delivered size.
271
272**Stripping all metadata.** Removes alt text, removes attribution. Strip GPS and personal EXIF; keep semantic metadata.
273
274**Random naming.** `IMG_4823.jpg`, `Screenshot 2024-03-15.png`. Hard to find later. Use a naming convention.
275
276**No alt text.** Accessibility failure, SEO failure. Make alt text required at upload.
277
278**Storage growing unbounded.** Old, unused assets pile up. Quarterly cleanup or automated lifecycle policies.
279
280**One person knows the pipeline.** When they're out, no one can fix issues or onboard new sources. Document.
281
282---
283
284## Output format
285
286A media pipeline document includes:
287
288- **Inventory:** current asset count, formats, storage
289- **Pipeline diagram:** source → process → deliver → manage with tools at each stage
290- **Format and size standards:** what gets generated, when
291- **Naming and metadata conventions:** with examples
292- **Workflows by source type:** designer, writer, photographer, user
293- **Performance baseline and targets:** weight per page, format adoption, etc.
294- **Asset library:** tool, taxonomy, search, rights tracking
295- **Monitoring:** performance, costs, broken assets
296- **Roadmap:** improvements over the next 1-2 quarters
297
298---
299
300## Reference files
301
302- [`references/responsive-image-patterns.md`](references/responsive-image-patterns.md): Copy-paste HTML patterns for common responsive image scenarios (hero, content, art-directed, format negotiation), with explanations.