Site Audit for J.M. Field
Comprehensive SEO, performance, and accessibility audit of devsite.jmfield.com. Astro SSR site with bilingual EN/ES content, 64 indexed pages, and full schema markup.
Executive Summary
devsite.jmfield.com is well-built with strong technical foundations. The site runs on Astro SSR with proper schema markup, bilingual support, and clean URL architecture. Key areas for improvement are Spanish content parity, ticker image dimensions, and contrast fixes.
Key Findings
- Spanish content gap: 32 pages missing Spanish versions (48 EN vs 16 ES). Printing, promo products, graphic design sub-pages, blog, about, FAQ all need translation.
- Ticker logo CLS: 72 logo images in the client ticker lack width/height attributes, causing Cumulative Layout Shift on page load.
- CTA contrast: The "Ready to Simplify Your Supply Chain" banner has text contrast of 3.68:1 (WCAG requires 4.5:1).
- llms.txt updated: AI crawler file now references the correct nested fulfillment URLs.
- Hreflang incomplete: Pages include only 1 hreflang tag instead of the required 3 (en, es, x-default).
- Strong foundations: Schema markup, robots.txt, sitemap, canonical tags, OG tags, HTTPS, and Brotli compression all properly configured.
Technical SEO
Core technical infrastructure is solid. Two items need attention.
Each page currently includes only 1 hreflang tag. Google requires reciprocal hreflang annotations: each page should declare en, es, and x-default alternates.
The sitemap correctly includes all 3 hreflang annotations per URL, which partially compensates. However, on-page hreflang is stronger signal.
BaseLayout.astro to output all 3 hreflang link tags in the <head> for every page: hreflang="en", hreflang="es", and hreflang="x-default"./printing-review/ and /printing-v2/ are draft/review pages that are publicly accessible and could be indexed by search engines.
<meta name="robots" content="noindex"> to prevent indexing.Passing Checks
On-Page SEO
All audited pages have unique titles, descriptions, proper heading hierarchy, and schema markup. No issues found.
| Page | Title Length | Desc Length | H1 | Schemas | Status |
|---|---|---|---|---|---|
| / | 61 | 107 | Fulfillment, Printing & Marketing | 4 | Pass |
| /fulfillment/ | 35 | 112 | Fulfillment Services That Ship On Time | 5 | Pass |
| /fulfillment/ecommerce-fulfillment/ | 45 | 110 | Ecommerce Fulfillment Built for Brands | 5 | Pass |
| /printing/ | 43 | 106 | Commercial Printing Services | 5 | Pass |
| /contact/ | 46 | 105 | Let's Talk About Your Fulfillment Needs | 5 | Pass |
| /blog/ | 47 | 121 | Fulfillment & Marketing Blog | 4 | Pass |
| /es/ | 53 | 130 | Logistica, impresion y marketing | 4 | Pass |
Performance
Overall performance is good with Brotli compression and minimal JS. Main issue is CLS from ticker images.
The client logo ticker on the homepage contains 72 <img> tags (36 logos duplicated for infinite scroll) without explicit width and height attributes. This causes Cumulative Layout Shift (CLS) as images load and the browser recalculates layout.
Affected images include: masa.webp, ncl.svg, victory-cruises.svg, sixthman.svg, oceania-cruises.webp, supersmart.webp, regent.webp, and 29 others.
width and height attributes to all ticker <img> tags in index.astro. Since these are contained within a fixed-height ticker, use consistent dimensions like width="120" height="48" with object-fit: contain.Static image assets like hero images and logos return Cache-Control: public, max-age=14400 (4 hours). For versioned static assets, a much longer cache duration would reduce repeat-visit load times.
Cache-Control: public, max-age=31536000, immutable for static assets in /img/ and use cache-busting query strings or hashed filenames for cache invalidation.The homepage HTML document is 44KB (compressed with Brotli). This is acceptable but on the higher end. Inline SVG icons and the ticker markup contribute to the size.
Accessibility
Strong accessibility score of 96/100. One contrast issue to fix.
The "Ready to Simplify Your Supply Chain" CTA section has a paragraph with foreground color #333333 on background color #888b8d, producing a contrast ratio of 3.68:1. WCAG AA requires a minimum of 4.5:1 for normal text.
Element: section.cta-banner > div.container > p
#ffffff (white) for a contrast ratio of 5.18:1, or darken the background. Alternatively, increase text size to 18px+ (large text only requires 3:1).Content & Internationalization
Bilingual infrastructure is in place but Spanish content coverage is significantly behind English.
The site has 48 English pages but only 16 Spanish equivalents. Missing Spanish versions include:
Service sub-pages (25): All 8 printing sub-pages, all 6 promotional products sub-pages, all 6 graphic design sub-pages, and 5 other pages.
Core pages (7): /about/, /blog/, /case-studies/, /faq/, /industries/, /privacy/, /terms/
J.M. Field is based in Fort Lauderdale with a significant Spanish-speaking customer base. Full bilingual coverage could capture untapped organic traffic.
The blog currently has 8 posts covering fulfillment, printing, and promotional products topics. For a site targeting competitive B2B fulfillment keywords, a consistent publishing cadence would strengthen topical authority.
Current topics: amazon FBA vs 3PL, choosing a fulfillment company, kitting services, commercial printing technology, promotional products (2 posts), graphic design, warehousing costs.
URL Architecture
Clean nested hierarchy with logical content siloing.