We have completed a comprehensive audit of the website and identified several opportunities to improve both search engine visibility and the overall user experience. The most critical issues involve performance-related technical errors and accessibility barriers that directly impact how visitors interact with the site on mobile devices. I recommend we prioritize addressing these high-impact items immediately to ensure the site is fully optimized and accessible to all potential clients.
90
SEO
86
Performance
89
Accessibility
74
UI / Visual
66
Content
74
Technical
Screenshots
Desktop (1440px)
Mobile (375px)
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
2 high2 medium
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
TTFB is 442ms
TTFB is 442ms. Google recommends ≤200ms.
Optimize server, enable HTTP/2, use edge caching.
medium
25 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 high1 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 injection failed: Page.evaluate() got an unexpected keyword argument 'timeout'. May be blocked by CSP.
Test accessibility manually or via Chrome DevTools.
UI / Visual
3 high5 medium1 low
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] Mobile Responsiveness
The mobile navigation menu (in the second screenshot) displays an extremely cluttered and poorly organized drop-down list. Elements like 'PRICE LIST' and 'PACKAGES' are cramped, and the overall vertical stacking is chaotic, detracting from the user experience.
Implement a proper hamburger menu component that collapses these items into an accordian or a clean, drawer-style navigation menu rather than just stacking them vertically in plain text.
high
[Visual] Visual Hierarchy
In the desktop screenshot, the 'GONG SOUND IMMERSION' section has a CTA button ('BOOK NOW') that is visually isolated from the descriptive text because it is pushed to the far bottom, while the image takes up the right column. There is a lack of cohesive grouping between content and action.
Tighten the vertical spacing between the event description text and the button. Group the header, paragraph, bullet points, and CTA button into a single flex container without excessive gaps.
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
In the desktop View, the 'Featured Spa Services' section displays four card images with inconsistent negative space. The text labels 'SKINCARE TREATMENTS', etc., have varying border padding, making the row look visually unstable.
Apply a uniform grid system (e.g., CSS Grid with fixed gaps) and equal heights for all service cards and uniform padding for the button-link elements below the images.
medium
[Visual] Typography
The 'Current schedule' section on desktop uses a very wide text block for the description paragraph below the header. The line length exceeds the recommended 60-75 character count for optimal readability.
Constrain the width of the paragraph text container using 'max-width: 600px;' or similar and center it to improve readability.
medium
[Visual] Professionalism
The 'Featured' section header is extremely small and lacks the visual weight required to introduce a primary content block. It gets lost compared to the subheaders in the service section.
Increase the font size and font weight for the 'FEATURED' section title to create a clear section break and hierarchy.
low
[Visual] Color & Branding
The logo in both mobile and desktop views is quite small and low-contrast against the complex background image in the hero section, making it feel slightly washed out.
Adjust the background overlay opacity (e.g., 'background: rgba(0,0,0,0.3);') or add a subtle drop shadow to the logo to ensure it maintains brand legibility regardless of the background imagery.
Content
1 critical3 high4 medium1 low
critical
[Content] Placeholder Text
The header contains a broken sentence with a missing link/action call.
"Gong Sound Immersion: Every 3rd Saturday at 10:30 AM. to Book."
Change to: 'Gong Sound Immersion: Every 3rd Saturday at 10:30 AM. <a href='/booking-link'>Click here to book</a>.'
Incorrect sentence structure regarding the wellness work description.
"Our work in this session: Through vibrational-medicine we will work"
Change to: 'Wellness Session: Through vibrational medicine, we work to remove and clear blockages—often the underlying cause of physical illness.'
high
9 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
Non-standard punctuation usage and unnecessary 'etcetera' at the end of a list.
"nervous systems, lymphatic systems, etcetera."
Change to: 'nervous, and lymphatic systems.'
medium
[Content] Professionalism
Inconsistent capitalization of common nouns ('Beauty', 'Oceanside', 'Conscious Community') reduces brand authority.
"the House of Beauty holds space Oceanside"
Change to: 'the house of beauty holds space oceanside' or ensure only proper nouns are capitalized throughout.
medium
[Content] Calls To Action
Multiple redundant CTA buttons appear on the same page without clear secondary/primary hierarchy.
"BOOK ONLINE / BOOK NOW / SCHEDULE AN APPOINTMENT"
Standardize all booking CTAs to one consistent label (e.g., 'Book Now') to avoid user confusion.
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
Repetitive use of 'YOU' in all caps feels aggressive rather than welcoming.
"our yoga therapists will guide YOU in discovering a more flexible, stronger, and healed YOU."
Change to: 'Our yoga therapists will guide you in discovering a more flexible, stronger, and healed version of yourself.'
Technical
1 critical1 high4 medium3 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
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
4 cookie(s) missing SameSite attribute
Cookies without SameSite may be sent on cross-site requests: __cf_bm, __cf_bm, __cf_bm
# QA Report: https://ciaobellaislamorada.com/
**Client:** Robbies
**Overall Score:** 80/100
**Date:** 2026-03-23
We have completed a comprehensive audit of the website and identified several opportunities to improve both search engine visibility and the overall user experience. The most critical issues involve performance-related technical errors and accessibility barriers that directly impact how visitors interact with the site on mobile devices. I recommend we prioritize addressing these high-impact items immediately to ensure the site is fully optimized and accessible to all potential clients.
**Issues:** 2 critical · 13 high · 15 medium · 6 low
## SEO (90/100)
- **[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.
- Fix: 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"
- Fix: Use H3 instead of H4 here.
## Performance (86/100)
- **[HIGH]** 5 render-blocking scripts
- Scripts in <head> without async/defer block HTML parsing.
- Fix: 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.
- Fix: Add width and height attributes to all <img> tags.
- **[MEDIUM]** TTFB is 442ms
- TTFB is 442ms. Google recommends ≤200ms.
- Fix: Optimize server, enable HTTP/2, use edge caching.
- **[MEDIUM]** 25 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.
- Fix: 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 (89/100)
- **[HIGH]** 58 interactive elements below 44×44px touch target size
- WCAG 2.5.5 recommends at least 44×44px for touch targets.
- Fix: 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.
- Fix: Add <track kind='captions'> to all video elements.
- **[LOW]** axe-core could not run
- axe-core injection failed: Page.evaluate() got an unexpected keyword argument 'timeout'. May be blocked by CSP.
- Fix: Test accessibility manually or via Chrome DevTools.
## UI (74/100)
- **[HIGH]** Horizontal overflow on mobile (375px)
- Content overflows the viewport horizontally on mobile. This causes unwanted horizontal scrolling.
- Fix: Fix CSS to prevent overflow: check for fixed widths, max-width on containers, and overflow:hidden on body.
- **[HIGH]** [Visual] Mobile Responsiveness
- The mobile navigation menu (in the second screenshot) displays an extremely cluttered and poorly organized drop-down list. Elements like 'PRICE LIST' and 'PACKAGES' are cramped, and the overall vertical stacking is chaotic, detracting from the user experience.
- Fix: Implement a proper hamburger menu component that collapses these items into an accordian or a clean, drawer-style navigation menu rather than just stacking them vertically in plain text.
- **[HIGH]** [Visual] Visual Hierarchy
- In the desktop screenshot, the 'GONG SOUND IMMERSION' section has a CTA button ('BOOK NOW') that is visually isolated from the descriptive text because it is pushed to the far bottom, while the image takes up the right column. There is a lack of cohesive grouping between content and action.
- Fix: Tighten the vertical spacing between the event description text and the button. Group the header, paragraph, bullet points, and CTA button into a single flex container without excessive gaps.
- **[MEDIUM]** No favicon
- No <link rel='icon'> found.
- Fix: 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.
- Fix: Set base font-size to 16px for body content.
- **[MEDIUM]** [Visual] Layout & Spacing
- In the desktop View, the 'Featured Spa Services' section displays four card images with inconsistent negative space. The text labels 'SKINCARE TREATMENTS', etc., have varying border padding, making the row look visually unstable.
- Fix: Apply a uniform grid system (e.g., CSS Grid with fixed gaps) and equal heights for all service cards and uniform padding for the button-link elements below the images.
- **[MEDIUM]** [Visual] Typography
- The 'Current schedule' section on desktop uses a very wide text block for the description paragraph below the header. The line length exceeds the recommended 60-75 character count for optimal readability.
- Fix: Constrain the width of the paragraph text container using 'max-width: 600px;' or similar and center it to improve readability.
- **[MEDIUM]** [Visual] Professionalism
- The 'Featured' section header is extremely small and lacks the visual weight required to introduce a primary content block. It gets lost compared to the subheaders in the service section.
- Fix: Increase the font size and font weight for the 'FEATURED' section title to create a clear section break and hierarchy.
- **[LOW]** [Visual] Color & Branding
- The logo in both mobile and desktop views is quite small and low-contrast against the complex background image in the hero section, making it feel slightly washed out.
- Fix: Adjust the background overlay opacity (e.g., 'background: rgba(0,0,0,0.3);') or add a subtle drop shadow to the logo to ensure it maintains brand legibility regardless of the background imagery.
## Content (66/100)
- **[CRITICAL]** [Content] Placeholder Text
- The header contains a broken sentence with a missing link/action call.
- Fix: Change to: 'Gong Sound Immersion: Every 3rd Saturday at 10:30 AM. <a href='/booking-link'>Click here to book</a>.'
- **[HIGH]** 9 broken external link(s)
- Links returning errors: ciaobellaspa.zenoti.com, ciaobellaspa.zenoti.com, ciaobellaspa.zenoti.com…
- Fix: Fix or remove broken external links.
- **[HIGH]** [Content] Grammar & Spelling
- Incorrect sentence structure regarding the wellness work description.
- Fix: Change to: 'Wellness Session: Through vibrational medicine, we work to remove and clear blockages—often the underlying cause of physical illness.'
- **[HIGH]** 9 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…
- Fix: 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
- Non-standard punctuation usage and unnecessary 'etcetera' at the end of a list.
- Fix: Change to: 'nervous, and lymphatic systems.'
- **[MEDIUM]** [Content] Professionalism
- Inconsistent capitalization of common nouns ('Beauty', 'Oceanside', 'Conscious Community') reduces brand authority.
- Fix: Change to: 'the house of beauty holds space oceanside' or ensure only proper nouns are capitalized throughout.
- **[MEDIUM]** [Content] Calls To Action
- Multiple redundant CTA buttons appear on the same page without clear secondary/primary hierarchy.
- Fix: Standardize all booking CTAs to one consistent label (e.g., 'Book Now') to avoid user confusion.
- **[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=…
- Fix: Replace with one natural sentence describing what the image shows. Avoid cramming in keywords.
- **[LOW]** [Content] Professionalism
- Repetitive use of 'YOU' in all caps feels aggressive rather than welcoming.
- Fix: Change to: 'Our yoga therapists will guide you in discovering a more flexible, stronger, and healed version of yourself.'
## Technical (74/100)
- **[CRITICAL]** Missing HSTS header
- The HSTS HTTP response header is not set.
- Fix: Add to your server/CDN/nginx config: Strict-Transport-Security: max-age=31536000; includeSubDomains
- **[HIGH]** Missing X-Content-Type-Options header
- The X-Content-Type-Options HTTP response header is not set.
- Fix: 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.
- Fix: 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.
- Fix: 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
- Fix: 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.
- Fix: Add HttpOnly attribute to session and auth cookies.
- **[LOW]** Missing Referrer-Policy header
- The Referrer-Policy HTTP response header is not set.
- Fix: 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.
- Fix: Add to your server/CDN/nginx config: Permissions-Policy: camera=(), microphone=(), geolocation=()
- **[LOW]** 4 cookie(s) missing SameSite attribute
- Cookies without SameSite may be sent on cross-site requests: __cf_bm, __cf_bm, __cf_bm
- Fix: Set SameSite=Lax or Strict on all cookies.