Bud Authority — Sentinel
Monthly Deep Audit · Unified Command Center

Apex Sentinel — CityLeaf NJ Monthly Audit

URL: https://cityleafnj.com/

Platform: wordpress

Archetype: community

Run ID: 2026-04-19T06-18-18-831Z

Scanned: 2026-04-19T07:23:24.758Z

Duration: 673s

This is a monthly deep audit. The crawler performed a full-site scan including

Lighthouse performance, axe-core accessibility (WCAG 2.2 AA), cross-browser compatibility,

security headers, schema markup validation, and SEO best-practice checks.

Because this site is not a repository we control, Apex Sentinel **cannot automatically

apply fixes** — instead, each finding below includes an AI-generated plain-English

explanation + step-by-step recommended fix you can hand to a developer or execute

in your CMS directly.


Executive Summary

Overall grade: F

DimensionCountMeaning
Pages crawled47Full sitemap + linked pages
P0 (critical)1Site-down or compliance-breaking
P1 (urgent)10Significant revenue / SEO / UX impact
P2 (high)48Quality / ranking / trust degradation
P3 (medium)138Polish + optimization
"Do first" items8AI-flagged top priorities
Quick wins (< 30 min)41Fastest ROI items

Top 10 Actions (Ranked)

If you only have time for ten things this month, do these — in this order.

  1. [P0] 🔴 DO FIRST Sensitive artifact exposed: /wp-login.php — _An unauthorized login could allow attackers to modify your inventory, patient data, compliance documents, or age-gate settings—potentially violating cannabis regulations and losing customer trust._

Page: https://cityleafnj.com/wp-login.php

Effort: Moderate (1-3 hours)

  1. [P1] 🔴 DO FIRST 1 uncaught JS error(s) on homepage — _Customers cannot navigate your menu, place orders, or interact with age-gate verification—directly blocking sales and creating compliance risk if the age gate fails to function._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)

  1. [P1] 🔴 DO FIRST A11y: ARIA dialog and alertdialog nodes should have an accessible name — _Screen reader users (including visually impaired customers) cannot understand or navigate your age-verification gate, effectively blocking them from your site and creating legal liability under the ADA._

Page: https://cityleafnj.com/

Effort: Quick win (< 30 min)

  1. [P1] 🔴 DO FIRST A11y: Certain ARIA roles must contain particular children — _Inaccessible sites expose you to ADA legal risk, exclude disabled customers from purchasing, and signal poor professionalism to search engines—harming both compliance standing and organic traffic._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)

  1. [P1] 🔴 DO FIRST A11y: Elements must meet minimum color contrast ratio thresholds — _Cannabis retailers are subject to heightened scrutiny on compliance; accessibility violations expose you to ADA lawsuits and state regulatory penalties, especially on a critical compliance gate like age verification._

Page: https://cityleafnj.com/

Effort: Quick win (< 30 min)

  1. [P1] 🔴 DO FIRST A11y: Links must have discernible text (×5) — _You are exposed to WCAG 2.1 Level A compliance risk (legal liability in NJ), and you're excluding customers who use screen readers or keyboard navigation from exploring your product galleries._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)

  1. [P1] 🔴 DO FIRST A11y: [role="img"] elements must have alternative text (×5) — _Inaccessible galleries reduce traffic from users with disabilities, expose you to ADA litigation risk, and hurt your search rankings because Google cannot index unlabeled images._

Page: https://cityleafnj.com/

Effort: Quick win (< 30 min)

  1. [P1] 🟠 HIGH Lighthouse bestPractices (desktop): 56/100 — _A low Best Practices score signals to search engines and visitors that your site may have security or reliability issues—especially critical for a cannabis retailer where compliance and customer trust directly affect sales and legal standing._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)

  1. [P1] 🟠 HIGH webkit has 1 JS error(s) not present in Chromium — _Safari represents ~25-30% of mobile traffic for most cannabis retail sites; broken functionality for these users directly reduces conversions, user engagement, and compliance form submissions._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)

  1. [P1] 🟠 HIGH firefox has 1 JS error(s) not present in Chromium — _Firefox users may experience broken interactive features, missing buttons, or site elements that don't respond correctly, leading to lost sales and customers switching to competitors._

Page: https://cityleafnj.com/

Effort: Moderate (1-3 hours)


Findings by Severity

P0 — 1 finding

1. Sensitive artifact exposed: /wp-login.php

What it means (plain English)

Your WordPress login page (/wp-login.php) is publicly accessible and returns a success response. This is a security risk because attackers can attempt to guess passwords or use automated tools to break into your site. While WordPress login pages are standard, exposing them without protection makes your site an easier target for hackers.

Why it matters for your business: An unauthorized login could allow attackers to modify your inventory, patient data, compliance documents, or age-gate settings—potentially violating cannabis regulations and losing customer trust.

Technical root cause: WordPress /wp-login.php is enabled by default and not blocked by a firewall rule (WAF) or .htaccess restriction. Your web server is not configured to require additional authentication or hide this endpoint from public access.

Recommended fix — step by step

  1. Log into your WordPress admin dashboard and install the 'Wordfence Security' plugin (free tier includes login protection)
  2. In Wordfence Settings → Login Security, enable 'Two-Factor Authentication' for all admin accounts
  3. Enable 'Limit Login Attempts' to block IP addresses after 5 failed login attempts
  4. Contact your hosting provider and request they add a Web Application Firewall (WAF) rule to require an HTTP header or whitelist only your office IP(s) before accessing /wp-login.php
  5. Alternatively, use an .htaccess rule: create/edit .htaccess in your root folder and add: 'RewriteRule ^wp-login.php - [F,L]' then whitelist your office IP only
  6. Rename your login URL using a plugin like 'WPS Hide Login' to move it away from the default /wp-login.php path

P1 — 10 findings

1. 1 uncaught JS error(s) on homepage

What it means (plain English)

Your website's homepage is throwing a JavaScript error that breaks interactive features. When a visitor loads the page, a script is trying to modify an HTML element that doesn't exist or hasn't loaded yet, causing the entire interaction layer to fail. This means buttons, forms, menus, and other interactive elements may not work properly.

Why it matters for your business: Customers cannot navigate your menu, place orders, or interact with age-gate verification—directly blocking sales and creating compliance risk if the age gate fails to function.

Technical root cause: A JavaScript plugin or custom code is calling setAttribute() on a DOM element (HTML object) that is null—either because it doesn't exist on the page, or it's being referenced before the page finishes loading.

Recommended fix — step by step

  1. Open WordPress admin → Plugins, and temporarily deactivate all non-essential plugins (especially page builders, forms, and sliders) one by one, reloading the homepage each time to identify which plugin causes the error.
  2. Open your browser's Developer Tools (F12 or right-click → Inspect) → Console tab → reload the homepage and note the exact plugin or file name in the error stack trace.
  3. If the error originates from a theme or plugin you own, request the vendor provide a hotfix, or edit the offending code: wrap the setAttribute call in a null check (e.g., if (element !== null) { element.setAttribute(...) }).
  4. If the error is from a third-party plugin (e.g., a slider, form builder, or ad plugin), update it to the latest version via WordPress admin → Plugins → Updates.
  5. If no plugin is responsible, switch to a fresh WordPress theme temporarily to confirm the issue is theme-related, then either update the theme or contact your theme vendor.
  6. After fixing, hard-refresh the homepage (Ctrl+Shift+R on Windows, Cmd+Shift+R on Mac) and re-run a browser console check to confirm the error is gone.

2. A11y: ARIA dialog and alertdialog nodes should have an accessible name

What it means (plain English)

Your age-gate dialog—the overlay that appears to verify visitor age before accessing the site—is missing a label that screen readers can announce. Screen reader users won't know what the dialog is for or how to interact with it. This is a serious accessibility issue under WCAG 2.1 Level AA standards.

Why it matters for your business: Screen reader users (including visually impaired customers) cannot understand or navigate your age-verification gate, effectively blocking them from your site and creating legal liability under the ADA.

Technical root cause: The #baag3-gate div has role="dialog" but lacks aria-label, aria-labelledby, or title attributes. Screen readers require one of these to announce the dialog's purpose.

