New Audit
History

Robbies

Ciao Bella of Islamorada Salon, Day Spa, Wellness and Yoga

https://ciaobellaislamorada.com/

Audited 2026-03-24

78

Overall

2 Critical 15 High 13 Medium 8 Low
The website currently shows a fair baseline of content but requires technical optimization to improve search engine rankings and user experience. The most critical priorities include addressing slow page load speeds and correcting structural errors that prevent search engines from properly indexing your site. We recommend authorizing our team to implement these performance fixes and structural cleanup immediately to boost your site rankings and prevent layout shifts for visitors.
90
SEO
83
Performance
89
Accessibility
70
UI / Visual
75
Content
64
Technical

Screenshots

Desktop (1440px)

Desktop screenshot

Mobile (375px)

Mobile screenshot

SEO

2 high
high

Multiple H1 tags (2)

Found 2 H1 tags: "Voted The #1 Salon & Spa"; "Voted The #1 Salon & Spa". Confuses search engines about the page topic.

Keep only one H1 — the primary page heading. Remove or demote the others to H2.
high

Heading hierarchy skip

Heading jumps from H2 to H4: "Experience the power of the Gong in an intimate setting"

Use H3 instead of H4 here.

Performance

3 high 1 medium
high

TTFB is 640ms (Slow)

Time to First Byte is 640ms. Lighthouse threshold: ≤600ms.

Check server response time, enable caching, or use a CDN.
high

5 render-blocking scripts

Scripts in <head> without async/defer block HTML parsing.

Add async or defer attributes to non-critical scripts.
high

25 images missing width/height attributes

Images without explicit dimensions cause Cumulative Layout Shift as they load.

Add width and height attributes to all <img> tags.
medium

31 images missing loading="lazy"

Images without native lazy loading: logo-blanco.png-1.webp, CiaoBella_Web_Home_award_BUK25.webp, CiaoBella_Web_Home_award_BUK25.webp…. The browser fetches all of them on page load regardless of whether they're visible.

Add loading="lazy" to non-hero <img> tags. Keep the first/hero image as-is (no loading attribute, or loading="eager") to avoid an LCP penalty.

Accessibility

2 high 1 low
high

58 interactive elements below 44×44px touch target size

WCAG 2.5.5 recommends at least 44×44px for touch targets.

Increase padding on small buttons and links.
high

1 video(s) without captions

Videos without captions are inaccessible to deaf and hard-of-hearing users. WCAG 1.2.2.

Add <track kind='captions'> to all video elements.
low

axe-core could not run

axe-core failed: Page.evaluate() got an unexpected keyword argument 'timeout'. May be blocked by CSP or page too complex.

Test accessibility manually or via Chrome DevTools.

UI / Visual

1 critical 2 high 4 medium 2 low
critical

[Visual] Mobile Responsiveness

The mobile navigation menu is completely broken, showing a vertical stack of links (Price list, Packages, Salon, Spa, Wellness, etc.) with massive overlapping and poor formatting. It renders the site unusable on mobile devices.

Implement a proper 'hamburger' menu pattern. Use CSS media queries to hide the full navigation list on mobile and display a toggle icon. Position the toggle absolutely in the header and create an overlay/drawer menu for the navigation links.
high

Horizontal overflow on mobile (375px)

Content overflows the viewport horizontally on mobile. This causes unwanted horizontal scrolling.

Fix CSS to prevent overflow: check for fixed widths, max-width on containers, and overflow:hidden on body.
high

[Visual] Typography

The 'Current schedule' section for yoga classes has significantly small, cramped text for the schedule details compared to the heading, hurting readability.

Increase the font-size of the schedule details (e.g., '8:30 – 9:30 am') to at least 16px and increase the line-height (e.g., line-height: 1.5) to provide better vertical rhythm.
medium

No favicon

No <link rel='icon'> found.

Add a favicon.ico and link it in <head>.
medium

Body text below 16px (13 elements)

Many text elements are smaller than the recommended 16px minimum.

Set base font-size to 16px for body content.
medium

[Visual] Layout & Spacing

The white space in the 'Featured Spa Services' section is inconsistent. The text labels are extremely close to the edge of the images, and the spacing between the four service cards is uneven.

Standardize padding using a grid system. Apply a consistent gap (e.g., gap: 20px) on the parent container using Flexbox or Grid. Add vertical margin (margin-top: 15px) to the text labels to create breathing room from the images.
medium

[Visual] Visual Hierarchy

The header call-to-action buttons ('BOOK ONLINE', 'CALL US') are formatted identically to the buttons in the body. In the main navigation, these appear as high-contrast buttons, but they lack a clear primary/secondary hierarchy.

Differentiate the 'Book Online' button as the primary CTA by using a more prominent background color or border-radius, while making 'Call Us' a secondary ghost button (bordered with transparent background) to guide user focus.
low

[Visual] Professionalism

The 'Gong Sound Immersion' section title is truncated on the mobile view ('Gong Sound Imme').

Use CSS 'text-overflow: ellipsis' or decrease the font size specifically for mobile viewports using a query: @media (max-width: 768px) { .section-title { font-size: 1.2rem; } }.
low

[Visual] Color & Branding

The text color used for descriptive paragraphs is a low-contrast gray that blends into the white background, specifically in the 'About Ciao Bella' section.

