At a glance
Distribution of files in the Shopify Files library by MIME type or extension. The catalogue-asset hygiene view: are images, videos, fonts, and PDFs in the right ratios for performance and cost?
| What it counts | GROUP BY mimeType FROM Files. Returns a count per file type plus optional total bytes per type. Includes only files in the Files library (uploaded media), not theme assets, app assets, or order-attachments. |
| API endpoint | Admin GraphQL. Files.edges.node.mimeType, Files.edges.node.fileSize. |
| What “Files” means in Shopify | Files uploaded via Settings → Files (or attached to product / page / blog editors). Theme assets are separate. Order attachments are separate. |
| VAT / tax treatment | Not applicable. |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | Not applicable. |
| Cancelled / voided orders | Not applicable. |
| Currency | Not applicable. |
| Channels / sources | Files are store-wide; not channel-specific. |
| Filename hygiene | Many merchants accumulate junk-named files (IMG_1234.jpg, Screenshot 2025-04-12.png) which are SEO-invisible. The card surfaces volume; cleanup is manual. |
| Time window | RT (real-time, computed from latest indexed snapshot) |
| Alert trigger | None on this card directly. |
| Roles | owner, operations |
Calculation
Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK DTC homeware brand on Shopify. Snapshot date: 12 May 26. Files library: 4,820 files.| MIME type | File count | Share | Total bytes | Note |
|---|---|---|---|---|
| image/jpeg | 2,810 | 58.3% | 4.2 GB | Product photography |
| image/png | 1,140 | 23.7% | 1.8 GB | Banners, transparent overlays, lifestyle |
| image/webp | 380 | 7.9% | 0.42 GB | Re-encoded for performance |
| image/svg+xml | 142 | 2.9% | 0.04 GB | Icons, logos |
| video/mp4 | 28 | 0.6% | 1.1 GB | Product videos, hero reels |
| application/pdf | 84 | 1.7% | 0.18 GB | Care guides, size charts |
| application/vnd.ms-excel + .xlsx | 12 | 0.2% | 0.005 GB | Internal docs |
| font/woff2 | 4 | 0.1% | 0.0008 GB | Theme fonts |
| Other | 220 | 4.6% | 0.8 GB | Misc |
| Total | 4,820 | 100% | 8.55 GB |
- WebP coverage is only 7.9%, a performance opportunity. WebP files are 25 to 35% smaller than equivalent JPEG / PNG with no visible quality loss. A bulk re-encode of the JPEG / PNG library to WebP would save roughly 1.5 GB of CDN egress and meaningfully improve LCP on product pages. Apps like Crush.pics, TinyIMG do this in batch.
- PNG share at 23.7% is high. PNG is heavy and often unnecessary; most banners and lifestyle shots can be JPEG or WebP. PNG should be reserved for transparent / icon-style assets. A cleanup pass identifying non-transparent PNGs and converting them is a 1-day intervention.
- Video at 1.1 GB on 28 files is the biggest per-file cost. Average video size is 39 MB. If you’re serving these inline from Shopify (not via a CDN like Cloudinary or Bunny), expect mobile bandwidth costs and slow LCP. Consider hosting video on a dedicated CDN and embedding via
<video>tags pointing externally. - 84 PDFs is non-trivial catalogue baggage. Care guides, size charts, lookbooks. Each PDF is an indexed asset for Google but rarely a customer journey driver. Audit which PDFs get downloads (Shopify doesn’t expose this directly; use Google Analytics outbound-click tracking). Sunset unused PDFs.
- Overall library size at 8.55 GB is manageable. Shopify charges no overage for files within reasonable limits (typically 100 MB per file). Library bloat affects search-and-find within the merchant team, not bandwidth cost. The fix is naming convention, not deletion: rename files at upload time so they’re searchable and SEO-friendly (linen-shirt-charcoal-front.jpg vs IMG_4982.jpg).
Sibling cards merchants should reference together
File library is one part of a bigger asset-quality picture. Pair with these:| Card | Why pair it with File Types | What the combination tells you |
|---|---|---|
| Missing Descriptions | Catalogue copy quality. | Combined image + description quality reveals where PDPs need investment. |
| Missing SEO | SEO-fields hygiene. | Image alt text and SEO meta fields together drive search visibility. |
| Collection Health | Merchandising-organisation health. | A well-organised collection set with rich imagery beats a flat catalogue. |
google_analytics.ga_lcp | Largest Contentful Paint metric. | High image weight → poor LCP → poor SEO. The connection from image type to performance. |
pagespeed.pagespeed_score | Page-level performance score. | Image format mix is one driver of the score. |
crux.crux_lcp | Real-user LCP from CrUX. | Field-data view of the same performance issue. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Settings → Files → filter by file type. The total count and per-type counts should match this card to within sync-lag tolerance. Shopify’s Files page paginates; a full count requires scrolling or filtering. Other Shopify Admin views:- Theme code editor: theme assets (CSS, JS, theme images) are NOT in the Files library and not counted here.
- Apps like Crush.pics, TinyIMG: image-optimisation apps show their own asset inventory; expect alignment but not identical numbers (apps may reference theme images too).
| Reason | Direction | Why |
|---|---|---|
| Theme assets | Both exclude | Theme files (logo SVG, custom CSS, theme JS) are NOT in the Files library and not counted here. |
| App-uploaded files | Either | Some apps create files in the library; the card counts them, the merchant may not realise. |
| MIME detection | Either | Some files have ambiguous MIME types (e.g. .pdf upload that the browser tags as application/octet-stream). The card uses the indexed type, which may differ from Shopify’s auto-detected type. |
| Sync lag | Ours lower for “today” | New uploads propagate within minutes. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
pagespeed.pagespeed_lcp | Image format mix affects LCP | A WebP-heavy library should correlate with better LCP; a JPEG / PNG-heavy library with worse LCP. |
google_analytics.ga_session_duration | Asset weight indirectly affects engagement | Slow pages reduce session length; slow pages often correlate with heavy unoptimised images. |
Known limitations / merchant FAQs
Why doesn’t this match my theme’s image count? Theme assets (CSS, JS, theme-bundled images) are stored separately and are not in the Files library. The card only counts user-uploaded files (Settings → Files). Should I delete unused files? Generally no, deletion can break linked product pages, blog posts, and pages. Instead, identify unused files via theme audit (apps like Smart SEO, JSON-LD for SEO can map file usage), then delete only those that are confirmed orphaned. The cost of carrying unused files is minor; the cost of breaking a linked page is high. My PNG share is high, is that bad? Often yes for performance. PNG is twice the size of equivalent JPEG / WebP for non-transparent images. A bulk audit and conversion to WebP recovers performance with minimal effort. Are theme fonts counted? WOFF2 and WOFF font files in the Files library are counted; theme-bundled fonts are not. Multi-store, can I see combined? No, per store. Each store has its own Files library. Multi-currency, any impact? None. Shopify Plus vs basic? No definitional difference. Plus stores often have larger libraries because of multi-language storefronts and richer media. The card behaves identically. Refresh cadence? Real-time index updates within minutes of upload. New file types propagate quickly. Do customer-facing files (returns labels, downloadable products) count? Customer-facing downloads served via Shopify Files do count. Order-attached files (e.g. proof of payment uploads via apps) may or may not, depending on whether the app stores them in the Files library. Action playbook for performance-driven cleanup:- Identify the JPEG / PNG share. If >70% combined, a WebP conversion campaign is worth it.
- Use an image-optimisation app (Crush.pics, TinyIMG) to bulk-encode existing files.
- Set a future-upload policy: WebP-first, JPEG-fallback. Most modern image-editing tools export WebP natively.
- Audit videos. Anything >20 MB is a candidate for off-Shopify CDN hosting.
- Audit PDFs. Anything older than 12 months without recent download activity is a sunset candidate.
- Establish a naming convention: kebab-case, descriptive, SEO-friendly. Train the team to follow it at upload time.