Recommended fix — step by step

  1. Log in to WordPress admin → Appearance → Theme File Editor (or use a code snippet plugin like Code Snippets)
  2. Locate the age-gate HTML template (likely in your theme's template-parts or a plugin like Age Gate or similar)
  3. Add aria-label="Age Verification" to the div with id="baag3-gate", or alternatively add aria-labelledby="gate-heading" and ensure a heading with id="gate-heading" exists inside the dialog with text like 'You must be 21 or older'
  4. If using a pre-built age-gate plugin, check its settings for an 'Accessibility Label' or 'Dialog Title' option and enable it
  5. Test the fix using a free screen reader (NVDA on Windows or VoiceOver on Mac) to confirm the dialog name is announced
  6. Re-run your accessibility audit tool to confirm the issue is resolved

3. A11y: Certain ARIA roles must contain particular children

What it means (plain English)

Your homepage has a container marked as a 'list' in the accessibility code, but it contains child elements (images, subheadings, links) that aren't properly structured as list items. Screen reader users and people navigating via keyboard will encounter confusing or broken navigation because the list structure doesn't match its contents. This is a fundamental accessibility violation that blocks compliant browsing.

Why it matters for your business: Inaccessible sites expose you to ADA legal risk, exclude disabled customers from purchasing, and signal poor professionalism to search engines—harming both compliance standing and organic traffic.

Technical root cause: The Elementor page builder (likely a carousel, grid, or product loop) was assigned role="list" but its child elements don't follow the required list structure (each child should be a <li> or have role="listitem"). This mismatch typically happens when Elementor's loop container is used without proper semantic wrapping.

Recommended fix — step by step

  1. Log into WordPress admin → Elementor → edit the homepage (cityleafnj.com) and locate the section with class 'elementor-loop-container'.
  2. Select that container element in Elementor's editor and open its Advanced settings (gear icon).
  3. If this is a carousel, grid of products, or image loop: remove the role="list" attribute entirely OR convert it to a neutral <div> by setting its ARIA role to 'region' instead.
  4. Alternatively, if it must be a list, ensure every direct child element (image, link, heading) is wrapped in a <li> tag or assigned role="listitem" — usually easier in a custom template than via Elementor UI.
  5. After edit, regenerate the page and re-test with axe DevTools (free browser extension) to confirm the error is resolved.
  6. Document the fix in your accessibility statement (footer or /accessibility page) if you maintain one.

4. A11y: Elements must meet minimum color contrast ratio thresholds

What it means (plain English)

A button on your homepage (the age-gate 'Yes' button) has white text (#ffffff) on a yellow-green background (#b4be0e) that creates a contrast ratio of only 2.03:1. WCAG accessibility standards require a minimum of 4.5:1 for text this size to be readable by people with low vision or color blindness. This fails a legal accessibility requirement.

Why it matters for your business: Cannabis retailers are subject to heightened scrutiny on compliance; accessibility violations expose you to ADA lawsuits and state regulatory penalties, especially on a critical compliance gate like age verification.

Technical root cause: The age-gate button uses inline CSS styling that pairs a light background color with white text, creating insufficient contrast. This likely originated from a theme or plugin template that wasn't tested against WCAG 2 AA standards.

Recommended fix — step by step

  1. Log into WordPress admin → Appearance → Customize (or theme editor if available)
  2. Locate the age-gate or cookie-consent plugin (likely 'Age Gate' or similar in Plugins list) → open its Settings
  3. Find the button styling section; change the button background color from #b4be0e to a darker shade like #808000 or #6b7a0b
  4. Alternatively, change the text color from #ffffff (white) to #000000 (black) on the existing background
  5. Use a free contrast checker tool (webaim.org/resources/contrastchecker/) to verify the new ratio meets 4.5:1 minimum
  6. Save changes and test the age-gate display on mobile and desktop to confirm readability
  7. Run the same accessibility audit again to confirm the finding is resolved

5. A11y: Links must have discernible text (×5)

What it means (plain English)

Your website has 5 image gallery links that keyboard and screen reader users cannot identify or interact with properly. These links have no visible text, no hidden labels (aria-label), and no title attributes—so assistive technology can't tell users what these links do. This makes your site unusable for people with vision disabilities.

Why it matters for your business: You are exposed to WCAG 2.1 Level A compliance risk (legal liability in NJ), and you're excluding customers who use screen readers or keyboard navigation from exploring your product galleries.

Technical root cause: Elementor's gallery lightbox links are rendering as clickable anchors with only decorative background images and no accessible text alternative. The data-elementor-lightbox-title attribute is metadata, not accessible text.

Recommended fix — step by step

  1. Log into WordPress admin → Pages → find the page containing the gallery (likely your home or products page)
  2. Click Edit with Elementor
  3. Locate the gallery widget with the broken links
  4. Click the gallery element → Advanced tab → Accessibility section
  5. For each image in the gallery, add an aria-label (e.g., 'Product photo: strain name' or 'Dispensary interior image')
  6. Alternatively, use Elementor's built-in Image Title field for each gallery item with descriptive text (e.g., 'View full-size image: OG Kush strain')
  7. Test with keyboard (Tab key should focus each link) and a free tool like WAVE (wave.webaim.org) to confirm links are now labeled
  8. Publish and re-scan with axe DevTools to verify all 5 links now have discernible names

6. A11y: [role="img"] elements must have alternative text (×5)

What it means (plain English)

Your gallery images on the homepage have the accessibility role of 'image' but lack descriptive text that screen readers can read aloud. This means visitors using screen readers (software that reads web pages aloud for blind or low-vision users) cannot understand what these images show. You have 5 images missing this required description.

Why it matters for your business: Inaccessible galleries reduce traffic from users with disabilities, expose you to ADA litigation risk, and hurt your search rankings because Google cannot index unlabeled images.

Technical root cause: Elementor gallery elements are set to role='img' but the aria-label attributes are empty or missing. The plugin is not auto-populating alt text from image metadata.

Recommended fix — step by step

  1. Log in to WordPress admin → Pages → Home (or the affected page)
  2. Click Edit with Elementor (the visual page builder)
  3. Locate the Gallery widget on the page
  4. Click on the first gallery image in the widget to open its settings panel
  5. In the right panel, find the 'Accessibility' or 'Advanced' section and add a descriptive aria-label (e.g., 'CityLeaf storefront exterior' or 'Cannabis product selection display')
  6. Repeat for all 5 gallery images
  7. Click 'Update' to save changes
  8. Run an accessibility test at https://wave.webaim.org/ and paste your homepage URL to confirm the issue is resolved

7. Lighthouse bestPractices (desktop): 56/100

What it means (plain English)

Your site's Lighthouse Best Practices score is 56 out of 100, which is well below the healthy threshold of 90. This score reflects issues like outdated libraries, missing security headers, or browser compatibility problems that erode user trust and can harm search rankings. The full details are in your Lighthouse HTML report, which lists each specific violation.

Why it matters for your business: A low Best Practices score signals to search engines and visitors that your site may have security or reliability issues—especially critical for a cannabis retailer where compliance and customer trust directly affect sales and legal standing.

Technical root cause: Best Practices violations typically stem from outdated WordPress plugins, missing HTTP security headers (like Content-Security-Policy or X-Frame-Options), unpatched dependencies, or third-party scripts that lack proper security configuration.

Recommended fix — step by step

  1. Download your Lighthouse HTML report from the evidence path and open it in a browser to see the exact list of failed audits (e.g., 'Includes front-end JavaScript libraries with known security vulnerabilities').
  2. Log into your WordPress admin dashboard and go to Plugins → Installed Plugins. Check for any plugins marked 'Update available' and update them immediately; outdated plugins are the most common source of Best Practices failures.
  3. Install and activate the 'WP Security Audit Log' or 'Wordfence' plugin (both free tiers available) to scan for known vulnerabilities in your plugins and theme.
  4. Add HTTP security headers by installing 'Really Simple SSL' plugin, go to its settings, and enable 'Add security headers' toggle—this will add Content-Security-Policy, X-Frame-Options, and other protective headers.
  5. Review the Lighthouse report again for any 'CSP violation' errors or third-party script warnings (e.g., analytics, ads). Contact those vendors for updated script URLs or security documentation.
  6. Test again using Google PageSpeed Insights (paste cityleafnj.com) to confirm score improvement after changes.

8. webkit has 1 JS error(s) not present in Chromium

What it means (plain English)

Your website has a JavaScript error that appears in Safari and other Apple browsers (WebKit) but not in Chrome. The error occurs when code tries to modify an HTML element (the mobile viewport tag) that doesn't exist or hasn't loaded yet. This causes features or page behavior to break for Safari users, particularly on iPhones and iPads.

Why it matters for your business: Safari represents ~25-30% of mobile traffic for most cannabis retail sites; broken functionality for these users directly reduces conversions, user engagement, and compliance form submissions.

Technical root cause: JavaScript is attempting to call setAttribute() on a null object, likely because the mobile viewport meta tag isn't present in the DOM when the script executes, or a script is running before the DOM is fully parsed. Safari's error handling differs slightly from Chrome, exposing the issue.

Recommended fix — step by step

  1. Open Chrome DevTools (F12) on https://cityleafnj.com/, switch to Safari and open Web Inspector (Develop menu → Show Web Inspector), and reproduce the error to identify which script file is triggering it.
  2. In your WordPress admin, go to Appearance → Theme File Editor (or use a code editor if child theme is active) and search for 'setAttribute' calls or 'mvp' variables.
  3. Add a null-check guard: wrap the setAttribute call in an if statement, e.g., 'if (element !== null) { element.setAttribute(...) }'.
  4. Verify the mobile viewport meta tag exists in wp-content/themes/[your-theme]/header.php: should contain '<meta name="viewport" content="width=device-width, initial-scale=1">'.
  5. If using a page builder (Elementor, Beaver Builder), check for custom JavaScript in Theme Settings → Custom Code and Global Elementor Settings → Custom CSS/JS.
  6. Clear WordPress cache and browser cache, then test on Safari (macOS or use BrowserStack free tier) to confirm the error is gone.
  7. If error persists, enable WordPress debug logging: add 'define('WP_DEBUG', true);' and 'define('WP_DEBUG_LOG', true);' to wp-config.php, check /wp-content/debug.log for related errors.

9. firefox has 1 JS error(s) not present in Chromium

What it means (plain English)

Your site has a JavaScript error that appears in Firefox but not Chrome. The code is trying to call a method (setAttribute) on something that doesn't exist (null). This usually happens when a script looks for an HTML element on the page before that element has loaded, or the element doesn't exist at all. Firefox reports this differently than Chrome, which is why you're seeing it only in Firefox.

Why it matters for your business: Firefox users may experience broken interactive features, missing buttons, or site elements that don't respond correctly, leading to lost sales and customers switching to competitors.

Technical root cause: A JavaScript file is attempting to access or modify an HTML element (likely with an id or class selector) that either doesn't exist on the page or hasn't finished loading when the script runs. The script references a variable called 'mvp' which is null.

Recommended fix — step by step

  1. Open Firefox Developer Tools (F12), go to the Console tab, refresh the page, and note the exact line number and file name where the error occurs.
  2. In WordPress admin, go to Appearance > Theme File Editor and search for 'mvp' across all theme files to locate the problematic JavaScript.
  3. If 'mvp' is defined in a custom plugin, go to Plugins in WordPress admin, click Edit on the plugin, and search for 'mvp' — note which file and line number uses it.
  4. Add a null check before the setAttribute call: change code like mvp.setAttribute(...) to if (mvp) { mvp.setAttribute(...) } or mvp?.setAttribute(...) if using modern JavaScript.
  5. If the element should exist, verify its HTML id or class matches the selector in the JavaScript — use Firefox Inspector (right-click element > Inspect) to confirm the element exists.
  6. After fixing, test the page in Firefox and Chrome to ensure the error is gone and the feature works as expected.

10. 4 mixed-content references (http://)

What it means (plain English)

Your website is served over HTTPS (secure), but some code references are pointing to HTTP (non-secure) URLs. These are Schema.org markup references—structured data that helps search engines understand your site. Browsers may flag or downgrade trust, though in this case the actual resources are schema definitions (not loaded assets), so the practical risk is low.

Why it matters for your business: While these specific schema.org references are safe, mixed-content warnings can erode customer trust and may marginally impact search rankings; for a cannabis retailer where compliance perception matters, clean security signals are important.

Technical root cause: WordPress or a theme/plugin is hardcoding http://www.schema.org/ URIs in JSON-LD structured data blocks. Schema.org URIs are namespace definitions (not fetched assets) and work over HTTP or HTTPS interchangeably, but best practice is to use https:// to avoid any browser warnings.

Recommended fix — step by step

  1. Log in to WordPress admin → Appearance → Theme Code Editor (or Plugins → Editor if using a plugin for structured data)
  2. Search for 'http://www.schema.org' in active theme files or use WordPress Search & Replace plugin (install via Plugins → Add New, search 'Better Search Replace') to find all occurrences
  3. Replace all instances of 'http://www.schema.org' with 'https://www.schema.org' using Find & Replace
  4. Clear any caching plugins (if installed): go to Settings → cache plugin name → Purge/Clear All Cache
  5. Verify the fix by opening your homepage in Chrome DevTools (F12 → Console) and confirm no mixed-content warnings appear

P2 — 48 findings

1. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alternative text descriptions. Alt text is hidden text that describes what an image shows — it helps screen readers (used by people who are blind or have low vision) understand images, and it also helps search engines understand your content. Right now, over 90% of your images are missing these descriptions.

Why it matters for your business: Missing alt text reduces your search visibility for product images and dispensary photos, and it creates legal risk under accessibility laws (ADA); customers using assistive technology cannot understand your product catalog.

Technical root cause: Images were likely uploaded to WordPress or added via Elementor without filling in the Alt Text field during upload or insertion. This is a common oversight when bulk-uploading product photos or hero images.

Recommended fix — step by step

  1. Log into WordPress Admin → Media Library. Filter by 'Unattached' or review all images.
  2. For each product/flower/edible image, click Edit → scroll to Alt Text field → write 1–2 sentences describing the product (e.g., 'Blue Dream strain flower in glass jar' or 'Cannabis gummy packaging, 10mg THC per piece').
  3. For hero/banner images, add context-specific alt text (e.g., 'CityLeaf NJ storefront exterior on Main Street').
  4. If using Elementor, edit each affected page/template → click image widget → Alt Text tab → fill in descriptions. Save.
  5. Use WordPress plugin 'Yoast SEO' (free version) or 'All in One SEO' → Image SEO report to identify any remaining missing alt text. Bulk editing is available in some premium tiers.
  6. Test with a screen reader: install NVDA (free, Windows) or use Safari + VoiceOver (Mac/iOS) and navigate your site to confirm alt text reads naturally.
  7. Prioritize product images first (highest business impact), then pages like /shop, /menu, /about.

2. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images out of 41 total that lack alt text — the descriptive label that tells screen readers and search engines what an image shows. This means visually impaired customers cannot understand product photos or store information, and Google cannot index those images for search results. It's a double hit: accessibility barrier + lost SEO opportunity.

Why it matters for your business: Customers using screen readers (including legally blind patients) cannot identify products or navigate your dispensary info; you're also losing image search traffic for strain names, product types, and cannabis-related queries that could drive new customers.

Technical root cause: Images were uploaded to WordPress without alt text filled in during upload, or alt text fields were left blank. WordPress doesn't enforce alt text, so it defaults to missing.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library, filter for images used on homepage and product pages
  2. For each image, click Edit → scroll to Alt Text field → write 5–10 word descriptive text (e.g., 'Blue Dream cannabis flower buds in glass jar' or 'CityLeaf dispensary storefront exterior')
  3. Prioritize product images first (highest impact), then navigation/hero images, then decorative backgrounds
  4. For future uploads: make alt text a checklist step — train staff or yourself to fill it in before hitting Publish
  5. Optional: install plugin like Yoast SEO Free (already common on WordPress) — it flags images with missing alt in the editor sidebar as a visual reminder
  6. Run a free audit at axe DevTools or WAVE browser extension after updating to confirm improvements

3. 9 image(s) missing alt text

What it means (plain English)

Nine images on your blog post about recreational cannabis lack alt text — descriptive labels that screen readers read aloud to blind/low-vision visitors. Search engines also use alt text to understand image content, so missing it weakens your SEO for image search and topic relevance.

Why it matters for your business: Missing alt text blocks accessibility for disabled customers (legal risk in NJ + bad optics for a wellness brand), and costs you search ranking points on a high-intent wellness article that could drive traffic.

Technical root cause: Images were inserted into the WordPress post without filling in the Alt Text field in the image block or media library; WordPress allows this by default.

Recommended fix — step by step

  1. Open the post editor for that URL in WordPress → click each image → in the right sidebar under Image Settings, find Alt Text field
  2. Write 5–10 word descriptions for each: e.g. 'Cannabis plant with green leaves and buds' or 'Customer browsing products in dispensary'
  3. Avoid keyword-stuffing; aim for natural, descriptive phrases that a sighted person would use
  4. After filling all 9, click Update to save the post
  5. Run the post URL through WAVE accessibility checker (wave.webaim.org) to confirm no alt text errors remain

4. 5 image(s) missing alt text

What it means (plain English)

Five images on your Newark cannabis guide page don't have alt text — descriptive labels that explain what each image shows. Search engines and screen readers (tools that help blind/low-vision visitors navigate your site) can't understand unlabeled images, so they miss important content.

Why it matters for your business: Missing alt text reduces your SEO ranking for cannabis keywords, blocks accessibility compliance, and means some of your visitors literally can't see or understand your product/guide content.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the media library during insertion, or the image blocks were added without the alt attribute populated.

Recommended fix — step by step

  1. In WordPress admin, go to Media Library and find each image used on /newark-cannabis-guide/
  2. Click each image → click Edit → scroll to Alt Text field → write a 5–10 word description (e.g., 'Cityleaf storefront exterior in Newark' or 'Cannabis flower close-up showing trichomes')
  3. Save changes
  4. Alternatively, edit the page directly: go to Pages → Newark Cannabis Guide → use Block Editor to select each image → open the block settings (right sidebar) → find Image settings → fill Alt Text field
  5. Publish/update the page
  6. Use a free tool like WAVE (wave.webaim.org) or Lighthouse (in Chrome DevTools) to verify all 5 images now have alt text

5. 5 image(s) missing alt text

What it means (plain English)

Five images on your Cannabis Concentrates Guide page don't have alt text—descriptive text that explains what the image shows. Screen readers (used by blind and low-vision visitors) can't describe these images, and search engines can't understand what they depict. This makes your content less accessible and less discoverable.

Why it matters for your business: Visitors using assistive technology will miss critical product or educational information, reducing engagement and potential sales. Google also uses alt text to rank image search results, so missing alt text means you're losing organic search traffic for cannabis product images.

Technical root cause: Images were likely uploaded or embedded in the WordPress editor without filling in the Alt Text field during upload, or alt text was removed during a content migration or theme update.

Recommended fix — step by step

  1. Log into WordPress admin → navigate to the Cannabis Concentrates Guide post → click Edit
  2. Scroll through the post and identify each image (hover over images; you'll see 5 of 6 lack alt text in the editor)
  3. Click on the first image → click the Edit button (pencil icon) in the floating toolbar
  4. In the Image Details panel, find the Alt Text field (usually bottom-left) and write a short, descriptive phrase (e.g., 'Close-up of cannabis concentrate in a glass container' for product photos)
  5. Repeat for all 5 images—aim for 5–15 words per alt text, describing what's visible and why it matters to the user
  6. Click Update Image, then Save/Publish the post
  7. Install Yoast SEO (if not active) → Dashboard → Tools → Image SEO → run a scan to catch any future missing alt text automatically

6. 6 image(s) missing alt text

What it means (plain English)

Six images on your blog page lack alternative text (alt text) — descriptive labels that screen readers announce to visually impaired visitors and that search engines use to understand image content. This creates barriers for accessibility and reduces your blog's visibility in image search results.

Why it matters for your business: Visitors using screen readers cannot understand your blog content, limiting your audience reach; additionally, search engines rank blog posts partly on image optimization, so missing alt text directly harms your SEO traffic and discovery.

Technical root cause: Images were inserted into WordPress posts without filling the 'Alt Text' field in the image block or media library settings, leaving the alt attribute empty.

Recommended fix — step by step

  1. Log in to WordPress admin → Posts → Blog (or the specific blog post URL) → Edit
  2. Click on each image in the editor; in the right sidebar under 'Image Settings', locate the 'Alt Text' field
  3. Write 5–10 word descriptive alt text for each image (e.g., 'CityLeaf storefront exterior on Oak Street' or 'Organic cannabis flower display shelf')
  4. Avoid keyword stuffing; use natural, accurate descriptions that a sighted person would give if describing the image to someone over the phone
  5. Click 'Update' to save each post after adding alt text
  6. Use a WordPress plugin like 'Accessibility Checker' to scan for remaining missing alt text across all posts and verify the fix

7. 11 image(s) missing alt text

What it means (plain English)

Your Harrison, NJ page has 11 images without alt text—alternative text that describes what's in the image. Screen readers (tools blind and low-vision visitors use) can't tell users what those images show. Search engines also can't read images without alt text, so you're missing keyword opportunities that could bring traffic from image search.

Why it matters for your business: Customers using assistive technology may leave your site frustrated; you're also losing SEO value in Google Images and missing compliance with accessibility law (ADA), which cannabis retailers are increasingly expected to follow.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the Media Library or the image block settings. WordPress doesn't auto-generate alt text, so images default to missing or empty alt attributes.

Recommended fix — step by step

  1. Log in to WordPress Admin → Media Library → filter to Harrison page images
  2. For each image, click Edit → scroll to Alt Text field → write a brief, keyword-aware description (e.g., 'Harrison NJ cannabis dispensary storefront' or 'medical marijuana product selection')
  3. Alternatively, open the Harrison page in Edit mode → click each image block → Alt Text panel on the right → fill in descriptions
  4. Prioritize hero images and product photos first (highest SEO/UX impact)
  5. After fixing, re-run an accessibility scan (Lighthouse in Chrome DevTools, or free WAVE browser extension) to confirm all 14 images now have alt text

8. 11 image(s) missing alt text

What it means (plain English)

Your website has 11 images without alt text (descriptive text read aloud by screen readers and used by search engines). This prevents visually impaired customers from understanding what those images show, and it signals to Google that you're missing SEO signals. On the Kearny, NJ page specifically, 11 of 14 images lack this description.

Why it matters for your business: Visually impaired customers cannot navigate your site or learn about your products/locations, reducing accessibility and potentially violating ADA compliance. Search engines also rank pages with complete alt text higher, which directly affects local SEO for your "areas we serve" content.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the media editor, or were inserted via HTML without the alt attribute. WordPress stores alt text in the media library, but it only displays in the frontend if explicitly set during upload or via the image block editor.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library → filter by images used on /areas-we-serve/kearny-nj/
  2. Open each image → scroll to Alt Text field → write a clear, 5-15 word description (e.g. 'Dispensary storefront in Kearny, NJ' or 'Strain of cannabis flower on display')
  3. For product/strain images, include the product name and type (e.g. 'Master Kush hybrid cannabis flower')
  4. For location/area images, include neighborhood and location detail (e.g. 'CityLeaf dispensary entrance in downtown Kearny')
  5. After saving each image, visit the Kearny page in a private browser window and inspect the image in DevTools (right-click → Inspect → check for alt="..." attribute) to confirm it saved
  6. Run the page through a free a11y checker like WAVE (wave.webaim.org) to confirm all 11 are now resolved

9. 11 image(s) missing alt text

What it means (plain English)

Eleven images on your Newark service page are missing alt text — a brief description that screen readers announce to visually impaired visitors and that search engines use to understand image content. This creates both an accessibility barrier (some customers cannot use your site) and a missed SEO opportunity (Google can't index what those images show).

Why it matters for your business: Visually impaired customers cannot navigate your service areas, and you're losing search traffic for location-based queries like 'cannabis dispensary near Newark' because Google doesn't know what those images depict.

Technical root cause: Images were likely uploaded to WordPress without filling in the 'Alt Text' field in the Media Library, or alt attributes were stripped during theme/plugin updates.

Recommended fix — step by step

  1. Log into WordPress → Media Library → search for images used on /areas-we-serve/newark-nj/
  2. For each of the 11 images, click Edit → scroll to 'Alt Text' field → write a 5–10 word description (e.g., 'Newark cannabis dispensary storefront' or 'NJ marijuana retail products shelf')
  3. Include 1–2 location keywords naturally in each alt text if relevant
  4. Publish changes immediately
  5. Optionally: install Yoast SEO plugin (free version) → go to /areas-we-serve/newark-nj/ → it will highlight missing alt text in real-time for future uploads

10. 11 image(s) missing alt text

What it means (plain English)

Your Bloomfield page has 11 images missing alt text — short descriptions that explain what each image shows. Screen readers (tools blind customers use to browse the web) can't tell visitors what these images are, and search engines can't understand them either. This means you're invisible to both accessibility tools and search rankings for image-related queries.

Why it matters for your business: Blind and low-vision customers can't navigate your dispensary pages, potentially creating legal exposure under ADA compliance rules; you also lose SEO credit for product photos and location images that could drive local search traffic.

Technical root cause: Images were uploaded to WordPress without alt text filled in during the media upload process, or the image blocks in the page editor weren't configured with descriptions.

Recommended fix — step by step

  1. Log in to WordPress → go to Media Library → filter by 'Bloomfield' or the affected URL → open each image missing alt text (you'll see blank 'Alt Text' field)
  2. For product/strain photos: write concise alt text like 'Purple Haze cannabis flower in glass jar' (2–8 words, describe what you see)
  3. For dispensary location/team photos: use 'CityLeaf Bloomfield storefront exterior' or 'Staff member behind sales counter'
  4. For decorative images (backgrounds, dividers): leave alt text blank but ensure the image is marked as 'decorative' in WordPress → this tells screen readers to skip it
  5. After updating all 11 images, visit the affected page in a screen reader (free tool: NVDA on Windows or VoiceOver on Mac) to test that descriptions make sense
  6. Run the page through a free alt-text checker (WebAIM's WAVE tool at wave.webaim.org) to confirm all images now have descriptions

11. 11 image(s) missing alt text

What it means (plain English)

Eleven images on your East Orange service area page are missing alt text — short descriptions that screen readers read aloud and search engines use to understand image content. This makes your page harder for visually impaired customers to navigate and signals incomplete content to Google.

Why it matters for your business: Missing alt text reduces your search ranking for local cannabis keywords (especially important for 'East Orange' + product discovery) and excludes potential customers using screen readers or visiting on slow connections where images don't load.

Technical root cause: Images were uploaded to WordPress without filling in the 'Alt Text' field in the Media Library, or the alt attributes were left blank when images were inserted into the page.

Recommended fix — step by step

  1. Log into WordPress → go to Media Library → filter by 'East Orange' or the affected page name
  2. For each image, click it and check the 'Alt Text' field on the right panel — if blank, write a 5–10 word description (e.g., 'CityLeaf storefront in East Orange' or 'cannabis flower product display')
  3. Alternatively, open the East Orange page in Edit mode → hover over each image → click the image → fill 'Alt Text' in the popup
  4. For product images, include the product name + type (e.g., 'Indica flower strain in glass jar'); for location photos, include the address/landmark
  5. Save and publish; then run a re-crawl using your SEO plugin (Yoast SEO → Tools → Site Health, or RankMath → SEO Checkup)

12. 11 image(s) missing alt text

What it means (plain English)

Your Jersey City page has 11 images without alt text — short descriptions that explain what each image shows. Search engines and screen readers (used by people with vision loss) can't understand images without these descriptions. This hurts both your accessibility and your search ranking.

Why it matters for your business: Customers using assistive technology can't navigate your location pages, and Google ranks sites with complete alt text higher in local search results — critical for a dispensary competing on geographic keywords.

Technical root cause: Images were uploaded to WordPress without alt text filled in during upload, or alt fields were left blank in the media library or image blocks.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library → filter by 'Unattached' or search 'jersey-city' to find images used on that page
  2. Open each image and click 'Edit' → scroll to 'Alt Text' field → write a short, descriptive phrase (e.g., 'CityLeaf storefront in Jersey City' or 'Cannabis products on shelf')
  3. Alternatively, go to the Jersey City page itself → Edit with Block Editor → click each image → in the right sidebar under 'Image Settings' → fill 'Alt Text'
  4. For product/dispensary photos, use location + product context (e.g., 'Flower selection at CityLeaf Jersey City'); avoid generic filler
  5. Save and republish the page
  6. Run a quick recheck using WebAIM's WAVE tool (https://wave.webaim.org/) pasting the Jersey City URL to confirm all 14 images now have alt text

13. 11 image(s) missing alt text

What it means (plain English)

Eleven images on your Hoboken service page are missing alt text — descriptive labels that screen readers use to describe images to blind and low-vision visitors. These missing labels also prevent search engines from understanding what your images show, which weakens SEO for image search and general ranking.

Why it matters for your business: Missing alt text blocks potential customers using screen readers from understanding your dispensary locations and product photos, and reduces your visibility in Google Images — a significant traffic source for local cannabis searches.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the Media Library, or the field was left blank during initial page creation.

Recommended fix — step by step

  1. Log into WordPress dashboard → Media Library → search for images on the Hoboken page by filtering by that post/page
  2. For each image, click Edit → scroll to Alt Text field → write a clear, descriptive phrase (e.g., 'CityLeaf Hoboken storefront on Hudson Street' or 'Cannabis flower product display')
  3. Alternatively, open the Hoboken page in the editor → click each image → click the pencil icon → fill Alt Text field in the right panel
  4. Prioritize images that show your storefront, location signage, or product categories first
  5. Run a re-check using a free tool like WAVE (wave.webaim.org) on that page to confirm all 11 are fixed

14. 9 image(s) missing alt text

What it means (plain English)

Your delivery page has 9 images that lack alt text — a short description that appears if an image fails to load and that search engines read to understand your content. This makes the page harder for people using screen readers and reduces your visibility in image search results.

Why it matters for your business: Customers with visual impairments may struggle to navigate your delivery service page, and you're missing opportunities to rank in Google Images and attract new customers searching for cannabis delivery in Jersey City.

Technical root cause: Images were uploaded to WordPress without alt text filled in during the media upload process, or images were added via HTML/theme code without alt attributes.

Recommended fix — step by step

  1. Go to WordPress Admin → Media Library, filter by the /delivery/jersey-city/ page, and identify the 9 images without alt text.
  2. Click each image and scroll to the 'Alt Text' field; write a short, descriptive phrase (e.g., 'Cannabis flower assortment for Jersey City delivery' or 'CityLeaf delivery van'). Keep it under 125 characters.
  3. If images are embedded in the page content, edit the page → click the image → click the edit icon → fill in the Alt Text box.
  4. For any images added via theme template code, ask your developer to add alt='' attributes to the img tags, or provide them a list of images + descriptions.
  5. After updating, visit the delivery page in an incognito browser and verify images load correctly.
  6. Use the free WAVE accessibility checker (wave.webaim.org) to re-scan the page and confirm all images now show alt text.

15. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Hoboken delivery page don't have alt text—descriptive labels that screen readers read aloud to blind or low-vision visitors. Search engines also use alt text to understand what images show, which helps your pages rank for image searches and reinforces topic relevance.

Why it matters for your business: Missing alt text locks out customers using assistive technology, exposes you to accessibility complaints, and wastes SEO opportunity—especially important for a local dispensary where image-rich product pages drive organic traffic.

Technical root cause: Images were likely uploaded to WordPress media library and inserted into the page without filling in the 'Alt Text' field, or a theme template is generating images (like hero banners or product thumbnails) without programmatic alt attributes.

Recommended fix — step by step

  1. Go to WordPress Admin → Media Library, search for images used on /delivery/hoboken/, and click each one to check the 'Alt Text' field (in the attachment details panel).
  2. For each image missing alt text, add a short, descriptive phrase (e.g., 'Hoboken dispensary storefront' or 'CBD edibles selection') — 5–10 words, no keyword stuffing.
  3. If images are baked into a page template or theme, edit the page in WordPress → go to the image block → click the image → scroll to 'Alt text' field in the right sidebar and fill it in.
  4. Install the Yoast SEO plugin (free version) → Pages → check this page's SEO score; Yoast will flag missing alt text in its analysis and show a green checkmark once fixed.
  5. Publish changes, then test in your browser by right-clicking an image → 'Inspect' → confirm the <img> tag includes alt="your description".
  6. Bulk-check other delivery pages (e.g., /delivery/newark/) using the same method to catch the pattern site-wide.

16. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Kearny delivery page don't have alt text—descriptions that tell search engines and screen readers what each image shows. This hurts both accessibility (people using screen readers can't understand the images) and SEO (Google can't index them properly).

Why it matters for your business: Customers using assistive technology get a degraded experience, and you're losing SEO value on a key local service page that should rank for 'cannabis delivery Kearny NJ' and similar queries.

Technical root cause: WordPress images were uploaded or embedded without filling in the Alt Text field in the image block settings, or were added via HTML without an alt attribute.

Recommended fix — step by step

  1. Log into WordPress admin → navigate to Media Library → filter by images used on the Kearny delivery page (or go directly to that page in Edit mode).
  2. For each of the 9 images, click to open it in the editor, scroll to the Alt Text field in the Image block panel (right sidebar), and write a clear, product-focused description (e.g., 'Green Crack flower eighth in glass jar' or 'Budtender bagging customer order at Kearny location').
  3. Ensure alt text is descriptive but concise (under 125 characters), includes relevant keywords naturally (e.g., product name, strain, format), and avoids stuffing or repetition.
  4. Save each image, then publish/update the page.
  5. Use WordPress SEO plugin (Yoast SEO or Rank Math) to re-scan the page: SEO → General → Run Test → select the page → look for 'Images without alt text' to verify all are now tagged.
  6. Optional: Install Image SEO (Smush) plugin for bulk auditing across your site going forward.

17. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Newark delivery page don't have alt text — a short description that describes what the image shows. Search engines and screen readers (used by people with vision loss) can't understand unlabeled images, which means you're losing SEO value and excluding a portion of your audience.

Why it matters for your business: Missing alt text hurts your Google rankings for delivery-related searches and makes your site inaccessible to customers using assistive technology, reducing trust and potential sales.

Technical root cause: Images were uploaded or added to the page without filling in the 'Alt Text' field in the WordPress media editor, leaving the alt attribute blank or missing entirely.

Recommended fix — step by step

  1. Log into WordPress admin → Go to Media Library → filter by 'Unattached' or search for images used on /delivery/newark/
  2. Open each of the 9 images and click 'Edit' → Scroll to 'Alt Text' field → Write a concise description (e.g., 'cannabis flower packaging' or 'delivery vehicle in Newark')
  3. For product images, include strain name or product type (e.g., 'Blue Dream flower with purple buds')
  4. For lifestyle/location photos, describe the scene relevantly (e.g., 'Newark storefront entrance with CityLeaf sign')
  5. Click 'Update' and repeat for all 9 images
  6. Install the free WordPress plugin 'WP Accessibility' → Settings → Enable 'Check for missing alt text' to get warnings on future uploads
  7. Run your delivery pages through a free tool like WAVE (wave.webaim.org) to confirm all images now have alt text

18. 9 image(s) missing alt text

What it means (plain English)

Nine images on your East Orange delivery page don't have alt text—descriptions that explain what each image shows. Screen readers (software that helps blind and low-vision customers browse your site) can't tell users what these images are. Search engines also can't index the content, so you're losing a ranking opportunity.

Why it matters for your business: Potential customers using assistive technology can't understand your product images, reducing accessibility and limiting your audience. Missing alt text also hurts SEO for dispensary pages, making it harder for customers searching for 'cannabis delivery near me' to find you.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field during upload or in the image settings. WordPress doesn't auto-generate useful alt text.

Recommended fix — step by step

  1. Log in to WordPress admin → go to Media Library → filter by 'Unattached' or visit the affected page in edit mode
  2. For each image on the East Orange delivery page, click the image → in the right sidebar, locate the 'Alt Text' field
  3. Write descriptive alt text for each: e.g., 'Cannabis flower jar with THC label' or 'CityLeaf storefront in East Orange' (1–10 words, descriptive but concise)
  4. Repeat for all 9 images on that page, then save/publish the page
  5. Use WordPress plugin Yoast SEO (free version) → Media → check for missing alt text across your entire site, and batch-add alt to other pages

19. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Bloomfield delivery page are missing alt text — a brief text description that screen readers use to understand images, and that search engines use to index them. This means customers using screen readers cannot understand what those images show, and Google cannot learn what your products or location look like.

Why it matters for your business: Missing alt text reduces organic search visibility for product images and location photos, and excludes customers with visual impairments or those using assistive technology — a legal accessibility risk for a retail site.

Technical root cause: Images were uploaded to WordPress without entering alt text in the media library, or image blocks/galleries were inserted without alt attributes populated during publishing.

Recommended fix — step by step

  1. Go to WordPress Admin → Media Library, filter by 'Bloomfield' or the affected delivery page, and open each image missing alt text.
  2. In the media details panel, fill the 'Alt Text' field with a concise, descriptive phrase (e.g., 'Cannabis flower strain in glass jar' or 'Bloomfield dispensary storefront'). Aim for 5–10 words.
  3. If images are in a gallery block, edit the page → click the gallery block → click each image thumbnail → enter alt text in the right sidebar.
  4. Install the free 'WP Accessibility' plugin (Plugins → Add New → search 'WP Accessibility') to flag missing alt text during editing going forward.
  5. After updating, run a quick re-scan using WebAIM's WAVE browser extension (wave.webaim.org/extension) to confirm the 9 images now have alt text.
  6. Apply the same fix to other delivery pages (e.g., Newark, Jersey City) if they have the same issue.

20. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Harrison delivery page don't have alt text—descriptive labels that screen readers read aloud and search engines use to understand what's in the image. This blocks visually impaired customers from knowing what products or information they're seeing, and Google penalizes pages with poor accessibility.

Why it matters for your business: Customers using screen readers can't identify your products or dispensary features on that page, reducing trust and repeat visits. Google also ranks pages with complete alt text higher in search results, so fixing this helps your delivery pages show up when local customers search for dispensaries.

Technical root cause: Images were uploaded to WordPress without alt text filled in during upload or via the Media Library. WordPress allows images to be added without the alt field populated.

Recommended fix — step by step

  1. Log into WordPress Admin → Media Library → filter by 'Unattached' or search for images used on /delivery/harrison-nj/
  2. Open each of the 9 images and click 'Edit' → in the 'Alt Text' field, write a short, descriptive phrase (e.g., 'Orange cannabis flower strain in glass jar' or 'CityLeaf Harrison dispensary storefront')
  3. Alternatively, go to /delivery/harrison-nj/ in edit mode → hover over each image → click the image block → add alt text in the right panel under 'Advanced'
  4. For future uploads: before inserting an image, always fill the 'Alt Text' field in the WordPress Media uploader
  5. Run a quick audit: install the free plugin 'WP Accessibility Check' and run a report to catch any remaining missing alt text site-wide

21. 13 image(s) missing alt text

What it means (plain English)

Your About Us page has 13 images without alternative text descriptions. Alt text is invisible text attached to images that describes what they show. Search engines and screen readers (used by people with vision impairments) rely on alt text to understand images, since they can't see them directly.

Why it matters for your business: Missing alt text reduces your search ranking potential for image-based queries, limits your reach to customers using accessibility tools, and may expose you to ADA compliance risk if a visitor with a disability cannot access your content.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the image block or media library. WordPress allows images to be published without alt text, but best practice requires it for every image.

Recommended fix — step by step

  1. Go to WordPress Editor → Pages → About Us → switch to Edit with Gutenberg blocks
  2. For each image block, click the image, then in the right-side Inspector panel, scroll to Image Settings → find Alt Text field
  3. Write a clear, descriptive alt text (e.g., 'CityLeaf storefront with neon sign' or 'Team member smiling in CityLeaf uniform') for each of the 13 images
  4. If you prefer bulk editing, go to WordPress Media Library → click each image → Edit → scroll to Alternative Text → fill in and save
  5. After updating all 13 images, re-scan the page using a free tool like WebAIM's WAVE (wave.webaim.org) to confirm all images now have alt text

22. 11 image(s) missing alt text

What it means (plain English)

Your website has 11 images without alt text (descriptive text that appears if an image fails to load). This prevents visually impaired customers using screen readers from understanding what those images show, and it also means search engines can't "read" those images to rank your pages higher. On the Belleville, NJ page, 11 out of 14 images are missing this description.

Why it matters for your business: Visually impaired customers can't navigate your dispensary locations or products, reducing accessibility compliance risk and limiting your market reach; Google also ranks pages with properly described images higher in local search results for 'cannabis near me' queries.

Technical root cause: Images were uploaded to WordPress without filling in the 'Alt Text' field in the media library, or alt attributes were left blank in the image blocks.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library → filter by usage or browse images on the Belleville page
  2. For each of the 11 missing-alt images, click Edit → scroll to 'Alt Text' field → write a brief, descriptive phrase (e.g., 'CityLeaf dispensary storefront in Belleville' or 'High-CBD cannabis flower product display')
  3. Alternatively, go to the Belleville page in the page editor → click each image block → in the right sidebar, fill the 'Alt Text' field and save
  4. Run a re-check using your accessibility audit tool (WAVE or Axe DevTools browser extension) to confirm all 14 images now have alt text
  5. Apply the same alt-text discipline to other location pages (use the same pattern: '[Location] + [subject]' for consistency and SEO)

23. 7 image(s) missing alt text

What it means (plain English)

Seven images on your Weed Delivery page lack alt text — a description that screen readers announce to blind/low-vision visitors and that search engines use to understand image content. This blocks accessibility compliance and leaves SEO value on the table, since Google can't index what those images show.

Why it matters for your business: Missing alt text reduces your ranking for image-based search queries (e.g., 'cannabis strains Jersey City'), locks out customers using assistive technology, and increases legal risk under accessibility lawsuits common in cannabis retail.

Technical root cause: Images were uploaded to WordPress without alt text filled in the Media Library, or alt fields were left blank when images were inserted into the post/page editor.

Recommended fix — step by step

  1. Log in to WordPress admin → go to Pages/Posts → edit 'Weed Delivery Jersey City NJ' page
  2. In the editor, click each image → in the right panel under 'Image settings' or by clicking the image and selecting 'Edit image' → fill the 'Alt text' field with a short, descriptive phrase (e.g., 'Premium cannabis flower products at CityLeaf Jersey City')
  3. For product/strain images, use format: '[Strain name] cannabis flower product' or '[Product type] available at CityLeaf dispensary'
  4. Save or update the page after each alt text entry
  5. Install the free plugin 'WP Accessibility' (Plugins → Add New → search 'WP Accessibility' → Install & Activate) to get a dashboard alert for future missing alt text
  6. Run a quick re-check using the WAVE accessibility browser extension (wave.webaim.org/extension) to confirm all 8 images now have alt text

24. 7 image(s) missing alt text

What it means (plain English)

Seven images on your Newark delivery page don't have alt text — descriptive labels that screen readers use to understand images, and that search engines use to index them. This means visually impaired customers can't understand what those images show, and Google can't properly catalog them for search results.

Why it matters for your business: Missing alt text hurts both accessibility (excluding disabled customers) and SEO rankings for product/strain imagery, which is critical for a dispensary site where visual appeal drives purchasing decisions.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field during upload or in the Media Library, or they were embedded via HTML/code without alt attributes.

Recommended fix — step by step

  1. Log into WordPress Dashboard → Media Library → search for images on the weed-delivery-newark-nj page
  2. For each image without alt text, click it and fill in the Alt Text field with a clear, product-focused description (e.g., 'Sativa strain flower in glass jar' rather than 'product image')
  3. Alternatively, go to the weed-delivery-newark-nj post → edit in block editor → click each image → fill Alt Text in the right sidebar
  4. Install Yoast SEO plugin (free) → run the post audit → it will flag remaining missing alt texts in red with one-click fixes
  5. Test with a screen reader (NVDA on Windows, or VoiceOver on Mac) to confirm alt text reads naturally

25. 9 image(s) missing alt text

What it means (plain English)

Nine images on your Belleville delivery page don't have alt text—descriptions that tell screen readers (and search engines) what each image shows. This means visually impaired customers can't understand what those images are, and Google has a harder time indexing them. It's a quick fix that improves both accessibility and search ranking.

Why it matters for your business: Customers using screen readers abandon pages they can't navigate; Google ranks pages with proper alt text higher in search results, directly affecting your ability to be found by customers searching for cannabis delivery in Belleville.

Technical root cause: Images were uploaded to WordPress without alt text filled in during the upload/edit process, or the theme's image block doesn't enforce alt text as required.

Recommended fix — step by step

  1. In WordPress admin, go to Media → Library and find the 9 images used on the Belleville delivery page.
  2. For each image, click Edit → scroll to 'Alt Text' field → write a brief, descriptive phrase (e.g., 'CBD flower product display' or 'dispensary storefront') → click Update.
  3. Alternatively, navigate to the Belleville delivery page in WordPress editor (Pages → edit) and click each image block → fill in the Alt Text field in the right sidebar.
  4. Install the free plugin 'Image Alt Text' (WordPress.org) to flag missing alt text as you create or edit pages going forward.
  5. Test with a screen reader (use NVDA on Windows or VoiceOver on Mac) to confirm alt text reads naturally.
  6. Run the page through a free accessibility checker (WAVE or axe DevTools browser extension) to verify all 9 images now show as accessible.

26. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alternative text (alt text) — a brief description that appears when an image fails to load and is read aloud by screen readers for visually impaired visitors. This breaks accessibility for customers who rely on assistive technology and also signals to search engines that your content may be incomplete or lower quality.

Why it matters for your business: Customers using screen readers cannot understand product photos, strains, or dispensary visuals, reducing sales from disabled visitors; search engines also rank pages with missing alt text lower, hurting your organic visibility for product and location searches.

Technical root cause: Images were likely added via Elementor (WordPress page builder) without filling in the Alt Text field during upload, or bulk-imported content skipped alt text entirely.

Recommended fix — step by step

  1. Log into WordPress Admin → go to Media Library → filter by 'Unattached' or browse recent uploads; open each image and fill in the Alt Text field with a brief, descriptive phrase (e.g., 'Purple Haze cannabis flower strain' or 'CityLeaf dispensary storefront')
  2. For Elementor-built pages: open the homepage (https://cityleafnj.com/) → click Edit with Elementor → select each image widget → expand the Advanced tab → fill in the Alt Text field (not Image Title)
  3. For product images specifically, use your inventory or strain database to auto-generate alt text patterns; e.g., '[Strain Name] cannabis flower from CityLeaf NJ dispensary'
  4. Install the free plugin Yoast SEO or All in One SEO → run a site audit (Dashboard → run Full Site Audit) → filter for Missing Alt Text → batch-edit from the report if available
  5. Going forward, make alt text mandatory: in your WordPress Media settings or team workflow, require alt text before any image is marked 'complete'
  6. Test with a screen reader (NVDA on Windows, VoiceOver on Mac) by visiting your homepage and tabbing through images to verify alt text is spoken aloud

27. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alt text — descriptive labels that tell search engines and visitors using screen readers what the image shows. This hurts both accessibility (people using assistive technology can't understand your product photos) and SEO (Google can't index what's in those images, missing ranking opportunities).

Why it matters for your business: Customers with visual impairments can't browse your menu or products, and you're losing organic search traffic because Google doesn't know what those product photos depict — particularly damaging for a dispensary where product images drive discovery and trust.

Technical root cause: Images in your Elementor-built pages (the page builder WordPress uses) are missing the alt attribute. This typically happens when images are uploaded and inserted without filling in the alt text field during upload or when legacy content wasn't retrofitted.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library, filter by 'Unattached' or browse all images; click each image and fill in the 'Alt Text' field with 1–2 sentence descriptions (e.g., 'Sunset OG flower jar with brown label' or 'CityLeaf storefront exterior on Main Street')
  2. For Elementor-built pages, go to Pages → edit the home-3-oil-dark page in Elementor → hover over each image widget → click the settings icon (gear) → 'Image' section → fill in 'Alt Text' field
  3. Prioritize product images first (strains, edibles, concentrates) and storefront/team photos second; use descriptive phrases that would help a customer or search engine understand what they're seeing
  4. Install the Yoast SEO plugin (free version) → go to Tools → File Optimization → enable 'Alt text optimization' to get inline reminders when editing pages with missing alt text
  5. After updating 20+ images, run Google Search Console (Search → Google Search Console → URL Inspection) on the home URL to prompt re-crawl and re-indexing
  6. Set a recurring monthly reminder to audit new uploads: whenever a team member adds product photos, require alt text before publishing

28. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alt text — descriptive text that explains what each image shows. This text is read aloud by screen readers (tools visually impaired customers use to browse the web) and also helps search engines understand your images. Without it, those images are invisible to both people and Google.

Why it matters for your business: Visually impaired customers cannot understand product images or dispensary photos, reducing accessibility and potential sales; search engines cannot index your images, costing you visibility in Google Image Search where cannabis product searches are common.

Technical root cause: Images in Elementor (your page builder) were added without filling in the 'Alt Text' field. WordPress stores alt text in the image's alt attribute, which is empty on these 37 images.

Recommended fix — step by step

  1. Go to WordPress Admin → Media Library and filter by 'Unattached' or sort by upload date to identify unalt'd images.
  2. For each image, click it to open the edit panel and scroll to 'Alt Text' field; write a brief description (5–10 words) of what the image shows (e.g., 'Cannabis flower in glass jar' or 'CityLeaf storefront entrance').
  3. If using Elementor, open the affected page (https://cityleafnj.com/?elementor_library=home-2-lounge) in Elementor editor, click each image widget, and in the right panel under 'Advanced' or 'Image' tab, fill the 'Alt Text' field.
  4. For bulk images, use the Bulk Actions feature: select multiple images in Media Library → click 'Edit' → scroll to Alt Text → enter a template (e.g., 'CityLeaf [product type]') and save.
  5. Test with a screen reader: install the free NVDA (Windows) or use built-in VoiceOver (Mac), navigate to your site, and confirm alt text is read aloud when focus reaches each image.

29. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alt text — short descriptions that explain what each image shows. Search engines and assistive technologies (used by visually impaired visitors) rely on this text to understand images. Without it, you're losing ranking signals and excluding customers who use screen readers.

Why it matters for your business: Missing alt text reduces your SEO visibility for product and strain images, and it creates compliance risk under accessibility laws (ADA / WCAG 2.1 AA), which cannabis retailers face increasing scrutiny on.

Technical root cause: Elementor (your page builder) allows images to be inserted without requiring alt text entry. The loop-item template in your library likely has untagged product or menu images that were bulk-imported or created without alt fields being populated.

Recommended fix — step by step

  1. Log in to WordPress → Dashboard → Elementor → Templates → find the 'elementor-loop-item-2' template and open it for editing.
  2. For each image widget in that template, click the image → click the pencil icon → scroll down to 'Alt Text' field → enter a description (e.g., 'Green Crack Cannabis Strain Buds' or 'Edible Product Packaging').
  3. Install the free plugin 'Bulk Image Alt Text' (search in Plugins → Add New) to audit and batch-add alt text to any missed images across the site.
  4. Run a fresh audit: install 'Accessibility Checker' free plugin → Dashboard → Accessibility → run scan → filter by 'Missing Alt Text' → fix any remaining flagged images.
  5. Test with a screen reader: download free NVDA (Windows) or use built-in VoiceOver (Mac) → browse your product pages → confirm alt text is read aloud.
  6. Repeat this process for any product category templates, archive pages, and custom post type templates you use.

30. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alt text — descriptive text that explains what the image shows. Search engines and assistive technology (software that helps people with vision loss) can't understand image content without it. This hurts both accessibility for customers and your visibility in Google Images.

Why it matters for your business: Customers using screen readers or with slow connections won't know what products you're showing; you're also missing keyword signals in Google Images, which drives discovery traffic to dispensaries.

Technical root cause: Images uploaded to WordPress and embedded via Elementor likely lack the alt text field filled in during upload or insertion. Elementor allows alt text but it wasn't populated when these images were added.

Recommended fix — step by step

  1. Log into WordPress admin → Media Library → filter by 'Unattached' images to identify orphans, or search by upload date near your Elementor popup update.
  2. For images actively used, open WordPress admin → Pages/Posts → edit the page with the delivery popup → click the Elementor editor icon.
  3. In Elementor, click each image widget → in the right panel, locate 'Alt Text' field → write 1–5 word descriptions (e.g., 'THC Sativa flower strain in glass jar') for each.
  4. For batch fixing, install the free plugin 'WP Offload Media' or 'Bulk Alt Text' — search 'alt text' in Plugins → Add New; bulk assign generic alts like product names, then refine manually.
  5. After updating, run a re-crawl via WordPress → SEO (if using Yoast) → Tools → File editor, or re-index via Google Search Console → Request indexing.
  6. Test with a screen reader (free: NVDA on Windows, or macOS VoiceOver) by navigating the delivery popup to confirm alt text reads aloud.

31. 37 image(s) missing alt text

What it means (plain English)

37 images on your site lack alternative text (alt text) — a short description that search engines and assistive technology (used by people with vision impairments) read when they can't see the image. This hurts both discoverability and accessibility compliance, especially for product images and license/compliance graphics that customers and regulators need to understand.

Why it matters for your business: Missing alt text reduces your SEO rankings for product pages, blocks access for customers using screen readers, and creates compliance risk if license or age-gate imagery isn't described for regulators auditing your site.

Technical root cause: Images uploaded to Elementor (your page builder) or WordPress media library were added without alt text filled in at the time of upload. Elementor doesn't require alt text, so editors skip it.

Recommended fix — step by step

  1. Log in to WordPress dashboard → go to Media Library → filter by 'Unattached' or browse your products/header galleries.
  2. For product images: open each image → click 'Edit' → fill 'Alt text' field with concise description (e.g., 'Sunset OG cannabis flower in glass jar').
  3. For compliance/license images: use descriptive alt text (e.g., 'NJ State cannabis retail license #2024-001').
  4. In Elementor, select images in pages → open image settings → ensure 'Alt text' field is populated before saving.
  5. Install plugin 'Bulk Image Alt Text' (free) to audit remaining images and batch-add common alt text patterns.
  6. Set WordPress media upload settings to show a required alt text prompt: Dashboard → Settings → Media → enable plugin like 'Image Alt Tag Plugin' if available, or train team to always fill it.

32. 37 image(s) missing alt text

What it means (plain English)

Your site has 37 images without alt text — short descriptions that tell screen readers and search engines what each image shows. This blocks customers using assistive technology from understanding your product photos and violates accessibility standards. It also loses SEO value because search engines can't index what's in those images.

Why it matters for your business: Customers with visual impairments can't shop your products effectively, and you're missing keyword opportunities that image alt text provides to Google — especially important for cannabis product discovery and local SEO.

Technical root cause: Images were likely added via Elementor (WordPress page builder) or media uploads without completing the alt text field, which is optional by default in WordPress and Elementor.

Recommended fix — step by step

  1. In WordPress admin, go to Media Library and filter by images used on your site; bulk-check which ones have empty Alt Text fields (visible in the image details panel on the right).
  2. For product images, write alt text in this format: '[Product name] [type/effect], available at CityLeaf NJ' (e.g., 'Blue Dream sativa flower, available at CityLeaf NJ').
  3. For lifestyle/decorative images, describe what's shown: 'Staff member assisting customer at CityLeaf NJ counter' or 'Cannabis flower close-up'.
  4. If using Elementor: edit each page with images → select image block → Image panel (left sidebar) → scroll to Image Attributes → fill Alt Text field.
  5. Install the free plugin 'WP Accessibility' (Accessibility → set to require alt text on media upload) to prevent this going forward.
  6. Use the free tool Siteimprove or Axe DevTools (browser extension) to scan cityleafnj.com and verify all 37 are now filled.
  7. Prioritize product pages and homepage above interior pages.

33. 37 image(s) missing alt text

What it means (plain English)

Your website has 37 images without alt text — alternative text that describes what the image shows. Search engines and screen readers (used by people with vision disabilities) can't understand images without this description. This means potential customers using assistive technology can't navigate your site, and Google can't index your product images or cannabis strains properly.

Why it matters for your business: Missing alt text reduces search visibility for product images, blocks accessibility (a legal risk under ADA), and frustrates customers who rely on screen readers — shrinking your addressable market and exposing you to compliance complaints.

Technical root cause: Images were likely added via Elementor or the WordPress media library without alt-text fields being filled in during upload. Elementor's visual editor makes it easy to drop images without requiring the alt field, leaving it blank by default.

Recommended fix — step by step

  1. Log in to WordPress admin → Elementor → open the page/template affecting the most traffic (likely your homepage or product listing).
  2. In Elementor's left panel, select each Image widget → scroll to 'Advanced' tab → find 'Alt Text' field → write a short, descriptive phrase (e.g., 'Durban Poison cannabis strain close-up' or 'CityLeaf storefront entrance').
  3. For bulk fixes on older pages: Go to WordPress admin → Media Library → filter by 'Unattached' or browse recent uploads → click each image → fill 'Alt Text' field in the right sidebar → update.
  4. Install the free plugin 'SEO by Yoast' or 'All in One SEO Pack' → these add a dedicated alt-text checklist in the editor and flag missing alt on images.
  5. Create a checklist: before publishing any page, Elementor edit screen shows image count at the bottom — review every Image widget for a filled Alt Text field.
  6. Test with a screen reader (free: NVDA on Windows, VoiceOver on Mac) to hear how your images are announced — missing alt will read 'unlabeled image'.

34. 37 image(s) missing alt text

What it means (plain English)

Your website has 37 images without alt text — descriptive labels that screen readers use to tell blind/low-vision visitors what an image shows, and that search engines use to understand your content. Right now, nearly 90% of your images are invisible to both assistive technology users and search bots.

Why it matters for your business: Missing alt text locks out customers using screen readers, exposes you to accessibility complaints, and prevents Google from indexing product photos and dispensary imagery — directly reducing organic search visibility for strain names, products, and 'cannabis near me' queries.

Technical root cause: Elementor (the page builder) allows images to be uploaded without requiring alt text entry. Most images on the site, particularly in the footer and product galleries, were inserted without the alt field populated.

Recommended fix — step by step

  1. Log in to WordPress admin → go to Media Library. Filter by 'Unattached' or review recently uploaded files. Click each image and fill in the 'Alt Text' field in the sidebar with a 1–8 word description (e.g., 'Sativa strain buds closeup' or 'CityLeaf storefront entrance').
  2. For Elementor-built pages: Edit the page in Elementor → select each image widget → open settings → find 'Image' or 'Alt Text' field → add descriptive text. Prioritize product photos first (highest business value).
  3. Install the free plugin 'WP Accessibility Helper' or use 'Rank Math SEO' (freemium) to identify remaining missing alt text and suggest fixes inline.
  4. Create a checklist template for future uploads: before publishing, require alt text (e.g., 'Product: [Strain Name], [Type], [Key Visual Detail]').
  5. Run an accessibility audit using WAVE (wave.webaim.org) or Axe DevTools browser extension on 5–10 key pages (homepage, product pages, about) to catch any remaining missed images.

35. 2 broken internal link(s)

What it means (plain English)

Your site has 2 broken internal links that point to email-protection pages (these are Cloudflare email obfuscation URLs). When search engines or visitors click these links, they hit a 404 error page instead of landing on valid content. This wastes crawl budget and creates a poor user experience when someone tries to contact you.

Why it matters for your business: Broken contact links on your About Us and legal pages prevent potential customers from reaching out, directly harming customer acquisition for your dispensary.

Technical root cause: Cloudflare's email protection feature (Flexible SSL) generates these cdn-cgi URLs automatically. However, they're being indexed as internal links instead of remaining as obfuscated email text in the page source. This typically happens when the email addresses are wrapped in anchor tags (<a> elements) rather than being protected as plain text.

Recommended fix — step by step

  1. Log into WordPress admin → Pages → About Us. Find any email address displayed in the editor and remove the hyperlink (select the email → click the Unlink button in the toolbar).
  2. Repeat for the End User License Agreement page. Check for any clickable email addresses and unlink them.
  3. If you need clickable emails, use a Contact Form plugin (Gravity Forms, WPForms) instead — this avoids hardcoded links entirely and also improves spam protection.
  4. After unlinking, go to WordPress Settings → Yoast SEO → Tools → URL Parameter Handling (or use Crawl Optimization in your SEO plugin) and add /cdn-cgi/l/ to the 404 exclusion list to prevent re-crawling these orphaned URLs.
  5. Request a full re-crawl in Google Search Console (Home → URL Inspection → paste https://cityleafnj.com/about-us/ → Request Indexing) to clear the cached broken links.

36. Mobile perf measurement failed

What it means (plain English)

The performance testing tool timed out while trying to load your homepage on a mobile device, meaning the page took longer than 60 seconds to fully load. This suggests either a slow server response, large unoptimized images or scripts, or external services (ads, analytics, maps) that are blocking page completion.

Why it matters for your business: Slow mobile load times cause visitors to leave before seeing your inventory, compliance info, or contact details—directly reducing foot traffic and online orders, especially since most cannabis shoppers search on mobile.

Technical root cause: WordPress sites often load render-blocking JavaScript, unoptimized media, or unresponsive plugins. The 'networkidle' wait condition requires all network requests to finish, which fails if any external service (tracking pixel, ad network, third-party map) hangs or never completes.

Recommended fix — step by step

  1. Install Google PageSpeed Insights (free, no plugin needed): visit https://pagespeed.web.dev/, enter your URL, switch to 'Mobile', and review the 'Opportunities' tab for specific culprits (usually images, JavaScript, or render-blocking resources).
  2. In WordPress Admin → Settings → Reading, disable 'Discourage search engines' (if ticked) to ensure Google can crawl and cache your site properly.
  3. Install WP Rocket caching plugin (or Autoptimize if free-tier only): go to WordPress Admin → Plugins → Add New, search 'WP Rocket', activate, then enable 'Cache' and 'Lazy Load Images' in the plugin settings.
  4. Check WordPress Admin → Plugins for unused or slow plugins (especially social media, review, or age-gate plugins); deactivate and delete any you don't recognize, then re-test load time.
  5. Go to WordPress Admin → Media and check if you have any images larger than 2 MB; use a free online tool like Tinypng.com to compress before re-uploading.
  6. Ask your hosting provider (check WordPress Admin → Settings → General for the host URL, or contact your registrar) whether they've noticed high CPU usage or if you're on a shared server with load limits—if so, upgrade to a faster plan or use a CDN like Cloudflare (free tier).

37. Missing security header: strict-transport-security

What it means (plain English)

Your site is missing an HTTP security header called Strict-Transport-Security (HSTS), which tells browsers to always use encrypted HTTPS connections when visiting your domain. Without it, a visitor's first request to your site could be intercepted and redirected to a fake copy. Since you're hosted on WP Engine and fronted by Cloudflare, this header is easy to add.

Why it matters for your business: For a cannabis retailer handling age verification, payment info, and customer data, missing HSTS increases the risk of man-in-the-middle attacks that could expose customer information or redirect visitors to phishing sites, damaging trust and compliance.

Technical root cause: The HSTS header is not being set by your WordPress hosting (WP Engine) or Cloudflare edge configuration. It must be explicitly configured at one of those two layers.

Recommended fix — step by step

  1. Log in to your Cloudflare dashboard → select cityleafnj.com domain
  2. Go to Rules → Transform Rules → Modify Response Headers (or Security → Headers if using newer UI)
  3. Click 'Create Rule' and add a response header: name='Strict-Transport-Security', value='max-age=31536000; includeSubDomains; preload'
  4. Save and deploy the rule
  5. Verify by running curl -I https://cityleafnj.com and checking that the 'strict-transport-security' header appears in the response

38. Missing security header: x-frame-options

What it means (plain English)

Your website is missing the X-Frame-Options security header, which tells browsers whether your site can be embedded inside iframes on other websites. Without it, attackers could potentially embed your site in a malicious page to trick users or steal information. This is a standard security practice that most sites implement.

Why it matters for your business: Missing this header weakens your site's security posture, potentially exposing customers to clickjacking attacks and damaging trust in your brand—especially critical for a cannabis retailer handling age-gated content and customer data.

Technical root cause: The header is not being set by your WordPress hosting environment (WP Engine) or Cloudflare configuration. It must be explicitly added either in your server config, Cloudflare rules, or WordPress security plugin.

Recommended fix — step by step

  1. Log into your Cloudflare dashboard (cloudflare.com) → select cityleafnj.com → Rules → Transform Rules → HTTP Request Headers
  2. Create a new rule to add header 'X-Frame-Options' with value 'SAMEORIGIN' (prevents embedding except on your own domain)
  3. Alternatively, install Wordfence Security plugin (WordPress admin → Plugins → Add New → search 'Wordfence' → activate) → Wordfence → Tools → Firewall → add custom header X-Frame-Options: SAMEORIGIN
  4. If using another security plugin (e.g., All In One WP Security), navigate to Settings → HTTP Headers and enable X-Frame-Options
  5. Test the fix by visiting https://securityheaders.com and entering cityleafnj.com to confirm the header now appears
  6. Monitor monthly using the same tool to ensure it persists through updates

39. Missing security header: content-security-policy

What it means (plain English)

Your website is missing a Content Security Policy (CSP) header — a security directive that tells browsers which sources of content (scripts, images, stylesheets) are trusted. Without it, attackers could inject malicious code more easily. This is a common WordPress gap, especially on WP Engine hosting where CSP must be explicitly configured.

Why it matters for your business: A CSP breach could expose customer data, compromise your age-gate compliance, or deface your site — damaging trust and triggering regulatory scrutiny in the heavily-monitored cannabis industry.

Technical root cause: WP Engine does not set a default CSP header; it must be configured either via WordPress plugin, .htaccess rules, or WP Engine's own control panel. The current setup has Cloudflare in front, but no CSP policy is being sent from the origin.

Recommended fix — step by step

  1. Log into WP Engine account → navigate to the target environment → scroll to 'Security' or 'HTTP Header Rules' section → check if CSP can be set directly; if unavailable, proceed to next step.
  2. Install the free WordPress plugin 'Wordfence Security' (visit Plugins → Add New → search 'Wordfence' → click Install & Activate).
  3. Inside Wordfence, go to All Options (gear icon) → scroll to 'HTTP Headers' section and enable 'Add Security Headers'; check the 'Content Security Policy' checkbox.
  4. Set CSP to 'default-src self; script-src self cdn.jsdelivr.net; style-src self fonts.googleapis.com; img-src self data: https:; font-src self fonts.gstatic.com; connect-src self; frame-ancestors none;' (adjust third-party CDN sources if your theme requires them).
  5. If Wordfence isn't available, contact WP Engine support and request CSP header configuration or use their recommended plugin 'WP Security by Sucuri' instead.
  6. Test the fix by visiting Security Headers (securityheaders.com) → paste cityleafnj.com → confirm CSP now appears in the 'Headers' section.

40. No SPF record on root domain

What it means (plain English)

Your domain cityleafnj.com does not have an SPF (Sender Policy Framework) record published in DNS. SPF is a simple text record that tells email providers which servers are authorized to send mail from your domain. Without it, emails from your business (order confirmations, newsletters, password resets) are likely flagged as spam or rejected entirely.

Why it matters for your business: Customers won't receive order confirmations, account notifications, or marketing emails, leading to lost revenue, support tickets, and damaged trust.

Technical root cause: No SPF record (v=spf1) has been added to the DNS zone for cityleafnj.com. You have a DMARC policy in place but no SPF mechanism to enforce sender authentication.

Recommended fix — step by step

  1. Log in to your domain registrar (GoDaddy, Namecheap, etc.) and navigate to DNS / DNS Records management for cityleafnj.com.
  2. Identify your email service provider (e.g., Google Workspace, Microsoft 365, Klaviyo, SendGrid). If you use WordPress plugins like WP Mail SMTP, check its settings to find your SMTP provider.
  3. Create a new TXT record with Name/Host = @ (or cityleafnj.com) and Value = 'v=spf1 include:[your-mail-provider] ~all' (e.g., 'v=spf1 include:sendgrid.net ~all' for SendGrid). Include all mail providers you use.
  4. Save the record and wait 24–48 hours for DNS propagation.
  5. Test the record using a free tool like mxtoolbox.com or dmarcian.com to confirm it resolves.
  6. If you use WP Mail SMTP plugin, verify it is configured with correct SMTP server credentials in WordPress Admin → Settings → WP Mail SMTP.

41. 36 tap targets under 44px at mobile-320

What it means (plain English)

Your site has 36 buttons, links, and other clickable elements that are smaller than 44×44 pixels on mobile phones. This is below the Web Content Accessibility Guidelines (WCAG) standard, which means visitors with motor impairments or anyone using a phone one-handed will struggle to tap them accurately. Many will miss and tap the wrong element, creating frustration and abandoned visits.

Why it matters for your business: Users with accessibility needs or poor dexterity abandon sites with tiny tap targets—you lose potential customers and expose the business to accessibility complaints; this is especially important in the cannabis industry where compliance scrutiny is high.

Technical root cause: Interactive elements (buttons, menu items, links, form inputs) are styled with CSS widths and heights below 44px, or padding is insufficient. This often happens when desktop designs are not adapted for mobile screens, or when CSS frameworks set small default sizes.

Recommended fix — step by step

  1. Install and activate the WAVE Accessibility Checker plugin (search 'WAVE' in WordPress plugins) to visually identify which 36 elements are undersized.
  2. Open Appearance → Customize → Additional CSS and add: button, a, input[type='submit'] { min-height: 44px; min-width: 44px; padding: 12px 16px; } to globally increase small targets.
  3. Visit Appearance → Menus and check the mobile menu items; if they appear tiny on phone, add padding via Custom CSS: .mobile-menu a { padding: 16px 12px !important; }
  4. Check the homepage form inputs (search, submit buttons, etc.); open Customize → Forms and increase padding/height to 44px minimum.
  5. Test on an actual phone at 320px width (or use Chrome DevTools device emulation) and re-run WAVE to confirm all 36 targets are now ≥44px.
  6. Document the change (screenshot before/after) for compliance records, since accessibility is regulated in cannabis retail.

42. 38 tap targets under 44px at mobile-375

What it means (plain English)

Your website has 38 interactive buttons, links, and form fields that are smaller than 44×44 pixels on mobile devices. This makes them difficult to tap accurately, especially for people with motor impairments, arthritis, or those using a phone in one hand. The Web Content Accessibility Guidelines (WCAG) require a minimum 44×44 pixel target size to meet accessibility standards.

Why it matters for your business: Customers with accessibility needs may abandon your site due to frustration with small tap targets, reducing conversion on product pages and age verification. You also risk legal liability under the ADA if accessibility complaints are filed.

Technical root cause: The theme or custom CSS is applying font sizes, padding, or button dimensions that render below the 44px minimum on mobile viewports. This is often caused by overly aggressive responsive scaling or insufficient mobile padding in button/link styling.

Recommended fix — step by step

  1. Install and activate the 'WP Accessibility' plugin from the WordPress plugin directory; this includes a built-in mobile tap target checker.
  2. Go to Appearance → Customize → Mobile / Responsive settings (varies by theme) and increase padding on buttons/links to minimum 12px on all sides.
  3. Use the browser DevTools mobile emulator (375px width) and inspect each interactive element; right-click → Inspect → check computed width/height; flag any under 44px.
  4. Edit your theme's CSS file (Appearance → Theme File Editor → style.css or mobile-specific CSS) and add: button, a, input[type='button'], .menu-item { min-height: 44px; min-width: 44px; padding: 12px 16px; }
  5. Test the age-gate overlay and form buttons specifically at 375px viewport; these are highest-priority for cannabis compliance.
  6. After changes, re-scan using WebAIM or WAVE accessibility tool to confirm 44px minimum is met across all interactive elements.

43. 38 tap targets under 44px at mobile-414

What it means (plain English)

Your website has 38 interactive buttons, links, and form fields that are smaller than 44×44 pixels when viewed on mobile phones. This makes them hard to tap accurately—especially for people with less precise fine motor control, older adults, or anyone using a phone one-handed. WCAG 2.5.5 (Web Content Accessibility Guidelines) is the accessibility standard that requires touch targets be at least 44×44 pixels.

Why it matters for your business: Visitors—including older cannabis customers and those with accessibility needs—will have friction completing age-gate verification, product searches, or checkout, leading to abandoned visits and lower conversion rates. Accessibility lawsuits in the cannabis vertical are rising.

Technical root cause: WordPress theme or custom CSS is likely using small buttons, link padding, or form inputs without mobile-specific size rules. Navigation menus, product filters, and call-to-action buttons are often cramped on mobile by default.

Recommended fix — step by step

  1. Open WordPress Customize > Additional CSS and add: button, a, input[type='submit'], input[type='checkbox'], input[type='radio'] { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
  2. Inspect your primary navigation menu (Appearance > Menus) and confirm link text has at least 12px padding on all sides in mobile view; if your theme doesn't support padding settings, add CSS: .menu a { padding: 12px 16px; }
  3. Check product filter buttons and 'Add to Cart' buttons: use browser DevTools (F12 > mobile view, 414px) and tap each—if any button is smaller than a fingertip, note its CSS class and increase width/height/padding in Customize > Additional CSS
  4. Audit form inputs (age-gate date fields, search box): set minimum 44px height with CSS: input[type='text'], input[type='date'], input[type='number'] { min-height: 44px; padding: 8px 12px; font-size: 16px; }
  5. Test spacing between interactive elements: if two buttons sit back-to-back, add margin: input + input { margin-left: 8px; } to separate them
  6. Install and activate the free plugin 'WP Accessibility' (search in Plugins > Add New) and run its scan to flag remaining small targets
  7. After changes, use Google Chrome DevTools mobile view (414px width) to manually test tapping every button, link, and form field on your homepage and age-gate page

44. 38 tap targets under 44px at tablet-768

What it means (plain English)

Your website has 38 buttons, links, and interactive elements that are smaller than 44×44 pixels when viewed on a tablet. This makes them hard to tap accurately, especially for people with motor control challenges or using touchscreens. WCAG 2.5.5 is an accessibility standard that requires interactive elements to meet a minimum size so all visitors can use your site comfortably.

Why it matters for your business: Visitors on tablets—including older customers and those with dexterity challenges—may struggle to add products to cart, click age-gate buttons, or navigate menus, leading to abandoned browsals and lost sales. Poor accessibility also signals unprofessionalism and may trigger complaints or scrutiny from disability advocacy groups.

Technical root cause: The theme or custom CSS is using padding-poor button styling, narrow menu links, or icon-only navigation elements that don't meet the 44×44 minimum. This often happens when designs are optimized for desktop-sized fingers (large pointers) and not tested on actual touch devices.

Recommended fix — step by step

  1. In WordPress admin, go to Appearance → Customize → Additional CSS and add button, a.button, .menu a { min-height: 44px; min-width: 44px; padding: 12px 16px; } to set a baseline.
  2. Use Chrome DevTools (F12 → Device Toolbar → Tablet 768px) to manually inspect each menu link, button, and form field. Hover/tap to check actual clickable area.
  3. For mobile menu icons, ensure the clickable area (including padding) is 44×44; if using a plugin like Responsive Menu, check its settings for 'touch target size' or 'button padding'.
  4. Test your age-gate verification buttons specifically in tablet mode—these are compliance-critical and must be easily tappable.
  5. If using a page builder (Elementor, Divi, Gutenberg blocks), select each button → increase padding in the spacing settings to at least 12px top/bottom, 16px left/right.
  6. Audit form inputs (product quantity selectors, submit buttons) and ensure they have min-height: 44px in your theme's CSS.
  7. Use axe DevTools browser extension (free) to re-scan at tablet viewport and confirm count drops below 5 non-compliant targets.

45. Journey "default: homepage → age gate → menu visible" completed but raised 2 JS error(s)

What it means (plain English)

Your homepage is encountering two JavaScript errors after the age gate loads and the menu becomes visible. These errors occur when the browser tries to interact with HTML elements that either don't exist or haven't loaded yet — specifically, code is trying to set an attribute on an element (setAttribute) and check if an element contains something (contains) but finding nothing instead. While visitors may not see obvious breakage, these errors can prevent interactive features from working properly.

Why it matters for your business: JavaScript errors on your homepage can break the age-gate experience, menu navigation, or add-to-cart functionality, causing potential customers to leave before completing a purchase.

Technical root cause: A WordPress plugin or custom theme script is attempting to manipulate DOM elements (likely related to age verification or menu functionality) before those elements are fully rendered in the page, or the selectors used to find those elements are incorrect and return null.

Recommended fix — step by step

  1. Open your WordPress admin → Plugins and note all active plugins, particularly those related to age gates, menus, or age verification (common ones: Age Gate by WP Plugins, Agile Age Gate, or custom plugins).
  2. Temporarily deactivate each plugin one at a time and reload the homepage to see if the JS errors disappear — this isolates which plugin is causing the issue.
  3. Once identified, check the plugin's settings: look for options like 'Delay JS execution', 'Load scripts in footer', or 'Compatibility mode' and enable them.
  4. If the problem persists, open your WordPress admin → Appearance → Theme File Editor, search for 'setAttribute' and 'contains' in your active theme's JavaScript files (usually in footer.php or a custom js/ directory); check that selectors like document.getElementById or document.querySelector are not null before calling methods on them.
  5. Install the plugin 'WP Control' (free) or 'Debug Bar' (free) from your WordPress plugin search, enable debug mode, reload the homepage, and check the debug output to see which file/line is throwing the error.
  6. Contact your theme or plugin vendor with the error messages and ask them to add null-checking guards (defensive coding) to their JavaScript.

46. Missing meta description

What it means (plain English)

Your blog category page (/category/blog/) doesn't have a meta description — the 150-160 character summary that appears below your page title in Google search results. Without it, Google generates a random snippet from your page content, which often looks unprofessional and may not encourage clicks.

Why it matters for your business: Missing meta descriptions reduce click-through rates from search results; potential customers see a poorly formatted preview instead of your curated message, directly impacting blog traffic and brand perception.

Technical root cause: WordPress doesn't automatically generate meta descriptions for category archive pages. You likely have a plugin (Yoast SEO, Rank Math, etc.) installed but haven't filled in the description field for this specific category.

Recommended fix — step by step

  1. Log into WordPress admin → Posts → Categories
  2. Click 'Blog' category → scroll to the SEO plugin section (Yoast, Rank Math, etc.)
  3. Find the 'Meta Description' field and write 150-160 characters describing what readers will find in your blog (e.g., 'Latest updates on cannabis products, regulations, and wellness tips from CityLeaf NJ.')
  4. Check the character counter shows green (not red)
  5. Click 'Update' to save

47. A11y: Landmarks should have a unique role or role/label/title (i.e. accessible name) combination

What it means (plain English)

Your main navigation menu doesn't have a unique name that screen readers can use to distinguish it from other navigation areas on the page. Right now, it's labeled generically as "Menu," which creates confusion for visitors using assistive technology who may hear multiple identical landmark announcements. This is a best-practice accessibility issue that doesn't block functionality but does reduce usability for disabled visitors.

Why it matters for your business: Visitors relying on screen readers may struggle to navigate your site efficiently, potentially reducing time-on-site and conversions; this also exposes you to accessibility compliance risk in a regulated industry.

Technical root cause: The nav element has aria-label="Menu" but no additional distinguishing attribute. WordPress/Elementor's default menu landmark lacks a unique accessible name; if multiple navigation regions exist (e.g., main menu + footer menu), they become indistinguishable to assistive technology.

Recommended fix — step by step

  1. Log into WordPress admin → Appearance → Menus → select your main menu
  2. Note the menu name (e.g., 'Primary Navigation'); you'll use this in the next step
  3. Install the free plugin 'Elementor Accessibility' or 'WP Accessibility' if not present
  4. If using Elementor editor: click on the nav menu widget → Advanced → Accessibility → change aria-label from 'Menu' to 'Main Navigation' or similar unique identifier
  5. If no Elementor Accessibility plugin available, use child theme or custom code: add filter to wp_nav_menu() args to set aria-label dynamically via theme functions.php
  6. Test in browser DevTools or with NVDA/JAWS screen reader to confirm the nav announcement is now unique
  7. Repeat check for footer navigation or other nav regions; ensure each has distinct aria-label (e.g., 'Footer Navigation')

48. Missing core schema types: LocalBusiness

Detail

Every site should emit Organization + LocalBusiness + WebSite JSON-LD.


P3 — 138 findings

1. robots.txt does not reference sitemap

What it means (plain English)

Your robots.txt file (a plain-text file that tells search engines what pages to crawl) doesn't include a link to your XML sitemap. The sitemap is like a master map of every page on your site that you want Google and Bing to index. Without this pointer, search engines have to discover your pages the slow way—by following links. For a dispensary site with product pages, locations, and info pages that might not be heavily cross-linked, this slows down search visibility.

Why it matters for your business: Slower indexing of your product inventory and menu pages means slower appearance in local search results, which directly impacts customers finding you online.

Technical root cause: WordPress doesn't automatically add the Sitemap directive to robots.txt. An SEO plugin like Yoast, Rankmath, or All in One SEO usually does this, but it requires configuration or the plugin may not be active.

Recommended fix — step by step

  1. Install or activate an SEO plugin: go to WordPress Admin → Plugins → search 'Yoast SEO' or 'Rankmath' → Install & Activate (if not already active).
  2. Configure the plugin: open the plugin's settings (usually found in Admin sidebar under 'SEO' or 'Rankmath') and enable 'Enable XML Sitemap' / 'Sitemap' toggle.
  3. Note your sitemap URL: it's typically https://cityleafnj.com/sitemap.xml or https://cityleafnj.com/sitemap_index.xml.
  4. Edit robots.txt: go to WordPress Admin → (plugin name) → Tools → File Editor (or use an FTP client) and add this line at the end: 'Sitemap: https://cityleafnj.com/sitemap.xml' (replace with your actual sitemap URL).
  5. Test in Google Search Console: log into Google Search Console, go to 'Sitemaps' in the left menu, paste your sitemap URL, and verify it's accepted.

2. 3 image(s) missing alt text

What it means (plain English)

Three images on your articles page lack alt text — the hidden description that screen readers (used by blind and low-vision visitors) read aloud, and that search engines use to understand what images show. This means some of your audience cannot access the content, and Google gets less context to rank your pages.

Why it matters for your business: Missing alt text reduces your search visibility for image-based queries (e.g., product photos, strain reviews) and excludes disabled customers from browsing your content — both legal and commercial risks.

Technical root cause: Images were uploaded to WordPress without filling in the Alt Text field in the media library, or they were added via HTML without an alt attribute.

Recommended fix — step by step

  1. Log in to WordPress admin → Media Library → search for images used on /articles/
  2. For each image missing alt text, click Edit → scroll to Alt Text field → write a concise, descriptive phrase (e.g., 'Purple hybrid cannabis flower in glass jar' or 'CityLeaf storefront on Main Street')
  3. Alternatively, navigate to the Articles page in edit mode → click each image block → check the Alt Text sidebar field → fill in if blank
  4. For cannabis products, alt text should include strain name, type (indica/sativa/hybrid), and visual characteristics when relevant
  5. Publish/update the page, then run a quick re-scan using a free tool like WAVE (wave.webaim.org) to confirm the 3 images now have alt text

3. Missing OpenGraph metadata

What it means (plain English)

OpenGraph tags are snippets of code that control how your site preview appears when someone shares a link on Facebook, Instagram, or other social platforms. Without them, shared links show a generic or broken preview, which looks unprofessional and discourages clicks. This is especially important for cannabis retailers, where word-of-mouth and social sharing drive foot traffic.

Why it matters for your business: Missing OpenGraph metadata reduces click-through rates when customers share your dispensary location or product pages on social media, directly impacting foot traffic and online visibility.

Technical root cause: The WordPress site's theme or SEO plugin is not outputting og:title and og:image meta tags in the page <head>. This is typically a configuration gap in the site's SEO settings or theme defaults.

Recommended fix — step by step

  1. Log in to WordPress admin → Plugins → search 'Yoast SEO' or 'Rank Math'. If not installed, click 'Add New' and install one of these.
  2. Activate the plugin. Go to the plugin settings (usually under 'SEO' in the left menu).
  3. Navigate to 'Social Media' or 'OpenGraph' settings and enable 'Add Open Graph meta tags'.
  4. Set a default OG image: upload or select a high-quality image of your dispensary storefront or logo (1200×630px works best).
  5. For the homepage, verify og:title is set to your business name + location (e.g., 'CityLeaf NJ – Licensed Cannabis Dispensary').
  6. Regenerate your site's front page by visiting it in a browser, then test the sharing preview using Facebook's Sharing Debugger (facebook.com/developers/tools/debug/sharing/).

4. Title length 90 chars

What it means (plain English)

Your page title is 90 characters long, but search engines like Google typically display only 50–65 characters in search results before truncating with an ellipsis (…). When your title is too long, the important part of your message gets cut off, making it less compelling to potential customers clicking through from search results.

Why it matters for your business: Truncated titles in search results reduce click-through rates from customers searching for cannabis wellness information, directly impacting traffic and foot traffic to your dispensary.

Technical root cause: The WordPress page title (set via Yoast SEO, All in One SEO, or the theme's title tag) exceeds the recommended 50–65 character range that renders fully in most search engine results.

Recommended fix — step by step

  1. Log in to WordPress admin → Posts → Edit the page 'The Benefits of Recreational Cannabis…'
  2. If using Yoast SEO: scroll to the 'Yoast SEO' box → click 'Edit snippet' → shorten the SEO Title to under 60 chars (e.g., 'Recreational Cannabis Health Benefits | CityLeaf NJ')
  3. If using All in One SEO: find the 'All in One SEO Pack' box → update the Title field to under 60 chars
  4. If neither plugin is active: check the theme's meta title settings (often under 'Theme Options' or page-level 'SEO' metabox) and shorten to 50–60 chars
  5. Preview the change by searching for a related keyword in Google and verify the full title appears without truncation
  6. Repeat for other long-title pages, prioritizing high-traffic wellness and education pages

5. Missing OpenGraph metadata

What it means (plain English)

Open Graph tags are metadata snippets that tell social media platforms (Facebook, Instagram, LinkedIn) how to display your page when someone shares it. Without them, your posts appear bland—no custom title, description, or image—which reduces click-through rates and looks unprofessional.

Why it matters for your business: When customers share your wellness or product content on social media, missing Open Graph tags cause poor previews, discouraging friends from clicking through, which means lost foot traffic and repeat customer referrals.

Technical root cause: The WordPress page or post lacks og:title, og:image, and related Open Graph meta tags in the <head> section. This typically happens when an SEO plugin is not installed, not configured, or the theme doesn't inject these tags automatically.

Recommended fix — step by step

  1. Install the free 'Yoast SEO' plugin: log into WordPress admin → Plugins → Add New → search 'Yoast SEO' → Install and Activate.
  2. Navigate to the affected post: Posts → Edit the 'Benefits of Recreational Cannabis' post → scroll to the Yoast SEO panel at bottom → click 'Social' tab.
  3. In the Social tab, upload a custom image (minimum 1200×630px) and verify the og:title and og:description preview look correct.
  4. Repeat for all other blog posts and product pages, or enable Yoast's 'Automatically generate' social previews: Yoast SEO → Social → toggle 'Add Open Graph meta tags' to ON.
  5. Test the fix: visit Facebook Sharing Debugger (facebook.com/developers/tools/debug/sharing), paste the URL, and confirm og:title, og:image, and og:description now appear.

6. Missing Twitter card

What it means (plain English)

Your blog post isn't configured to display nicely when shared on social media platforms like Twitter/X. Without a Twitter card meta tag, when someone shares your post, it will show only plain text and a generic thumbnail instead of an attractive preview with your chosen image, headline, and description.

Why it matters for your business: Missing social card metadata reduces click-through rates on social shares, limiting organic traffic from Twitter/X where cannabis education and community engagement drive awareness and foot traffic to your dispensary.

Technical root cause: The page is missing the <meta name="twitter:card"> tag and related Open Graph meta tags (og:image, og:title, og:description) in the page header, which social platforms use to render rich previews.

Recommended fix — step by step

  1. Install the free Yoast SEO plugin if not already active: WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install and Activate
  2. Edit the affected blog post: WordPress Admin → Posts → The Benefits of Recreational Cannabis → scroll to Yoast SEO panel at bottom
  3. In the Yoast panel, click 'Social' tab and configure Twitter settings: set Card Type to 'Summary with Large Image', upload a featured image (1200×675px minimum)
  4. Verify Open Graph tags are enabled: WordPress Admin → Yoast SEO → Social → toggle 'Add Open Graph meta tags' to ON
  5. Apply the same Twitter card settings to all future blog posts by editing the post template before publishing
  6. Test the fix: visit Twitter Card Validator (cards-dev.twitter.com/validator), paste your post URL, and confirm the rich preview displays correctly

7. Title length 76 chars

What it means (plain English)

Your page title (the text that appears in browser tabs and search results) is 76 characters long, but search engines typically truncate titles longer than 60 characters on desktop and 55 on mobile. This means visitors searching Google won't see your full title — it'll be cut off mid-sentence, which looks unprofessional and may reduce click-through rates.

Why it matters for your business: Truncated titles in search results lower click-through rates from potential customers searching for cannabis consumption methods, directly reducing qualified traffic to your articles and product pages.

Technical root cause: The WordPress page or post title, or the SEO plugin's custom title field, contains 76 characters. Most search engines display 50–60 characters before truncating with an ellipsis (…).

Recommended fix — step by step

  1. Log into WordPress admin → go to the Articles page → click Edit
  2. In the page editor sidebar, find the SEO plugin panel (likely Yoast SEO, RankMath, or All in One SEO)
  3. Locate the 'SEO Title' or 'Meta Title' field
  4. Shorten the title to 50–60 characters, e.g. 'Cannabis Consumption Methods & Tips | CityLeaf NJ'
  5. Keep the brand name (CityLeaf) and primary keyword (consumption methods) but cut descriptive words like 'How to' and 'Recreational'
  6. Preview the snippet in the plugin to confirm it displays fully without truncation
  7. Click Update/Publish

8. Missing OpenGraph metadata

What it means (plain English)

When someone shares your articles page on Facebook, Instagram, or other social platforms, those sites pull in a title and image to display in the preview. Without OpenGraph metadata (special HTML tags that tell social platforms what to show), your link will display generically or incorrectly, making it less likely people will click through.

Why it matters for your business: Poor social sharing preview reduces click-through rates on shared posts, losing potential customers who discover you through social media word-of-mouth or your own team's promotional posts.

Technical root cause: The page's HTML header is missing og:title and og:image meta tags. WordPress doesn't add these automatically; they must be configured via a plugin (like Yoast SEO, All in One SEO, or Rank Math) or manually inserted into the theme template.

Recommended fix — step by step

  1. Install and activate Yoast SEO Free or All in One SEO Free (both available in WordPress → Plugins → Add New).
  2. Go to the plugin's settings and configure a default OpenGraph image (WordPress → [Plugin Name] → Titles & Metas → Social → Default Image → upload or select a brand image at least 1200×630px).
  3. Edit the affected page (WordPress → Pages → find 'Articles') and fill in the 'SEO Title' and 'Focus Keyphrase' in the plugin panel at the bottom of the editor.
  4. The plugin will auto-generate og:title and og:image tags; verify by right-clicking the page in a browser → Inspect → search for 'og:' in the HTML <head> section.
  5. Test the fix using Facebook's Sharing Debugger (facebook.com/developers/tools/debug/sharing) or LinkedIn's Post Inspector to confirm the preview now displays correctly.

9. Missing OpenGraph metadata

What it means (plain English)

When this article is shared on Facebook, Instagram, or other social platforms, those sites can't pull a custom title or image to display in the preview. Instead, users see whatever generic fallback the platform provides—usually just the page URL and a bland thumbnail. This makes your content look less professional and less clickable when shared.

Why it matters for your business: Lower click-through rates on social shares means fewer visitors from social traffic, and reduced brand credibility when your content appears in newsfeeds alongside competitors who have polished previews.

Technical root cause: The WordPress page is missing og:title, og:image, og:description, and og:url meta tags in the <head> section. Most WordPress SEO plugins (like Yoast or Rank Math) auto-generate these, but they may not be configured or enabled for blog posts.

Recommended fix — step by step

  1. Log into WordPress admin → Plugins → search for 'Yoast SEO' or 'Rank Math' (whichever is already installed).
  2. If Yoast: go to SEO → Social → toggle on 'Facebook' and 'X (Twitter)' integrations, then set a default Open Graph image (Settings → Social → Image).
  3. If Rank Math: go to Rank Math → Settings → Social → enable 'Open Graph' toggle, and set a default featured image fallback.
  4. Edit the affected blog post (Cannabis and Creativity) → scroll to the SEO/Rank Math panel → ensure 'Featured Image' is set to a high-quality 1200×630px image.
  5. Save the post and verify the fix by visiting https://www.opengraphcheck.com/ and pasting the blog post URL.
  6. Repeat for other blog posts on the site—run a bulk check using your site audit tool to identify all missing og: tags.

10. 4 image(s) missing alt text

What it means (plain English)

Four images on your blog post about cannabis and creativity don't have alt text — brief descriptions that explain what the image shows. Alt text serves two purposes: it helps people using screen readers understand the image, and it tells search engines what the image contains so it can appear in image search results.

Why it matters for your business: Missing alt text reduces your visibility in Google Images (a source of organic traffic) and makes your content inaccessible to visitors using assistive technology, which can expose you to accessibility complaints.

Technical root cause: Images were likely uploaded to WordPress without filling in the Alt Text field during upload or insertion, or the field was left blank when the post was created.

Recommended fix — step by step

  1. Log into WordPress admin → Posts → edit the post 'Cannabis and Creativity…'
  2. Click each of the 4 images in the editor to open the image block settings
  3. In the right-hand panel under 'Image settings', find the 'Alt text' field and write a short, descriptive phrase (e.g., 'Artist painting with cannabis-inspired colors' or 'Creative workspace with art supplies')
  4. Ensure each alt text is 5–15 words, descriptive, and does not start with 'image of' or 'picture of'
  5. Click Update to save the post

11. Missing OpenGraph metadata

What it means (plain English)

When someone shares your blog post on Facebook, LinkedIn, or other social platforms, those sites look for OpenGraph tags (special metadata) to know what headline and image to display in the preview. Without og:title and og:image, the share card will look broken or use generic fallbacks, which hurts click-through rates and makes your content look unprofessional.

Why it matters for your business: Blog posts about your dispensary's story and community involvement are key trust-builders; broken social previews reduce shares and referral traffic, cutting the reach of your earned credibility.

Technical root cause: The WordPress theme or Yoast SEO plugin (if installed) is not automatically generating or allowing manual entry of og:title and og:image meta tags for this post.

Recommended fix — step by step

  1. Install or activate Yoast SEO (free plugin available in WordPress.com admin → Plugins). If already installed, go to the post editor and scroll to the Yoast SEO section.
  2. Click 'Preview as' dropdown and select 'Facebook' to see the live social card preview.
  3. Fill in the 'Social title' field (if blank, Yoast should auto-fill from post title; edit if needed for clarity).
  4. Upload or select an 'Social image' — choose a high-quality photo (1200×630px recommended) that represents the post (e.g., storefront or ownership photo).
  5. Repeat for any other blog posts missing og:image. Prioritize posts you actively promote.
  6. Test by pasting the post URL into Facebook's Sharing Debugger (facebook.com/tools/debug/sharing/) to confirm the preview now shows your title and image.

12. Missing Twitter card

What it means (plain English)

Your website is missing a Twitter Card meta tag, which is a small code snippet that tells Twitter (X) how to display a preview when someone shares your link on that platform. Without it, Twitter shows a plain text link instead of an attractive preview with your image and description, making shared posts less engaging.

Why it matters for your business: Missed social sharing engagement means fewer clicks from Twitter back to your site when customers or staff share your dispensary information, product updates, or promotions on social media.

Technical root cause: The WordPress theme or a custom header configuration is not outputting the <meta name="twitter:card" content="summary_large_image"> tag in the page's HTML head section.

Recommended fix — step by step

  1. Log into your WordPress admin dashboard and go to Settings → General to confirm your Site Title and Tagline are filled in (Twitter Cards need this metadata).
  2. Install the Yoast SEO plugin (free version) via Plugins → Add New → search 'Yoast SEO' → Install Now → Activate.
  3. In the Yoast SEO settings (SEO → Settings in left menu), scroll to 'Social' and toggle on 'X (Twitter)' integration.
  4. Under Social settings, paste your Twitter/X handle (e.g., @cityleafnj) in the 'Social profiles' field.
  5. Go to any post or page edit screen and scroll to the Yoast SEO meta box; check that the 'Social' tab shows a preview of how your content will appear on Twitter.
  6. If using a different SEO plugin (e.g., RankMath), navigate to its Social settings and enable Twitter Card with summary_large_image type.

13. Missing Twitter card

What it means (plain English)

Your website is missing a Twitter Card meta tag, which tells Twitter how to display your content when someone shares a link to your site on Twitter/X. Without it, Twitter uses a generic preview instead of your custom image, headline, and description.

Why it matters for your business: Shared articles from your site will appear less professional and engaging on social media, reducing click-through rates and brand presence among customers who discover you through Twitter/X.

Technical root cause: The WordPress theme or a custom header.php template is not including the Open Graph and Twitter Card meta tags in the <head> section of the page.

Recommended fix — step by step

  1. Install Yoast SEO plugin (free version) via WordPress Admin → Plugins → Add New, search 'Yoast SEO', click Install and Activate.
  2. Go to Yoast SEO → Integrations and connect your social profiles (Twitter account).
  3. Edit your articles page: WordPress Admin → Pages, find and edit the /articles/ page, scroll to the Yoast SEO metabox at the bottom, and ensure 'Social' is populated with a preview image and description.
  4. Alternatively, if using a different SEO plugin (RankMath, All in One SEO), navigate to that plugin's Social settings and enable Twitter Card output.
  5. Test the meta tag by visiting https://www.twitterstatus.com or pasting your URL into Twitter/X's Card Validator to confirm the tag now appears and renders correctly.
  6. Repeat for your homepage and any other high-traffic article landing pages to ensure consistent social sharing presentation.

14. Missing Twitter card

What it means (plain English)

Your blog posts don't have Twitter card tags—special metadata that tells Twitter (now X) how to display your content when someone shares a link. Without them, X shows a plain text preview instead of a formatted card with your title, description, and image. This is a cosmetic issue; the content still appears and is still shareable.

Why it matters for your business: Shared blog posts look less professional on social media, which reduces click-through rates and brand presence when customers discuss your content on X.

Technical root cause: The WordPress theme or SEO plugin is not generating twitter:card meta tags (specifically, the og:image fallback is missing). Most sites use Yoast SEO or All in One SEO to automate this; if neither is active, the tags are absent.

Recommended fix — step by step

  1. Install Yoast SEO (free version) via WordPress admin → Plugins → Add New, search 'Yoast SEO', click Install & Activate
  2. Go to Yoast SEO → Integrations → Social Media, enable 'Twitter' and connect your X account handle
  3. Verify each blog post has a featured image set (WordPress editor → right panel → Featured Image) — Yoast uses this for cards
  4. Edit the blog post at /cannabis-and-creativity-how-it-can-enhance-your-artistic-side/, click Yoast SEO → Social, and confirm Twitter preview displays correctly
  5. Publish or update the post to regenerate meta tags
  6. Optional: test the live URL at card-validator.twitter.com to preview how X will render it

15. Title length 84 chars

Detail

Title should be 20-65 chars. Got: "Cannabis and Creativity: How It Can Enhance Your Artistic Side | CityLeaf Dispensary"

16. Title length 90 chars

Detail

Title should be 20-65 chars. Got: "New Minority-Owned Cannabis Shop in Newark Comes to Budding Industry | CityLeaf Dispensary"

17. Missing Twitter card

Detail

No twitter:card meta tag.

18. 4 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

19. Title length 66 chars

Detail

Title should be 20-65 chars. Got: "The Ultimate Guide to Cannabis in Newark, NJ | CityLeaf Dispensary"

20. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

21. Missing Twitter card

Detail

No twitter:card meta tag.

22. Title length 68 chars

Detail

Title should be 20-65 chars. Got: "A Connoisseur's Guide to Cannabis Concentrates | CityLeaf Dispensary"

23. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

24. Missing Twitter card

Detail

No twitter:card meta tag.

25. Description length 4 chars

Detail

Description should be 80-160 chars.

26. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

27. Missing Twitter card

Detail

No twitter:card meta tag.

28. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

29. Missing Twitter card

Detail

No twitter:card meta tag.

30. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

31. Missing Twitter card

Detail

No twitter:card meta tag.

32. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

33. Missing Twitter card

Detail

No twitter:card meta tag.

34. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

35. Missing Twitter card

Detail

No twitter:card meta tag.

36. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

37. Missing Twitter card

Detail

No twitter:card meta tag.

38. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

39. Missing Twitter card

Detail

No twitter:card meta tag.

40. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

41. Missing Twitter card

Detail

No twitter:card meta tag.

42. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

43. Missing Twitter card

Detail

No twitter:card meta tag.

44. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

45. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

46. Missing Twitter card

Detail

No twitter:card meta tag.

47. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

48. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

49. Missing Twitter card

Detail

No twitter:card meta tag.

50. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

51. Missing Twitter card

Detail

No twitter:card meta tag.

52. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

53. Missing Twitter card

Detail

No twitter:card meta tag.

54. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

55. Missing Twitter card

Detail

No twitter:card meta tag.

56. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

57. Missing Twitter card

Detail

No twitter:card meta tag.

58. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

59. Missing Twitter card

Detail

No twitter:card meta tag.

60. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

61. Missing Twitter card

Detail

No twitter:card meta tag.

62. Title length 94 chars

Detail

Title should be 20-65 chars. Got: "NJ Cannabis Flower Delivery: Premium Weed Strains Delivered to Your Door | CityLeaf Dispensary"

63. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

64. Missing Twitter card

Detail

No twitter:card meta tag.

65. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

66. Title length 89 chars

Detail

Title should be 20-65 chars. Got: "NJ Vape Delivery: Premium Cannabis Vape Pens & Cartridges Delivered | CityLeaf Dispensary"

67. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

68. Missing Twitter card

Detail

No twitter:card meta tag.

69. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

70. Title length 84 chars

Detail

Title should be 20-65 chars. Got: "NJ Pre-Roll Delivery: Premium, Ready-to-Enjoy Joints Delivered | CityLeaf Dispensary"

71. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

72. Missing Twitter card

Detail

No twitter:card meta tag.

73. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

74. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

75. Missing Twitter card

Detail

No twitter:card meta tag.

76. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

77. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

78. Missing Twitter card

Detail

No twitter:card meta tag.

79. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

80. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

81. Missing Twitter card

Detail

No twitter:card meta tag.

82. 1 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

83. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

84. Missing Twitter card

Detail

No twitter:card meta tag.

85. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

86. Missing Twitter card

Detail

No twitter:card meta tag.

87. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

88. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

89. Missing Twitter card

Detail

No twitter:card meta tag.

90. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

91. Missing Twitter card

Detail

No twitter:card meta tag.

92. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

93. Missing Twitter card

Detail

No twitter:card meta tag.

94. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

95. Missing Twitter card

Detail

No twitter:card meta tag.

96. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

97. Missing Twitter card

Detail

No twitter:card meta tag.

98. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

99. Missing Twitter card

Detail

No twitter:card meta tag.

100. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

101. Missing Twitter card

Detail

No twitter:card meta tag.

102. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

103. Missing Twitter card

Detail

No twitter:card meta tag.

104. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

105. Missing Twitter card

Detail

No twitter:card meta tag.

106. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

107. Missing Twitter card

Detail

No twitter:card meta tag.

108. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

109. Missing Twitter card

Detail

No twitter:card meta tag.

110. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

111. Missing Twitter card

Detail

No twitter:card meta tag.

112. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

113. Missing Twitter card

Detail

No twitter:card meta tag.

114. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

115. Missing Twitter card

Detail

No twitter:card meta tag.

116. Missing OpenGraph metadata

Detail

Page missing og:title and/or og:image.

117. Missing Twitter card

Detail

No twitter:card meta tag.

118. 3 image(s) missing alt text

Detail

Images without alt fail a11y + hurt SEO.

119. Heavy JS payload (desktop): 538KB

Detail

JavaScript transfer exceeds 250KB budget.

120. Heavy page weight (desktop): 9777KB

Detail

Total transfer exceeds 2500KB budget.

121. Multiple H1s on homepage (3)

Detail

Only one H1 per page.

122. Missing security header: x-content-type-options

Detail

x-content-type-options not present on homepage response. Affects fortress score and CSP posture.

123. Missing security header: referrer-policy

Detail

referrer-policy not present on homepage response. Affects fortress score and CSP posture.

124. Missing security header: permissions-policy

Detail

permissions-policy not present on homepage response. Affects fortress score and CSP posture.

125. SSL Labs grade: unknown

Detail

Qualys SSL Labs: SSL Labs HTTP 400. Aim for A+ via strong TLS 1.3, HSTS, CAA, and preload.

126. DNSSEC not enabled

Detail

DNSSEC adds cryptographic verification to DNS responses. Consider enabling via your registrar.

127. No CAA DNS records

Detail

CAA records restrict which CAs may issue certs for your domain, preventing rogue issuance. Add CAA for letsencrypt.org / digicert.com / etc.

128. No DKIM selectors found (standard selectors)

Detail

Tried selectors: google, default, selector1, selector2, s1, k1 — none matched at cityleafnj.com. DKIM improves deliverability + anti-spoofing.

129. Lighthouse mobile audit failed to run

Detail

The "start lh:driver:navigate" performance mark has not been set

130. Lighthouse perf (desktop): 80/100

Detail

Score 80 is below target 90. See HTML report for details.

131. Lighthouse a11y (desktop): 85/100

Detail

Score 85 is below target 95. See HTML report for details.

132. Lighthouse seo (desktop): 92/100

Detail

Score 92 is below target 95. See HTML report for details.

133. LH desktop: Defer offscreen images (Est savings of 1,686 KiB)

Detail

Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/" target="_blank" rel="noreferrer">Learn how to defer offscreen images.

134. LH desktop: Eliminate render-blocking resources (Est savings of 360 ms)

Detail

Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/" target="_blank" rel="noreferrer">Learn how to eliminate render-blocking resources.

135. LH desktop: Minify CSS (Est savings of 17 KiB)

Detail

Minifying CSS files can reduce network payload sizes. https://developer.chrome.com/docs/lighthouse/performance/unminified-css/" target="_blank" rel="noreferrer">Learn how to minify CSS.

136. LH desktop: Minify JavaScript (Est savings of 5 KiB)

Detail

Minifying JavaScript files can reduce payload sizes and script parse time. https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/" target="_blank" rel="noreferrer">Learn how to minify JavaScript.

137. LH desktop: Reduce unused CSS (Est savings of 111 KiB)

Detail

Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/" target="_blank" rel="noreferrer">Learn how to reduce unused CSS.

138. Dutchie menu iframe not found on /, /menu, or /shop

Detail

No Dutchie iframe detected. If this client uses a different menu provider, add it to clients.yaml dutchieSlug=null + we'll stop flagging.


Findings by Page

Grouped by URL — useful when working through the site one page at a time.

https://cityleafnj.com/

_46 findings on this page_

Your website's homepage is throwing a JavaScript error that breaks interactive features. When a visitor loads the page, a script is trying to modify an HTML element that doesn't exist or hasn't loaded

Your website is served over HTTPS (secure), but some code references are pointing to HTTP (non-secure) URLs. These are Schema.org markup references—structured data that helps search engines understand

Your site's Lighthouse Best Practices score is 56 out of 100, which is well below the healthy threshold of 90. This score reflects issues like outdated libraries, missing security headers, or browser

Your age-gate dialog—the overlay that appears to verify visitor age before accessing the site—is missing a label that screen readers can announce. Screen reader users won't know what the dialog is for

Your homepage has a container marked as a 'list' in the accessibility code, but it contains child elements (images, subheadings, links) that aren't properly structured as list items. Screen reader use

A button on your homepage (the age-gate 'Yes' button) has white text (#ffffff) on a yellow-green background (#b4be0e) that creates a contrast ratio of only 2.03:1. WCAG accessibility standards require

Your website has 5 image gallery links that keyboard and screen reader users cannot identify or interact with properly. These links have no visible text, no hidden labels (aria-label), and no title at

Your gallery images on the homepage have the accessibility role of 'image' but lack descriptive text that screen readers can read aloud. This means visitors using screen readers (software that reads w

Your website has a JavaScript error that appears in Safari and other Apple browsers (WebKit) but not in Chrome. The error occurs when code tries to modify an HTML element (the mobile viewport tag) tha

Your site has a JavaScript error that appears in Firefox but not Chrome. The code is trying to call a method (setAttribute) on something that doesn't exist (null). This usually happens when a script l

Your site has 37 images out of 41 total that lack alt text — the descriptive label that tells screen readers and search engines what an image shows. This means visually impaired customers cannot under

Your site has 2 broken internal links that point to email-protection pages (these are Cloudflare email obfuscation URLs). When search engines or visitors click these links, they hit a 404 error page i

The performance testing tool timed out while trying to load your homepage on a mobile device, meaning the page took longer than 60 seconds to fully load. This suggests either a slow server response, l

Your site is missing an HTTP security header called Strict-Transport-Security (HSTS), which tells browsers to always use encrypted HTTPS connections when visiting your domain. Without it, a visitor's

Your website is missing the X-Frame-Options security header, which tells browsers whether your site can be embedded inside iframes on other websites. Without it, attackers could potentially embed your

Your website is missing a Content Security Policy (CSP) header — a security directive that tells browsers which sources of content (scripts, images, stylesheets) are trusted. Without it, attackers cou

Your domain cityleafnj.com does not have an SPF (Sender Policy Framework) record published in DNS. SPF is a simple text record that tells email providers which servers are authorized to send mail from

Your site has 36 buttons, links, and other clickable elements that are smaller than 44×44 pixels on mobile phones. This is below the Web Content Accessibility Guidelines (WCAG) standard, which means v

Your website has 38 interactive buttons, links, and form fields that are smaller than 44×44 pixels on mobile devices. This makes them difficult to tap accurately, especially for people with motor impa

Your website has 38 interactive buttons, links, and form fields that are smaller than 44×44 pixels when viewed on mobile phones. This makes them hard to tap accurately—especially for people with less

Your website has 38 buttons, links, and interactive elements that are smaller than 44×44 pixels when viewed on a tablet. This makes them hard to tap accurately, especially for people with motor contro

Your main navigation menu doesn't have a unique name that screen readers can use to distinguish it from other navigation areas on the page. Right now, it's labeled generically as "Menu," which creates

Your homepage is encountering two JavaScript errors after the age gate loads and the menu becomes visible. These errors occur when the browser tries to interact with HTML elements that either don't ex

OpenGraph tags are snippets of code that control how your site preview appears when someone shares a link on Facebook, Instagram, or other social platforms. Without them, shared links show a generic o

Your website is missing a Twitter Card meta tag, which is a small code snippet that tells Twitter (X) how to display a preview when someone shares your link on that platform. Without it, Twitter shows

https://cityleafnj.com/the-benefits-of-recreational-cannabis-exploring-health-and-wellness/

_4 findings on this page_

Nine images on your blog post about recreational cannabis lack alt text — descriptive labels that screen readers read aloud to blind/low-vision visitors. Search engines also use alt text to understand

Your page title is 90 characters long, but search engines like Google typically display only 50–65 characters in search results before truncating with an ellipsis (…). When your title is too long, the

Open Graph tags are metadata snippets that tell social media platforms (Facebook, Instagram, LinkedIn) how to display your page when someone shares it. Without them, your posts appear bland—no custom

Your blog post isn't configured to display nicely when shared on social media platforms like Twitter/X. Without a Twitter card meta tag, when someone shares your post, it will show only plain text and

https://cityleafnj.com/articles/

_4 findings on this page_

Your page title (the text that appears in browser tabs and search results) is 76 characters long, but search engines typically truncate titles longer than 60 characters on desktop and 55 on mobile. Th

When someone shares your articles page on Facebook, Instagram, or other social platforms, those sites pull in a title and image to display in the preview. Without OpenGraph metadata (special HTML tags

Your website is missing a Twitter Card meta tag, which tells Twitter how to display your content when someone shares a link to your site on Twitter/X. Without it, Twitter uses a generic preview instea

Three images on your articles page lack alt text — the hidden description that screen readers (used by blind and low-vision visitors) read aloud, and that search engines use to understand what images

https://cityleafnj.com/cannabis-and-creativity-how-it-can-enhance-your-artistic-side/

_4 findings on this page_

When this article is shared on Facebook, Instagram, or other social platforms, those sites can't pull a custom title or image to display in the preview. Instead, users see whatever generic fallback th

Your blog posts don't have Twitter card tags—special metadata that tells Twitter (now X) how to display your content when someone shares a link. Without them, X shows a plain text preview instead of a

Four images on your blog post about cannabis and creativity don't have alt text — brief descriptions that explain what the image shows. Alt text serves two purposes: it helps people using screen reade

https://cityleafnj.com/new-minority-owned-cannabis-shop-in-newark-comes-to-budding-industry/

_4 findings on this page_

When someone shares your blog post on Facebook, LinkedIn, or other social platforms, those sites look for OpenGraph tags (special metadata) to know what headline and image to display in the preview. W

https://cityleafnj.com/newark-cannabis-guide/

_4 findings on this page_

Five images on your Newark cannabis guide page don't have alt text — descriptive labels that explain what each image shows. Search engines and screen readers (tools that help blind/low-vision visitors

https://cityleafnj.com/cannabis-concentrates-guide/

_4 findings on this page_

Five images on your Cannabis Concentrates Guide page don't have alt text—descriptive text that explains what the image shows. Screen readers (used by blind and low-vision visitors) can't describe thes

https://cityleafnj.com/blog/

_4 findings on this page_

Six images on your blog page lack alternative text (alt text) — descriptive labels that screen readers announce to visually impaired visitors and that search engines use to understand image content. T

https://cityleafnj.com/delivery/flower/

_4 findings on this page_

https://cityleafnj.com/delivery/vapes/

_4 findings on this page_

https://cityleafnj.com/delivery/prerolls/

_4 findings on this page_

https://cityleafnj.com/category/blog/

_4 findings on this page_

Your blog category page (/category/blog/) doesn't have a meta description — the 150-160 character summary that appears below your page title in Google search results. Without it, Google generates a ra

https://cityleafnj.com/areas-we-serve/harrison-nj/

_3 findings on this page_

Your Harrison, NJ page has 11 images without alt text—alternative text that describes what's in the image. Screen readers (tools blind and low-vision visitors use) can't tell users what those images s

https://cityleafnj.com/areas-we-serve/kearny-nj/

_3 findings on this page_

Your website has 11 images without alt text (descriptive text read aloud by screen readers and used by search engines). This prevents visually impaired customers from understanding what those images s

https://cityleafnj.com/areas-we-serve/newark-nj/

_3 findings on this page_

Eleven images on your Newark service page are missing alt text — a brief description that screen readers announce to visually impaired visitors and that search engines use to understand image content.

https://cityleafnj.com/areas-we-serve/bloomfield-nj/

_3 findings on this page_

Your Bloomfield page has 11 images missing alt text — short descriptions that explain what each image shows. Screen readers (tools blind customers use to browse the web) can't tell visitors what these

https://cityleafnj.com/areas-we-serve/east-orange-nj/

_3 findings on this page_

Eleven images on your East Orange service area page are missing alt text — short descriptions that screen readers read aloud and search engines use to understand image content. This makes your page ha

https://cityleafnj.com/areas-we-serve/jersey-city-nj/

_3 findings on this page_

Your Jersey City page has 11 images without alt text — short descriptions that explain what each image shows. Search engines and screen readers (used by people with vision loss) can't understand image

https://cityleafnj.com/areas-we-serve/hoboken-nj/

_3 findings on this page_

Eleven images on your Hoboken service page are missing alt text — descriptive labels that screen readers use to describe images to blind and low-vision visitors. These missing labels also prevent sear

https://cityleafnj.com/end-user-license-agreement/

_3 findings on this page_

https://cityleafnj.com/privacy-policy/

_3 findings on this page_

https://cityleafnj.com/delivery/jersey-city/

_3 findings on this page_

Your delivery page has 9 images that lack alt text — a short description that appears if an image fails to load and that search engines read to understand your content. This makes the page harder for

https://cityleafnj.com/delivery/hoboken/

_3 findings on this page_

Nine images on your Hoboken delivery page don't have alt text—descriptive labels that screen readers read aloud to blind or low-vision visitors. Search engines also use alt text to understand what ima

https://cityleafnj.com/delivery/kearny/

_3 findings on this page_

Nine images on your Kearny delivery page don't have alt text—descriptions that tell search engines and screen readers what each image shows. This hurts both accessibility (people using screen readers

https://cityleafnj.com/delivery/newark/

_3 findings on this page_

Nine images on your Newark delivery page don't have alt text — a short description that describes what the image shows. Search engines and screen readers (used by people with vision loss) can't unders

https://cityleafnj.com/delivery/east-orange-nj/

_3 findings on this page_

Nine images on your East Orange delivery page don't have alt text—descriptions that explain what each image shows. Screen readers (software that helps blind and low-vision customers browse your site)

https://cityleafnj.com/delivery/bloomfield-nj/

_3 findings on this page_

Nine images on your Bloomfield delivery page are missing alt text — a brief text description that screen readers use to understand images, and that search engines use to index them. This means custome

https://cityleafnj.com/delivery/harrison-nj/

_3 findings on this page_

Nine images on your Harrison delivery page don't have alt text—descriptive labels that screen readers read aloud and search engines use to understand what's in the image. This blocks visually impaired

https://cityleafnj.com/areas-we-serve/

_3 findings on this page_

https://cityleafnj.com/delivery/

_3 findings on this page_

https://cityleafnj.com/contact-us/

_3 findings on this page_

https://cityleafnj.com/about-us/

_3 findings on this page_

Your About Us page has 13 images without alternative text descriptions. Alt text is invisible text attached to images that describes what they show. Search engines and screen readers (used by people w

https://cityleafnj.com/faq/

_3 findings on this page_

https://cityleafnj.com/areas-we-serve/belleville-nj/

_3 findings on this page_

Your website has 11 images without alt text (descriptive text that appears if an image fails to load). This prevents visually impaired customers using screen readers from understanding what those imag

https://cityleafnj.com/weed-delivery-jersey-city-nj/

_3 findings on this page_

Seven images on your Weed Delivery page lack alt text — a description that screen readers announce to blind/low-vision visitors and that search engines use to understand image content. This blocks acc

https://cityleafnj.com/weed-delivery-newark-nj/

_3 findings on this page_

Seven images on your Newark delivery page don't have alt text — descriptive labels that screen readers use to understand images, and that search engines use to index them. This means visually impaired

https://cityleafnj.com/delivery/belleville-nj/

_3 findings on this page_

Nine images on your Belleville delivery page don't have alt text—descriptions that tell screen readers (and search engines) what each image shows. This means visually impaired customers can't understa

https://cityleafnj.com/?elementor_library=home-1

_3 findings on this page_

Your site has 37 images without alternative text (alt text) — a brief description that appears when an image fails to load and is read aloud by screen readers for visually impaired visitors. This brea

https://cityleafnj.com/?elementor_library=home-3-oil-dark

_3 findings on this page_

Your site has 37 images without alt text — descriptive labels that tell search engines and visitors using screen readers what the image shows. This hurts both accessibility (people using assistive tec

https://cityleafnj.com/?elementor_library=home-2-lounge

_3 findings on this page_

Your site has 37 images without alt text — descriptive text that explains what each image shows. This text is read aloud by screen readers (tools visually impaired customers use to browse the web) and

https://cityleafnj.com/?elementor_library=home-popup

_3 findings on this page_

Your site has 37 images without alternative text descriptions. Alt text is hidden text that describes what an image shows — it helps screen readers (used by people who are blind or have low vision) un

https://cityleafnj.com/?elementor_library=elementor-loop-item-2

_3 findings on this page_

Your site has 37 images without alt text — short descriptions that explain what each image shows. Search engines and assistive technologies (used by visually impaired visitors) rely on this text to un

https://cityleafnj.com/?elementor_library=delivery-pop-up

_3 findings on this page_

Your site has 37 images without alt text — descriptive text that explains what the image shows. Search engines and assistive technology (software that helps people with vision loss) can't understand i

https://cityleafnj.com/?elementor_library=elementor-header-28507

_3 findings on this page_

37 images on your site lack alternative text (alt text) — a short description that search engines and assistive technology (used by people with vision impairments) read when they can't see the image.

https://cityleafnj.com/?elementor_library=elementor-loop-item

_3 findings on this page_

Your site has 37 images without alt text — short descriptions that tell screen readers and search engines what each image shows. This blocks customers using assistive technology from understanding you

https://cityleafnj.com/?elementor_library=default-kit

_3 findings on this page_

Your website has 37 images without alt text — alternative text that describes what the image shows. Search engines and screen readers (used by people with vision disabilities) can't understand images

https://cityleafnj.com/?elementor_library=elementor-footer-28535

_3 findings on this page_

Your website has 37 images without alt text — descriptive labels that screen readers use to tell blind/low-vision visitors what an image shows, and that search engines use to understand your content.

https://cityleafnj.com/robots.txt

_1 finding on this page_

Your robots.txt file (a plain-text file that tells search engines what pages to crawl) doesn't include a link to your XML sitemap. The sitemap is like a master map of every page on your site that you

https://cityleafnj.com/wp-login.php

_1 finding on this page_

Your WordPress login page (/wp-login.php) is publicly accessible and returns a success response. This is a security risk because attackers can attempt to guess passwords or use automated tools to brea


_Generated by Apex Sentinel Monthly Audit · 2026-04-19T07:34:37.911Z · Powered by Bud Authority._


Generated by Apex Sentinel · © 2026 Bud Authority