Improve web accessibility (WCAG AA compliance) by darkening the paragraph text color to at least #444444 to ensure it meets the recommended contrast ratio against the white background.

Content

3 high 4 medium 2 low
high

9 broken external link(s)

Links returning errors: ciaobellaspa.zenoti.com, ciaobellaspa.zenoti.com, ciaobellaspa.zenoti.com…

Fix or remove broken external links.
high

[Content] Placeholder Text

The header contains an incomplete sentence fragment, suggesting a missing link or CTA button text.

"Gong Sound Immersion: Every 3rd Saturday at 10:30 AM. to Book."

Replace ' to Book.' with 'Click here to book.' or wrap the phrasing in a clear hyperlink: '<a href="[URL]">Click here to book</a>'.
high

24 image(s) with generic or missing alt text

Images with uninformative alt text (filenames, 'image', 'photo', or empty): cropped-ciaobella.png, logo-blanco.png-1.webp, CiaoBella_Banner_EventoFeb21_web.we…

Write a natural-language description for each: what the image shows and why it's there (e.g. 'Relaxation massage room at Ciao Bella spa').
medium

[Content] Grammar & Spelling

Awkward phrasing and poor punctuation in the list of body systems.

"nervous systems, lymphatic systems, etcetera."

Change to: 'nervous, and lymphatic systems.'
medium

[Content] Grammar & Spelling

Inconsistent capitalization of common nouns throughout the copy.

"a Conscious Community, one breath at a time!"

Standardize to sentence case. Change to: 'a conscious community, one breath at a time!'
medium

[Content] Calls To Action

Redundant and competing CTAs ('BOOK ONLINE' and 'CALL US') appear in multiple sections without a clear primary conversion path.

"BOOK ONLINE CALL US VOTED THE #1 SALON & SPA"

Limit the hero section to one primary CTA (e.g., 'Book Now'). Use secondary style buttons for 'Call Us' to establish visual hierarchy.
medium

18 image(s) with keyword-stuffed alt text

Alt text used as a keyword list rather than a description: svg+xml;nitro-empty-id=MTMzNDo4NTM=, svg+xml;nitro-empty-id=MTM0Njo4ODE=, svg+xml;nitro-empty-id=MTM1ODo4NjM=…

Replace with one natural sentence describing what the image shows. Avoid cramming in keywords.
low

[Content] Professionalism

The phrasing 'vibrational-medicine' is non-standard and lacks hyphenation logic in this context.

"Through vibrational-medicine we will work on"

Remove the hyphen: 'Through vibrational medicine, we will...'
low

[Content] Professionalism

The copy 'they’ve made it onto our shelves in our present timeline' is overly abstract and confusing for a B2C retail description.

"they’ve made it onto our shelves in our present timeline."

Rewrite for clarity: 'We have curated these historical treasures for our current collection.'

Technical

1 critical 3 high 4 medium 3 low
critical

Missing HSTS header

The HSTS HTTP response header is not set.

Add to your server/CDN/nginx config: Strict-Transport-Security: max-age=31536000; includeSubDomains
high

2 console error(s)

Browser console errors indicate broken functionality. First: Failed to load resource: the server responded with a status of 403 ()

Open Chrome DevTools (F12) > Console tab to see all errors with source URLs. Fix the root cause of each error — broken script loads, JS exceptions, or failed API calls.
high

1 resource(s) failing to load (4xx/5xx)

Resources returning HTTP errors: HTTP 403: https://link.flowsly.io/widget/form/4vyloIoUuwtzVjJmDyOk

Open Chrome DevTools > Network tab, filter by Status ≥ 400 to find all failing resources. Fix URLs, restore missing files, or remove unused references.
high

Missing X-Content-Type-Options header

The X-Content-Type-Options HTTP response header is not set.

Add to your server/CDN/nginx config: X-Content-Type-Options: nosniff
medium

Missing X-Frame-Options header

The X-Frame-Options HTTP response header is not set.

Add to your server/CDN/nginx config: X-Frame-Options: SAMEORIGIN
medium

Missing Content-Security-Policy header

The Content-Security-Policy HTTP response header is not set.

Add to your server/CDN/nginx config: Content-Security-Policy: default-src 'self'; img-src * data:; script-src 'self' (customize per stack)
medium

1 cookie(s) missing Secure flag

Cookies without Secure flag can be sent over HTTP: nitroCachedPage

Add the Secure attribute to all cookies on HTTPS sites.
medium

1 cookie(s) missing HttpOnly flag

Cookies accessible via JavaScript: nitroCachedPage. XSS can steal them.

Add HttpOnly attribute to session and auth cookies.
low

Missing Referrer-Policy header

The Referrer-Policy HTTP response header is not set.

Add to your server/CDN/nginx config: Referrer-Policy: strict-origin-when-cross-origin
low

Missing Permissions-Policy header

The Permissions-Policy HTTP response header is not set.

Add to your server/CDN/nginx config: Permissions-Policy: camera=(), microphone=(), geolocation=()
low

5 cookie(s) missing SameSite attribute

Cookies without SameSite may be sent on cross-site requests: __cf_bm, cf_clearance, __cf_bm

Set SameSite=Lax or Strict on all cookies.
New Audit Robbies History

Add to Asana