{"id":"e8721b621a6e1461","url":"https://neu.so/","status":"done","position":0,"createdAt":1787865405573,"checklistVersion":"1.0.0","reportUrl":"/audit/r/e8721b621a6e1461","report":{"id":"e8721b621a6e1461","url":"https://neu.so/","finalUrl":"https://neu.so/","createdAt":1787865405573,"finishedAt":1787865474922,"durationMs":68502,"checklistVersion":"1.0.0","score":{"checklistVersion":"1.0.0","overall":82,"categories":{"usability":{"key":"usability","label":"Usability","weight":35,"blurb":"Can people actually use the page — on a phone, with a keyboard, with a screen reader, and without waiting?","score":82,"passed":16,"warned":5,"failed":1,"checks":[{"id":"viewport-meta","category":"usability","weight":5,"title":"Responsive viewport meta tag","measures":"A <meta name=\"viewport\" content=\"width=device-width...\"> tag is present and does not block zooming.","fix":"Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> to <head>. Never set user-scalable=no or maximum-scale=1.","score":1,"status":"pass","value":"width=device-width, initial-scale=1, shrink-to-fit=no","note":"ok"},{"id":"mobile-no-overflow","category":"usability","weight":5,"title":"No horizontal scrolling on mobile","measures":"document.scrollWidth is not wider than window.innerWidth at 390×844.","fix":"Find the element wider than the screen (usually a fixed width, a wide table, or an unwrapped <pre>) and give it max-width:100% or overflow-x:auto.","score":1,"status":"pass","value":"390px content in a 390px viewport (0px)","note":""},{"id":"tap-targets","category":"usability","weight":4,"title":"Tap targets are at least 44×44px on mobile","measures":"Share of visible links/buttons/inputs whose rendered box is at least 44px on its smaller side.","fix":"Give small links and icon buttons padding until they are 44px tall and wide, and leave 8px of space between neighbouring targets.","score":0,"status":"fail","value":"21 of 28 interactive elements are under 44px","note":""},{"id":"mobile-font-size","category":"usability","weight":4,"title":"No text under 12px on mobile","measures":"Count of visible text elements with a computed font-size below 12px at 390×844.","fix":"Set a base font-size of 16px and keep small print at 12px or larger. Legal text is still text people have to read.","score":0.53,"status":"warn","value":"7 elements under 12px","note":""},{"id":"axe-critical","category":"usability","weight":6,"title":"No critical accessibility violations","measures":"axe-core nodes with impact \"critical\" (WCAG 2 A/AA rule set).","fix":"Fix critical axe violations first — they usually block screen-reader or keyboard users entirely.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"axe-serious","category":"usability","weight":4,"title":"No serious accessibility violations","measures":"axe-core nodes with impact \"serious\".","fix":"Serious violations are usually contrast, missing names, or landmark problems — each one is a small, mechanical fix.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"axe-moderate","category":"usability","weight":2,"title":"Few moderate accessibility violations","measures":"axe-core nodes with impact \"moderate\" or \"minor\".","fix":"Work through the moderate list after the critical and serious ones.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"images-alt","category":"usability","weight":4,"title":"Images have alt text","measures":"Share of <img> elements with an alt attribute (empty alt counts as intentional for decorative images).","fix":"Describe what the image shows, or use alt=\"\" if it is purely decorative. Never leave the attribute off.","score":1,"status":"pass","value":"0 of 5 images have no alt attribute","note":""},{"id":"form-labels","category":"usability","weight":4,"title":"Form inputs have labels","measures":"Share of visible inputs/selects/textareas with a <label>, aria-label or aria-labelledby.","fix":"Wire every field to a visible <label for=\"…\">. Placeholder text is not a label — it disappears the moment someone types.","score":1,"status":"pass","value":"no form fields on the page","note":""},{"id":"button-names","category":"usability","weight":4,"title":"Buttons have an accessible name","measures":"Buttons and role=\"button\" elements with no text, aria-label, title or image alt.","fix":"Give every icon-only button an aria-label describing the action (\"Close menu\", not \"button\").","score":1,"status":"pass","value":"no buttons on the page","note":""},{"id":"heading-order","category":"usability","weight":3,"title":"Heading levels do not skip","measures":"Number of places where the heading level jumps by more than one (h2 → h4).","fix":"Use headings for structure, not size. Style them with CSS instead of skipping levels.","score":1,"status":"pass","value":"0 skipped levels","note":"h1 → h2 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h2"},{"id":"single-h1","category":"usability","weight":3,"title":"Exactly one H1","measures":"Count of <h1> elements in the document.","fix":"One page, one H1 — it is the page's name. Demote the extras to H2.","score":1,"status":"pass","value":"1 H1 elements","note":""},{"id":"lang-attribute","category":"usability","weight":2,"title":"HTML lang attribute set","measures":"<html lang=\"…\"> is present and non-empty.","fix":"Add lang=\"en\" (or your language) to <html> so screen readers pick the right voice.","score":1,"status":"pass","value":"en","note":""},{"id":"console-errors","category":"usability","weight":3,"title":"No JavaScript errors in the console","measures":"console.error() calls plus uncaught exceptions during load and scroll.","fix":"Open DevTools, reproduce, and fix. Console errors mean something on the page did not run.","score":1,"status":"pass","value":"0 errors","note":""},{"id":"console-warnings","category":"usability","weight":1,"title":"Few console warnings","measures":"console.warn() calls during load and scroll.","fix":"Warnings are usually deprecations or misconfigured third-party scripts. Clear them so real errors stay visible.","score":0.87,"status":"pass","value":"5 warnings","note":""},{"id":"broken-requests","category":"usability","weight":4,"title":"No broken or failing requests","measures":"Sub-resource requests that failed outright or returned 4xx/5xx.","fix":"Every 404 is a missing image, font or script. Fix the URL or remove the reference.","score":1,"status":"pass","value":"0 failing requests","note":""},{"id":"lcp","category":"usability","weight":5,"title":"Largest Contentful Paint under 2.5s","measures":"LCP from PerformanceObserver on the desktop run.","fix":"Compress and size the hero image, preload the LCP element, and stop render-blocking scripts in <head>.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"cls","category":"usability","weight":4,"title":"Cumulative Layout Shift under 0.1","measures":"CLS accumulated during load and the scripted scroll.","fix":"Give images and ad slots explicit width/height, and reserve space for anything injected after load.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"ttfb","category":"usability","weight":3,"title":"Time to First Byte under 800ms","measures":"responseStart − requestStart from the Navigation Timing API.","fix":"Cache pages at the edge, cut slow database queries, and turn on compression.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"load-time","category":"usability","weight":3,"title":"Page finishes loading in under 5s","measures":"The load event, from the Navigation Timing API.","fix":"Defer non-critical scripts, lazy-load below-the-fold images, and drop unused third-party tags.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"consent-overlay","category":"usability","weight":2,"title":"No overlay swallowing the first screen","measures":"Fixed/sticky elements (cookie banners, modals) covering more than 30% of the viewport at load.","fix":"Keep consent and promo banners small and dismissible. Do not cover the content someone came to read.","score":1,"status":"pass","value":"0% of the first screen is covered by an overlay","note":""},{"id":"favicon","category":"usability","weight":2,"title":"Favicon present","measures":"A <link rel=\"icon\"> (or shortcut icon / apple-touch-icon) is declared.","fix":"Add a favicon — it is how people find your tab among twenty others.","score":1,"status":"pass","value":"/favicon.svg","note":""}]},"copy":{"key":"copy","label":"Copy","weight":20,"blurb":"Does the writing tell a visitor what this is, in plain language, fast?","score":86,"passed":8,"warned":1,"failed":1,"checks":[{"id":"title-length","category":"copy","weight":6,"title":"Page title is 15–60 characters","measures":"Length of <title>.","fix":"Write a title that names the thing and the benefit, in under 60 characters, so search results do not truncate it.","score":1,"status":"pass","value":"37 characters","note":"neu.so | AI agents for every workflow"},{"id":"meta-description","category":"copy","weight":6,"title":"Meta description is 50–160 characters","measures":"Length of <meta name=\"description\">.","fix":"Write one sentence that would make a stranger click. This is the only copy most people read before deciding.","score":1,"status":"pass","value":"156 characters","note":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more."},{"id":"h1-text","category":"copy","weight":5,"title":"H1 says something specific","measures":"The H1 exists and is between 10 and 90 characters.","fix":"Replace \"Welcome\" or \"Home\" with what you actually do for the person reading.","score":1,"status":"pass","value":"29 characters","note":"AI agents for every workflow."},{"id":"word-count","category":"copy","weight":4,"title":"Enough copy to explain the offer","measures":"Visible word count in <body>.","fix":"Under 150 words a stranger cannot tell what you sell, who it is for, or why it is better.","score":1,"status":"pass","value":"723 words","note":""},{"id":"sentence-length","category":"copy","weight":5,"title":"Average sentence under 22 words","measures":"Mean words per sentence across the visible body copy.","fix":"Split long sentences at the first \"and\" or comma. Short sentences get read; long ones get skimmed.","score":0.06,"status":"fail","value":"33.0 words per sentence","note":""},{"id":"reading-level","category":"copy","weight":5,"title":"Reading level at or below grade 12","measures":"Flesch–Kincaid grade level of the visible body copy.","fix":"Swap jargon for the words your customers use. Aim for grade 8–10 on marketing pages.","score":0.67,"status":"warn","value":"grade 12.7","note":""},{"id":"all-caps","category":"copy","weight":3,"title":"No shouting blocks of ALL CAPS","measures":"Visible text blocks of 15+ characters that are entirely uppercase.","fix":"All-caps is 10–20% slower to read. Use weight and size for emphasis instead.","score":1,"status":"pass","value":"0 all-caps blocks","note":""},{"id":"generic-links","category":"copy","weight":4,"title":"No \"click here\" style link text","measures":"Links whose text is a generic phrase (click here, read more, learn more, this, here).","fix":"Make the link text describe the destination — it is what screen-reader users hear out of context.","score":1,"status":"pass","value":"0 generic links","note":""},{"id":"empty-links","category":"copy","weight":3,"title":"No empty links","measures":"Anchors with an href but no text, image alt or aria-label.","fix":"Give the link text, or an aria-label if it is an icon.","score":1,"status":"pass","value":"0 empty links","note":""},{"id":"og-tags","category":"copy","weight":3,"title":"Open Graph tags for sharing","measures":"og:title, og:description and og:image are all present.","fix":"Add og:title, og:description and a 1200×630 og:image so shared links do not look broken.","score":1,"status":"pass","value":"3 of 3 present","note":"title, description, image"}]},"trust":{"key":"trust","label":"Trust","weight":20,"blurb":"Does the page give a stranger reasons to believe you are real and safe to deal with?","score":90,"passed":11,"warned":0,"failed":1,"checks":[{"id":"https","category":"trust","weight":8,"title":"Served over HTTPS","measures":"The final URL uses the https scheme.","fix":"Get a certificate (Let's Encrypt is free) and redirect all HTTP traffic to HTTPS.","score":1,"status":"pass","value":"https","note":""},{"id":"mixed-content","category":"trust","weight":6,"title":"No mixed content","measures":"Sub-resources loaded over http:// on an https:// page.","fix":"Change every http:// asset URL to https:// (or a protocol-relative path). Browsers block or flag the rest.","score":1,"status":"pass","value":"0 insecure sub-resources","note":""},{"id":"privacy-policy","category":"trust","weight":5,"title":"Privacy policy linked","measures":"A link whose text or href mentions privacy.","fix":"Link a privacy policy in the footer. It is a legal requirement in most markets and a trust signal everywhere.","score":1,"status":"pass","value":"Privacy Policy P P r r i i v v a a c c y y P P o o l l i i c c y y","note":""},{"id":"terms-link","category":"trust","weight":3,"title":"Terms or legal page linked","measures":"A link whose text or href mentions terms, conditions, legal or imprint.","fix":"Add a terms page to the footer alongside privacy.","score":1,"status":"pass","value":"Terms of Service T T e e r r m m s s o o f f S S e e r r v v i i c c e e","note":""},{"id":"contact-link","category":"trust","weight":5,"title":"A way to contact a human","measures":"A contact link, mailto:, or tel: on the page.","fix":"Put a contact route in the header or footer. A site with no way to reach anyone reads as abandoned.","score":0,"status":"fail","value":"not found","note":""},{"id":"about-link","category":"trust","weight":3,"title":"About / who-we-are page linked","measures":"A link whose text or href mentions about, team, or company.","fix":"Add an About link. People buy from people; say who you are.","score":1,"status":"pass","value":"CircleChat A team chat where AI agents plan, route, complete, and verify real work, with people approving every risky st","note":""},{"id":"copyright","category":"trust","weight":3,"title":"Copyright / owner line present","measures":"A © or \"copyright\" string in the visible text.","fix":"Add \"© 2026 Your Company\" to the footer — cheap, and its absence reads as an unfinished site.","score":1,"status":"pass","value":"© 2026 Neu Software LLC. Privacy Policy P P r r i i v v a a c c y y P P o o l l i","note":""},{"id":"social-links","category":"trust","weight":3,"title":"Social profiles linked","measures":"Outbound links to at least one major social network.","fix":"Link the profiles you actually maintain. A dead profile is worse than none.","score":1,"status":"pass","value":"linkedin","note":""},{"id":"canonical","category":"trust","weight":3,"title":"Canonical URL declared","measures":"<link rel=\"canonical\"> is present.","fix":"Declare the canonical URL so duplicate paths and tracking parameters do not split your ranking.","score":1,"status":"pass","value":"https://neu.so/","note":""},{"id":"indexable","category":"trust","weight":4,"title":"Page is indexable","measures":"<meta name=\"robots\"> does not contain noindex.","fix":"Remove noindex from any page you want found. This is the single most common accidental traffic killer.","score":1,"status":"pass","value":"no robots meta (indexable)","note":""},{"id":"redirect-chain","category":"trust","weight":3,"title":"At most one redirect","measures":"Number of redirects between the submitted URL and the final URL.","fix":"Point links straight at the final URL. Each hop costs a round trip and leaks referrer data.","score":1,"status":"pass","value":"0 redirects","note":""},{"id":"http-status","category":"trust","weight":5,"title":"Final response is 200 OK","measures":"HTTP status of the final document response.","fix":"Anything other than 200 means visitors and crawlers are hitting an error or a soft redirect.","score":1,"status":"pass","value":"HTTP 200","note":""}]},"conversion":{"key":"conversion","label":"Conversion","weight":25,"blurb":"Is there one obvious next step, and is it easy to take?","score":73,"passed":6,"warned":2,"failed":2,"checks":[{"id":"cta-above-fold","category":"conversion","weight":8,"title":"A call to action above the fold (desktop)","measures":"At least one button or prominent link with an action verb in the top 900px.","fix":"Put the primary action in the first screen. If a visitor has to scroll to find the next step, most will not.","score":1,"status":"pass","value":"2 found","note":"Book a call B B o o o o k k a a c c a a l l l l | Book a call B B o o o o k k a a c c a a l l l l"},{"id":"cta-mobile","category":"conversion","weight":6,"title":"A call to action above the fold (mobile)","measures":"At least one action button or link visible in the first 844px at 390px wide.","fix":"Mobile hero sections often push the button below the fold. Shorten the headline or move the button up.","score":1,"status":"pass","value":"2 found","note":"Book a call B B o o o o k k a a c c a a l l l l | Book a call B B o o o o k k a a c c a a l l l l"},{"id":"cta-focus","category":"conversion","weight":4,"title":"Between one and five calls to action above the fold","measures":"Count of distinct action buttons/links in the first screen.","fix":"Competing buttons split attention. Pick one primary action and make everything else visually quieter.","score":1,"status":"pass","value":"2 calls to action","note":""},{"id":"cta-wording","category":"conversion","weight":4,"title":"CTA wording is specific, not \"Submit\"","measures":"Above-the-fold CTAs whose text is a vague default (submit, go, ok, click here, more).","fix":"Name the outcome: \"Get my free audit\" beats \"Submit\" — it tells the visitor what happens next.","score":1,"status":"pass","value":"0 of 2 are vague","note":""},{"id":"value-prop","category":"conversion","weight":6,"title":"A value proposition in the first screen","measures":"A heading of four or more words in the top 900px that is not just the brand name.","fix":"State what you do for whom in the first heading. \"Design that ships\" tells me nothing; \"UX audits for SaaS teams in 48 hours\" does.","score":1,"status":"pass","value":"5 words","note":"AI agents for every workflow."},{"id":"lead-capture","category":"conversion","weight":4,"title":"A way to convert on the page","measures":"A form, mailto: link or tel: link exists somewhere on the page.","fix":"Give the visitor something to do — a form, a booking link, a phone number. A page with no next step cannot convert.","score":0,"status":"fail","value":"no form, email or phone link","note":""},{"id":"form-length","category":"conversion","weight":4,"title":"Forms ask for five fields or fewer","measures":"Largest visible field count of any form on the page.","fix":"Every extra field costs conversions. Ask for what you need to make the next contact, and nothing else.","score":0.5,"status":"warn","value":"no forms to measure","note":""},{"id":"social-proof","category":"conversion","weight":5,"title":"Social proof on the page","measures":"Testimonial, review, rating, case-study, client-logo or \"trusted by\" signals in the visible text.","fix":"Add one real quote with a name and a face. Social proof is the cheapest conversion lift there is.","score":0,"status":"fail","value":"none found","note":""},{"id":"speed-conversion","category":"conversion","weight":4,"title":"First screen paints in under 2s","measures":"First Contentful Paint on the desktop run.","fix":"Every extra second before first paint costs conversions. Inline critical CSS and stop blocking render.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"no-blocking-interstitial","category":"conversion","weight":3,"title":"No pop-up blocking the first visit","measures":"A modal or overlay covering more than 50% of the first screen at load (mobile).","fix":"Delay pop-ups until someone has read something, and never cover the whole screen on mobile — Google penalises it.","score":1,"status":"pass","value":"0% of the mobile first screen covered","note":""}]}},"topFixes":[{"id":"tap-targets","category":"usability","weight":4,"title":"Tap targets are at least 44×44px on mobile","measures":"Share of visible links/buttons/inputs whose rendered box is at least 44px on its smaller side.","fix":"Give small links and icon buttons padding until they are 44px tall and wide, and leave 8px of space between neighbouring targets.","score":0,"status":"fail","value":"21 of 28 interactive elements are under 44px","note":"","lost":140},{"id":"social-proof","category":"conversion","weight":5,"title":"Social proof on the page","measures":"Testimonial, review, rating, case-study, client-logo or \"trusted by\" signals in the visible text.","fix":"Add one real quote with a name and a face. Social proof is the cheapest conversion lift there is.","score":0,"status":"fail","value":"none found","note":"","lost":125},{"id":"contact-link","category":"trust","weight":5,"title":"A way to contact a human","measures":"A contact link, mailto:, or tel: on the page.","fix":"Put a contact route in the header or footer. A site with no way to reach anyone reads as abandoned.","score":0,"status":"fail","value":"not found","note":"","lost":100},{"id":"lead-capture","category":"conversion","weight":4,"title":"A way to convert on the page","measures":"A form, mailto: link or tel: link exists somewhere on the page.","fix":"Give the visitor something to do — a form, a booking link, a phone number. A page with no next step cannot convert.","score":0,"status":"fail","value":"no form, email or phone link","note":"","lost":100},{"id":"sentence-length","category":"copy","weight":5,"title":"Average sentence under 22 words","measures":"Mean words per sentence across the visible body copy.","fix":"Split long sentences at the first \"and\" or comma. Short sentences get read; long ones get skimmed.","score":0.06,"status":"fail","value":"33.0 words per sentence","note":"","lost":93.99999999999999},{"id":"lcp","category":"usability","weight":5,"title":"Largest Contentful Paint under 2.5s","measures":"LCP from PerformanceObserver on the desktop run.","fix":"Compress and size the hero image, preload the LCP element, and stop render-blocking scripts in <head>.","score":0.5,"status":"warn","value":"not measured","note":"","lost":87.5},{"id":"cls","category":"usability","weight":4,"title":"Cumulative Layout Shift under 0.1","measures":"CLS accumulated during load and the scripted scroll.","fix":"Give images and ad slots explicit width/height, and reserve space for anything injected after load.","score":0.5,"status":"warn","value":"not measured","note":"","lost":70},{"id":"mobile-font-size","category":"usability","weight":4,"title":"No text under 12px on mobile","measures":"Count of visible text elements with a computed font-size below 12px at 390×844.","fix":"Set a base font-size of 16px and keep small print at 12px or larger. Legal text is still text people have to read.","score":0.53,"status":"warn","value":"7 elements under 12px","note":"","lost":65.8}],"results":[{"id":"viewport-meta","category":"usability","weight":5,"title":"Responsive viewport meta tag","measures":"A <meta name=\"viewport\" content=\"width=device-width...\"> tag is present and does not block zooming.","fix":"Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> to <head>. Never set user-scalable=no or maximum-scale=1.","score":1,"status":"pass","value":"width=device-width, initial-scale=1, shrink-to-fit=no","note":"ok"},{"id":"mobile-no-overflow","category":"usability","weight":5,"title":"No horizontal scrolling on mobile","measures":"document.scrollWidth is not wider than window.innerWidth at 390×844.","fix":"Find the element wider than the screen (usually a fixed width, a wide table, or an unwrapped <pre>) and give it max-width:100% or overflow-x:auto.","score":1,"status":"pass","value":"390px content in a 390px viewport (0px)","note":""},{"id":"tap-targets","category":"usability","weight":4,"title":"Tap targets are at least 44×44px on mobile","measures":"Share of visible links/buttons/inputs whose rendered box is at least 44px on its smaller side.","fix":"Give small links and icon buttons padding until they are 44px tall and wide, and leave 8px of space between neighbouring targets.","score":0,"status":"fail","value":"21 of 28 interactive elements are under 44px","note":""},{"id":"mobile-font-size","category":"usability","weight":4,"title":"No text under 12px on mobile","measures":"Count of visible text elements with a computed font-size below 12px at 390×844.","fix":"Set a base font-size of 16px and keep small print at 12px or larger. Legal text is still text people have to read.","score":0.53,"status":"warn","value":"7 elements under 12px","note":""},{"id":"axe-critical","category":"usability","weight":6,"title":"No critical accessibility violations","measures":"axe-core nodes with impact \"critical\" (WCAG 2 A/AA rule set).","fix":"Fix critical axe violations first — they usually block screen-reader or keyboard users entirely.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"axe-serious","category":"usability","weight":4,"title":"No serious accessibility violations","measures":"axe-core nodes with impact \"serious\".","fix":"Serious violations are usually contrast, missing names, or landmark problems — each one is a small, mechanical fix.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"axe-moderate","category":"usability","weight":2,"title":"Few moderate accessibility violations","measures":"axe-core nodes with impact \"moderate\" or \"minor\".","fix":"Work through the moderate list after the critical and serious ones.","score":1,"status":"pass","value":"0 nodes","note":""},{"id":"images-alt","category":"usability","weight":4,"title":"Images have alt text","measures":"Share of <img> elements with an alt attribute (empty alt counts as intentional for decorative images).","fix":"Describe what the image shows, or use alt=\"\" if it is purely decorative. Never leave the attribute off.","score":1,"status":"pass","value":"0 of 5 images have no alt attribute","note":""},{"id":"form-labels","category":"usability","weight":4,"title":"Form inputs have labels","measures":"Share of visible inputs/selects/textareas with a <label>, aria-label or aria-labelledby.","fix":"Wire every field to a visible <label for=\"…\">. Placeholder text is not a label — it disappears the moment someone types.","score":1,"status":"pass","value":"no form fields on the page","note":""},{"id":"button-names","category":"usability","weight":4,"title":"Buttons have an accessible name","measures":"Buttons and role=\"button\" elements with no text, aria-label, title or image alt.","fix":"Give every icon-only button an aria-label describing the action (\"Close menu\", not \"button\").","score":1,"status":"pass","value":"no buttons on the page","note":""},{"id":"heading-order","category":"usability","weight":3,"title":"Heading levels do not skip","measures":"Number of places where the heading level jumps by more than one (h2 → h4).","fix":"Use headings for structure, not size. Style them with CSS instead of skipping levels.","score":1,"status":"pass","value":"0 skipped levels","note":"h1 → h2 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h3 → h2"},{"id":"single-h1","category":"usability","weight":3,"title":"Exactly one H1","measures":"Count of <h1> elements in the document.","fix":"One page, one H1 — it is the page's name. Demote the extras to H2.","score":1,"status":"pass","value":"1 H1 elements","note":""},{"id":"lang-attribute","category":"usability","weight":2,"title":"HTML lang attribute set","measures":"<html lang=\"…\"> is present and non-empty.","fix":"Add lang=\"en\" (or your language) to <html> so screen readers pick the right voice.","score":1,"status":"pass","value":"en","note":""},{"id":"console-errors","category":"usability","weight":3,"title":"No JavaScript errors in the console","measures":"console.error() calls plus uncaught exceptions during load and scroll.","fix":"Open DevTools, reproduce, and fix. Console errors mean something on the page did not run.","score":1,"status":"pass","value":"0 errors","note":""},{"id":"console-warnings","category":"usability","weight":1,"title":"Few console warnings","measures":"console.warn() calls during load and scroll.","fix":"Warnings are usually deprecations or misconfigured third-party scripts. Clear them so real errors stay visible.","score":0.87,"status":"pass","value":"5 warnings","note":""},{"id":"broken-requests","category":"usability","weight":4,"title":"No broken or failing requests","measures":"Sub-resource requests that failed outright or returned 4xx/5xx.","fix":"Every 404 is a missing image, font or script. Fix the URL or remove the reference.","score":1,"status":"pass","value":"0 failing requests","note":""},{"id":"lcp","category":"usability","weight":5,"title":"Largest Contentful Paint under 2.5s","measures":"LCP from PerformanceObserver on the desktop run.","fix":"Compress and size the hero image, preload the LCP element, and stop render-blocking scripts in <head>.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"cls","category":"usability","weight":4,"title":"Cumulative Layout Shift under 0.1","measures":"CLS accumulated during load and the scripted scroll.","fix":"Give images and ad slots explicit width/height, and reserve space for anything injected after load.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"ttfb","category":"usability","weight":3,"title":"Time to First Byte under 800ms","measures":"responseStart − requestStart from the Navigation Timing API.","fix":"Cache pages at the edge, cut slow database queries, and turn on compression.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"load-time","category":"usability","weight":3,"title":"Page finishes loading in under 5s","measures":"The load event, from the Navigation Timing API.","fix":"Defer non-critical scripts, lazy-load below-the-fold images, and drop unused third-party tags.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"consent-overlay","category":"usability","weight":2,"title":"No overlay swallowing the first screen","measures":"Fixed/sticky elements (cookie banners, modals) covering more than 30% of the viewport at load.","fix":"Keep consent and promo banners small and dismissible. Do not cover the content someone came to read.","score":1,"status":"pass","value":"0% of the first screen is covered by an overlay","note":""},{"id":"favicon","category":"usability","weight":2,"title":"Favicon present","measures":"A <link rel=\"icon\"> (or shortcut icon / apple-touch-icon) is declared.","fix":"Add a favicon — it is how people find your tab among twenty others.","score":1,"status":"pass","value":"/favicon.svg","note":""},{"id":"title-length","category":"copy","weight":6,"title":"Page title is 15–60 characters","measures":"Length of <title>.","fix":"Write a title that names the thing and the benefit, in under 60 characters, so search results do not truncate it.","score":1,"status":"pass","value":"37 characters","note":"neu.so | AI agents for every workflow"},{"id":"meta-description","category":"copy","weight":6,"title":"Meta description is 50–160 characters","measures":"Length of <meta name=\"description\">.","fix":"Write one sentence that would make a stranger click. This is the only copy most people read before deciding.","score":1,"status":"pass","value":"156 characters","note":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more."},{"id":"h1-text","category":"copy","weight":5,"title":"H1 says something specific","measures":"The H1 exists and is between 10 and 90 characters.","fix":"Replace \"Welcome\" or \"Home\" with what you actually do for the person reading.","score":1,"status":"pass","value":"29 characters","note":"AI agents for every workflow."},{"id":"word-count","category":"copy","weight":4,"title":"Enough copy to explain the offer","measures":"Visible word count in <body>.","fix":"Under 150 words a stranger cannot tell what you sell, who it is for, or why it is better.","score":1,"status":"pass","value":"723 words","note":""},{"id":"sentence-length","category":"copy","weight":5,"title":"Average sentence under 22 words","measures":"Mean words per sentence across the visible body copy.","fix":"Split long sentences at the first \"and\" or comma. Short sentences get read; long ones get skimmed.","score":0.06,"status":"fail","value":"33.0 words per sentence","note":""},{"id":"reading-level","category":"copy","weight":5,"title":"Reading level at or below grade 12","measures":"Flesch–Kincaid grade level of the visible body copy.","fix":"Swap jargon for the words your customers use. Aim for grade 8–10 on marketing pages.","score":0.67,"status":"warn","value":"grade 12.7","note":""},{"id":"all-caps","category":"copy","weight":3,"title":"No shouting blocks of ALL CAPS","measures":"Visible text blocks of 15+ characters that are entirely uppercase.","fix":"All-caps is 10–20% slower to read. Use weight and size for emphasis instead.","score":1,"status":"pass","value":"0 all-caps blocks","note":""},{"id":"generic-links","category":"copy","weight":4,"title":"No \"click here\" style link text","measures":"Links whose text is a generic phrase (click here, read more, learn more, this, here).","fix":"Make the link text describe the destination — it is what screen-reader users hear out of context.","score":1,"status":"pass","value":"0 generic links","note":""},{"id":"empty-links","category":"copy","weight":3,"title":"No empty links","measures":"Anchors with an href but no text, image alt or aria-label.","fix":"Give the link text, or an aria-label if it is an icon.","score":1,"status":"pass","value":"0 empty links","note":""},{"id":"og-tags","category":"copy","weight":3,"title":"Open Graph tags for sharing","measures":"og:title, og:description and og:image are all present.","fix":"Add og:title, og:description and a 1200×630 og:image so shared links do not look broken.","score":1,"status":"pass","value":"3 of 3 present","note":"title, description, image"},{"id":"https","category":"trust","weight":8,"title":"Served over HTTPS","measures":"The final URL uses the https scheme.","fix":"Get a certificate (Let's Encrypt is free) and redirect all HTTP traffic to HTTPS.","score":1,"status":"pass","value":"https","note":""},{"id":"mixed-content","category":"trust","weight":6,"title":"No mixed content","measures":"Sub-resources loaded over http:// on an https:// page.","fix":"Change every http:// asset URL to https:// (or a protocol-relative path). Browsers block or flag the rest.","score":1,"status":"pass","value":"0 insecure sub-resources","note":""},{"id":"privacy-policy","category":"trust","weight":5,"title":"Privacy policy linked","measures":"A link whose text or href mentions privacy.","fix":"Link a privacy policy in the footer. It is a legal requirement in most markets and a trust signal everywhere.","score":1,"status":"pass","value":"Privacy Policy P P r r i i v v a a c c y y P P o o l l i i c c y y","note":""},{"id":"terms-link","category":"trust","weight":3,"title":"Terms or legal page linked","measures":"A link whose text or href mentions terms, conditions, legal or imprint.","fix":"Add a terms page to the footer alongside privacy.","score":1,"status":"pass","value":"Terms of Service T T e e r r m m s s o o f f S S e e r r v v i i c c e e","note":""},{"id":"contact-link","category":"trust","weight":5,"title":"A way to contact a human","measures":"A contact link, mailto:, or tel: on the page.","fix":"Put a contact route in the header or footer. A site with no way to reach anyone reads as abandoned.","score":0,"status":"fail","value":"not found","note":""},{"id":"about-link","category":"trust","weight":3,"title":"About / who-we-are page linked","measures":"A link whose text or href mentions about, team, or company.","fix":"Add an About link. People buy from people; say who you are.","score":1,"status":"pass","value":"CircleChat A team chat where AI agents plan, route, complete, and verify real work, with people approving every risky st","note":""},{"id":"copyright","category":"trust","weight":3,"title":"Copyright / owner line present","measures":"A © or \"copyright\" string in the visible text.","fix":"Add \"© 2026 Your Company\" to the footer — cheap, and its absence reads as an unfinished site.","score":1,"status":"pass","value":"© 2026 Neu Software LLC. Privacy Policy P P r r i i v v a a c c y y P P o o l l i","note":""},{"id":"social-links","category":"trust","weight":3,"title":"Social profiles linked","measures":"Outbound links to at least one major social network.","fix":"Link the profiles you actually maintain. A dead profile is worse than none.","score":1,"status":"pass","value":"linkedin","note":""},{"id":"canonical","category":"trust","weight":3,"title":"Canonical URL declared","measures":"<link rel=\"canonical\"> is present.","fix":"Declare the canonical URL so duplicate paths and tracking parameters do not split your ranking.","score":1,"status":"pass","value":"https://neu.so/","note":""},{"id":"indexable","category":"trust","weight":4,"title":"Page is indexable","measures":"<meta name=\"robots\"> does not contain noindex.","fix":"Remove noindex from any page you want found. This is the single most common accidental traffic killer.","score":1,"status":"pass","value":"no robots meta (indexable)","note":""},{"id":"redirect-chain","category":"trust","weight":3,"title":"At most one redirect","measures":"Number of redirects between the submitted URL and the final URL.","fix":"Point links straight at the final URL. Each hop costs a round trip and leaks referrer data.","score":1,"status":"pass","value":"0 redirects","note":""},{"id":"http-status","category":"trust","weight":5,"title":"Final response is 200 OK","measures":"HTTP status of the final document response.","fix":"Anything other than 200 means visitors and crawlers are hitting an error or a soft redirect.","score":1,"status":"pass","value":"HTTP 200","note":""},{"id":"cta-above-fold","category":"conversion","weight":8,"title":"A call to action above the fold (desktop)","measures":"At least one button or prominent link with an action verb in the top 900px.","fix":"Put the primary action in the first screen. If a visitor has to scroll to find the next step, most will not.","score":1,"status":"pass","value":"2 found","note":"Book a call B B o o o o k k a a c c a a l l l l | Book a call B B o o o o k k a a c c a a l l l l"},{"id":"cta-mobile","category":"conversion","weight":6,"title":"A call to action above the fold (mobile)","measures":"At least one action button or link visible in the first 844px at 390px wide.","fix":"Mobile hero sections often push the button below the fold. Shorten the headline or move the button up.","score":1,"status":"pass","value":"2 found","note":"Book a call B B o o o o k k a a c c a a l l l l | Book a call B B o o o o k k a a c c a a l l l l"},{"id":"cta-focus","category":"conversion","weight":4,"title":"Between one and five calls to action above the fold","measures":"Count of distinct action buttons/links in the first screen.","fix":"Competing buttons split attention. Pick one primary action and make everything else visually quieter.","score":1,"status":"pass","value":"2 calls to action","note":""},{"id":"cta-wording","category":"conversion","weight":4,"title":"CTA wording is specific, not \"Submit\"","measures":"Above-the-fold CTAs whose text is a vague default (submit, go, ok, click here, more).","fix":"Name the outcome: \"Get my free audit\" beats \"Submit\" — it tells the visitor what happens next.","score":1,"status":"pass","value":"0 of 2 are vague","note":""},{"id":"value-prop","category":"conversion","weight":6,"title":"A value proposition in the first screen","measures":"A heading of four or more words in the top 900px that is not just the brand name.","fix":"State what you do for whom in the first heading. \"Design that ships\" tells me nothing; \"UX audits for SaaS teams in 48 hours\" does.","score":1,"status":"pass","value":"5 words","note":"AI agents for every workflow."},{"id":"lead-capture","category":"conversion","weight":4,"title":"A way to convert on the page","measures":"A form, mailto: link or tel: link exists somewhere on the page.","fix":"Give the visitor something to do — a form, a booking link, a phone number. A page with no next step cannot convert.","score":0,"status":"fail","value":"no form, email or phone link","note":""},{"id":"form-length","category":"conversion","weight":4,"title":"Forms ask for five fields or fewer","measures":"Largest visible field count of any form on the page.","fix":"Every extra field costs conversions. Ask for what you need to make the next contact, and nothing else.","score":0.5,"status":"warn","value":"no forms to measure","note":""},{"id":"social-proof","category":"conversion","weight":5,"title":"Social proof on the page","measures":"Testimonial, review, rating, case-study, client-logo or \"trusted by\" signals in the visible text.","fix":"Add one real quote with a name and a face. Social proof is the cheapest conversion lift there is.","score":0,"status":"fail","value":"none found","note":""},{"id":"speed-conversion","category":"conversion","weight":4,"title":"First screen paints in under 2s","measures":"First Contentful Paint on the desktop run.","fix":"Every extra second before first paint costs conversions. Inline critical CSS and stop blocking render.","score":0.5,"status":"warn","value":"not measured","note":""},{"id":"no-blocking-interstitial","category":"conversion","weight":3,"title":"No pop-up blocking the first visit","measures":"A modal or overlay covering more than 50% of the first screen at load (mobile).","fix":"Delay pop-ups until someone has read something, and never cover the whole screen on mobile — Google penalises it.","score":1,"status":"pass","value":"0% of the mobile first screen covered","note":""}]},"files":{"desktop":{"screenshots":{},"webm":"desktop.webm","mp4":"desktop.mp4"},"mobile":{"screenshots":{},"webm":"mobile.webm","mp4":"mobile.mp4"}},"facts":{"url":"https://neu.so/","finalUrl":"https://neu.so/","https":true,"status":200,"redirects":[],"redirectCount":0,"incompletePasses":[],"desktop":{"device":"Desktop","viewport":{"width":1440,"height":900},"consoleErrors":0,"consoleWarnings":5,"consoleMessages":[{"type":"warning","text":"THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.","url":"https://neu.so/2d36dd80-735fddeeefe567af81bf.js","line":1},{"type":"warning","text":"[.WebGL-0x34c0014be00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","url":"https://neu.so/","line":0},{"type":"warning","text":"[.WebGL-0x34c0014be00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","url":"https://neu.so/","line":0},{"type":"warning","text":"[.WebGL-0x34c0014be00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","url":"https://neu.so/","line":0},{"type":"warning","text":"[.WebGL-0x34c0014be00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)","url":"https://neu.so/","line":0}],"pageErrors":[],"badRequests":[],"mixedContent":[],"redirects":[],"requestCount":24,"bytes":0,"settled":"networkidle","status":200,"finalUrl":"https://neu.so/","navMs":4244,"perf":{},"axe":{"violations":[],"total":0,"error":"no time left in the budget for axe"},"dom":{"title":"neu.so | AI agents for every workflow","metaDescription":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more.","viewportMeta":"width=device-width, initial-scale=1, shrink-to-fit=no","canonical":"https://neu.so/","robots":"","lang":"en","favicon":"/favicon.svg","charset":true,"og":{"site_name":"neu.so","type":"website","url":"https://neu.so/","title":"neu.so | AI agents for every workflow","description":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more.","image":"https://neu.so/og-image.jpg","image:width":"1200","image:height":"630","locale":"en_US"},"h1Count":1,"h1Text":"AI agents for every workflow.","headingSequence":["h1","h2","h3","h3","h3","h3","h3","h3","h3","h3","h3","h2"],"headingSkips":0,"imgCount":5,"imgMissingAlt":0,"linkCount":35,"emptyLinks":0,"genericLinks":0,"formCount":0,"inputCount":0,"inputsWithoutLabel":0,"maxFormFields":0,"buttonCount":0,"buttonsWithoutName":0,"ctas":{"aboveFold":["Book a call B B o o o o k k a a c c a a l l l l","Book a call B B o o o o k k a a c c a a l l l l"],"total":6},"valueProp":"AI agents for every workflow.","trust":{"privacy":"Privacy Policy P P r r i i v v a a c c y y P P o o l l i i c c y y","terms":"Terms of Service T T e e r r m m s s o o f f S S e e r r v v i i c c e e","contact":"","about":"CircleChat A team chat where AI agents plan, route, complete, and verify real work, with people approving every risky st","copyright":"© 2026 Neu Software LLC. Privacy Policy P P r r i i v v a a c c y y P P o o l l i","mailto":"","tel":"","social":["linkedin"]},"socialProof":[],"wordCount":723,"avgSentenceLength":33.04545454545455,"readingGrade":12.655680246447883,"allCapsBlocks":0,"overlayCoverage":0,"tapTargets":null,"smallFontCount":null},"screenshots":{},"video":{"webm":"desktop.webm"}},"mobile":{"device":"Mobile","viewport":{"width":390,"height":844},"consoleErrors":0,"consoleWarnings":1,"consoleMessages":[{"type":"warning","text":"THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.","url":"https://neu.so/2d36dd80-735fddeeefe567af81bf.js","line":1}],"pageErrors":[],"badRequests":[],"mixedContent":[],"redirects":[],"requestCount":24,"bytes":0,"settled":"domcontentloaded","status":200,"finalUrl":"https://neu.so/","navMs":2120,"perf":{"ttfb":91,"dcl":599.8000001907349,"load":null,"fcp":588,"lcp":588,"cls":0,"longTasks":4,"transferSize":15238,"domNodes":1017},"axe":{"violations":[],"total":0,"error":"no time left in the budget for axe"},"dom":{"title":"neu.so | AI agents for every workflow","metaDescription":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more.","viewportMeta":"width=device-width, initial-scale=1, shrink-to-fit=no","canonical":"https://neu.so/","robots":"","lang":"en","favicon":"/favicon.svg","charset":true,"og":{"site_name":"neu.so","type":"website","url":"https://neu.so/","title":"neu.so | AI agents for every workflow","description":"neu.so is an AI studio building agent products and custom AI systems for real-world work: Free LLM API, CircleChat, User Evaluation, Overbrilliant and more.","image":"https://neu.so/og-image.jpg","image:width":"1200","image:height":"630","locale":"en_US"},"h1Count":1,"h1Text":"AI agents for every workflow.","headingSequence":["h1","h2","h3","h3","h3","h3","h3","h3","h3","h3","h3","h2"],"headingSkips":0,"imgCount":5,"imgMissingAlt":0,"linkCount":35,"emptyLinks":0,"genericLinks":0,"formCount":0,"inputCount":0,"inputsWithoutLabel":0,"maxFormFields":0,"buttonCount":0,"buttonsWithoutName":0,"ctas":{"aboveFold":["Book a call B B o o o o k k a a c c a a l l l l","Book a call B B o o o o k k a a c c a a l l l l"],"total":6},"valueProp":"AI agents for every workflow.","trust":{"privacy":"Privacy Policy P P r r i i v v a a c c y y P P o o l l i i c c y y","terms":"Terms of Service T T e e r r m m s s o o f f S S e e r r v v i i c c e e","contact":"","about":"CircleChat A team chat where AI agents plan, route, complete, and verify real work, with people approving every risky st","copyright":"© 2026 Neu Software LLC. Privacy Policy P P r r i i v v a a c c y y P P o o l l i","mailto":"","tel":"","social":["linkedin"]},"socialProof":[],"wordCount":690,"avgSentenceLength":31.545454545454547,"readingGrade":12.223741765480899,"allCapsBlocks":0,"overlayCoverage":0,"tapTargets":{"total":28,"small":21},"smallFontCount":7},"scrollWidth":390,"scrollHeight":6041,"innerWidth":390,"innerHeight":844,"screenshots":{},"video":{"webm":"mobile.webm"}}},"narrative":null}}