SECURITY · SEO · AI VISIBILITY

Every check we run.One scan.

194 deterministic checks across security, AI exposure, payments, email, production readiness and SEO. Each is evidence-based — reported only when the condition is observed on your live site — and ships with a paste-ready fix.

Prefer to work through it as a pre-launch checklist? See the production readiness checklist.

All checks

Security

Anthropic API Key Exposed

Your Anthropic API key is public, so anyone can make model calls billed to your account.

Open
Security

AWS Access Key Exposed

An AWS access key is exposed.

Open
Security

Cloudinary API Secret Exposed

A Cloudinary URL containing your API secret is public.

Open
Security

Database Connection String Exposed

A database connection string including its password is exposed.

Open
Security

Exposed environment file (.env)

This file is being served to anyone who requests it, and it holds the credentials your application runs on — database…

Open
Security

Exposed git credentials file

A .git-credentials file is publicly served.

Open
Security

Exposed SQL database dump

A SQL database dump is being served to anyone who requests it.

Open
Security

Firebase Realtime Database is publicly readable

Your Realtime Database answers read requests from anyone on the internet, with no authentication.

Open
Security

Firebase Storage bucket is publicly listable

Anyone can list the contents of your Storage bucket without signing in, which means every uploaded file — user docume…

Open
Security

GitHub Token Exposed

A GitHub token is exposed.

Open
Security

Groq API Key Exposed

A Groq API key is public.

Open
Security

Hugging Face Token Exposed

A Hugging Face access token is public.

Open
Security

Supabase Row Level Security is not enabled

This table answers unauthenticated read requests from anyone on the internet.

Open
Security

npm Access Token Exposed

An npm access token is public.

Open
Security

OpenAI API Key Exposed

Your OpenAI API key is public, so anyone can make model calls billed to your account.

Open
Security

Perplexity API Key Exposed

A Perplexity API key is public.

Open
Security

Private Key Exposed

A private key is exposed.

Open
Security

PyPI API Token Exposed

A PyPI API token is public, allowing an attacker to publish releases of your Python packages.

Open
Security

Replicate API Token Exposed

A Replicate API token is public.

Open
Security

Resend API Key Exposed

A Resend API key is public, letting anyone send email from your verified domain.

Open
Security

SendGrid API Key Exposed

A SendGrid API key is public, letting anyone send email AS your verified domain — passing your SPF and DKIM checks, s…

Open
Security

Slack API Token Exposed

A Slack API token is public.

Open
Security

Stripe Secret Key Exposed

A live secret key for your payment provider is readable in your public JavaScript.

Open
Security

Stripe Webhook Signing Secret Exposed

Your Stripe webhook signing secret is public.

Open
Security

Subdomain takeover

`{host}` still points at {vendor}, but the resource behind it is gone — {vendor} is serving its "nothing here" page.

Open
Security

Supabase Service Role Key Exposed

Your Supabase service_role key is public.

Open
Security

xAI API Key Exposed

An xAI (Grok) API key is public.

Open
Security

A redirect parameter sends visitors to any URL it is given

The {listed} parameter takes a destination and redirects to it without checking where it points.

Open
Security

A response sets a session cookie and allows shared caching

This page returns {listed} in a `Set-Cookie` header while its `Cache-Control` says `{cache_control}`, which permits a…

Open
Security

A sign-in form puts the password in the URL

A form on this page collects a password and submits it to {form_action} with `method="get"`, which puts the password…

Open
Security

A sign-in form sends passwords over an unencrypted connection

A form on this page collects a password and posts it to {form_action} — an explicit `http://` address, so the submiss…

Open
Security

Anyone can sign up with an email address they do not own

Your Supabase project allows public signups while email confirmation is turned off, so an account is active the momen…

Open
Security

Exposed .git Directory

Your .git directory is publicly served, which means your entire source code and its full commit history can be recons…

Open
Security

Exposed config file containing credentials

A configuration file holding credential fields (such as a password, secret, or database connection string) is publicl…

Open
Security

Exposed docker-compose file

Your docker-compose file is publicly readable.

Open
Security

Exposed internal/monitoring endpoint

An internal endpoint that should never be public is reachable without authentication and is returning real data.

Open
Security

Exposed version-control directory

A version-control metadata directory (Subversion, Mercurial, or Bazaar) is publicly served.

Open
Security

HTTP is not redirected to HTTPS

Your site is served over HTTPS, but a visitor who types the address without it still gets a plain-HTTP response.

Open
Security

Mapbox Secret Token Exposed

A Mapbox SECRET token (sk.) is in your client-side code.

Open
Security

Missing Content-Security-Policy header

Without a Content-Security-Policy, any script that reaches your page runs with full access to it — including anything…

Open
Security

Overly Permissive CORS with Credentials

This endpoint reflects any origin back in Access-Control-Allow-Origin while also allowing credentials.

Open
Security

Session Cookie Missing 'HttpOnly' Flag

This session cookie is readable by JavaScript, so any script that runs on your page can steal it — including one inje…

Open
Security

Session Cookie Missing 'Secure' Flag

This session cookie is sent over plain HTTP as well as HTTPS.

Open
Security

Slack Incoming Webhook URL Exposed

A Slack incoming webhook URL is public.

Open
Security

Stripe Restricted Key Exposed

A Stripe restricted key (rk_live_) is public.

Open
Security

TLS certificate does not validate

The certificate served for {host} does not validate ({reason}).

Open
Security

TLS certificate expiring

Your TLS certificate has expired.

Open
Security

CSP allows 'unsafe-eval'

A medium-severity security check ShipReady runs against your live site.

Open
Security

CSP allows 'unsafe-inline' scripts

A medium-severity security check ShipReady runs against your live site.

Open
Security

CSP script-src allows an overly permissive source

A medium-severity security check ShipReady runs against your live site.

Open
Security

Directory Listing Enabled

This directory returns an index of its contents instead of a page, so anyone can browse the files it holds rather tha…

Open
Security

Error page leaks a stack trace

Your error page returns a raw stack trace to visitors.

Open
Security

Exposed Debug or Config Endpoint

This endpoint is reachable without authentication and returns internal detail — environment configuration, routes, or…

Open
Security

GraphQL introspection is enabled in production

Your GraphQL API will describe its own schema to anyone who asks.

Open
Security

Insecure (http) resources loaded on a secure page

This page is served over https but loads one or more resources over plain http.

Open
Security

Missing or permissive X-Frame-Options header

Any site can load yours inside an invisible frame, overlay its own buttons, and capture the clicks your users think t…

Open
Security

Missing Strict-Transport-Security header

Strict-Transport-Security tells a browser to refuse plain HTTP for your domain, even before it makes the request.

Open
Security

Potential Secret or Private Token Exposed

A value that looks like a credential is assigned to a variable named as a secret, token, or password in code the brow…

Open
Security

Public Supabase Storage bucket

Anyone can list the contents of this Storage bucket without signing in, so every file it holds can be enumerated and…

Open
Security

Server still accepts a deprecated TLS version

Your server still completes connections over {listed}.

Open
Security

Session Cookie Missing 'SameSite' Attribute

Without SameSite, browsers attach this session cookie to requests made from other sites.

Open
Security

Session Cookie Uses 'SameSite=None' Without 'Secure'

This cookie asks to be sent on cross-site requests (SameSite=None) but is not marked Secure.

Open
Security

Third party script missing SRI

Your page loads JavaScript from {cdn} with no `integrity` attribute, so the browser runs whatever that URL returns wi…

Open
Security

Your API documentation is publicly reachable

{paths} serves {served} to anyone who asks, with no authentication.{console} What this exposes is not one endpoint b…

Open
Security

Exposed .DS_Store file

A macOS .DS_Store file is being served.

Open
Security

Exposed JavaScript Source Map

This source map is publicly readable, so your original source — including comments, internal file paths and any logic…

Open
Security

Invalid Referrer-Policy value

Your Referrer-Policy header is set to a value browsers do not recognise, so they ignore it and fall back to their def…

Open
Security

Missing or invalid X-Content-Type-Options header

Without nosniff, browsers guess at a file's type when the declared one looks wrong.

Open
Security

Missing Referrer-Policy header

Without a Referrer-Policy, browsers send your full URL — path, query string and all — to every external site your pag…

Open
Security

Response header discloses a software version

Your {header_name} header advertises an exact version ({value}).

Open
Security

Strict-Transport-Security is missing includeSubDomains

HTTPS is enforced for this hostname but not for its subdomains.

Open
Security

A stylesheet loads without an integrity check

Your page loads CSS from {cdn} with no `integrity` attribute, so the browser applies whatever that URL returns withou…

Open
Security

Weak Strict-Transport-Security max-age

Your HSTS header is present but expires soon, so the protection lapses for anyone who has not visited recently.

Open
Email

More than one DMARC record is published

`_dmarc.{domain_label}` publishes {duplicate_count} separate DMARC records.

Open
Email

Multiple SPF records published

`{org_domain}` publishes {value} separate SPF records.

Open
Email

MX record points to a hostname with no address

{scope} MX host{value} `{org_domain}` publishes resolve{value} to neither an A nor an AAAA record, so a sending serve…

Open
Email

SPF explicitly authorizes any server to send mail

The SPF record on `{org_domain}` ends in an `all` mechanism that resolves to a pass — either written as `+all`, or as…

Open
Email

The contact address on your site cannot receive mail

Your site publishes “{address}” as a way to reach you, and {cause} Anyone who writes to it gets a bounce, and you nev…

Open
Email

BIMI logo could not be fetched

The BIMI record at `default._bimi.{org_domain}` points to {logo_url}, but it could not be retrieved ({reason}).

Open
Email

BIMI record has no usable logo location

The BIMI record at `{name}` is missing an `l=` tag, or its value is not an HTTPS URL — BIMI requires the logo locatio…

Open
Email

DKIM key is published but revoked

The DKIM record at `{name}` exists but its `p=` tag is empty, which per RFC 6376 means the key has been explicitly re…

Open
Email

DKIM public key is not valid base64

The DKIM record at `{name}` has a `p=` tag that is not valid base64, so the public key it is supposed to hold cannot…

Open
Email

DMARC record has no usable policy

The DMARC record on `{domain_label}` {policy_problem}.

Open
Email

Domain sends email but cannot receive it

`{org_domain}` publishes an SPF record, so it sends mail — but it has no MX record, so nothing can deliver mail back…

Open
Email

Email configuration incomplete

`{org_domain}` is missing {value} of the records that make its email trustworthy: {listed}.

Open
Email

MTA-STS policy file could not be fetched

`{org_domain}` publishes an MTA-STS TXT record, so it has declared intent to use MTA-STS, but the policy file at {pol…

Open
Email

MTA-STS policy file is malformed

`{org_domain}` publishes an MTA-STS TXT record, so it has declared intent to use MTA-STS, but the policy file at {pol…

Open
Email

No DKIM signature configured

Your SPF record shows mail is sent through {provider}, but the DKIM key {provider} publishes at `{value}._domainkey.{…

Open
Email

No DMARC record found

`{org_domain}` publishes no DMARC policy, so receiving mail servers have no instruction on what to do with messages t…

Open
Email

No SPF record found

`{org_domain}` publishes no SPF record, so there is no list of servers authorised to send mail on its behalf.

Open
Email

SPF record contains an unrecognized term

The SPF record on `{org_domain}` contains {value} term{value} that match no valid SPF mechanism or modifier — most of…

Open
Email

SPF record exceeds the 10 DNS-lookup limit

The SPF record on `{org_domain}` contains {lookups} mechanisms that each cost a DNS lookup to evaluate (include, a, m…

Open
Email

SPF record says nothing about servers it does not list

The SPF record on `{org_domain}` {explanation}, so a server that matches none of the mechanisms in it gets the result…

Open
Email

BIMI logo does not look like an SVG

The BIMI record at `{name}` points to {logo_url}, which fetched successfully but its content does not look like an SV…

Open
Email

DKIM record declares an unrecognized key type

The DKIM record at `{name}` sets `k={value}`, which is not a key type any mail receiver recognizes (the registered va…

Open
Email

DMARC has no aggregate reporting address

The DMARC record on `{domain}` has no `rua=` tag, so receivers that support DMARC reporting have nowhere to send thei…

Open
Email

DMARC policy applies to only part of your mail (pct < 100)

The DMARC record on `{domain}` enforces `p={policy}` but with `pct={pct}`, so only {pct}% of messages that fail authe…

Open
Email

DMARC policy is set to 'none'

A DMARC record exists on `{domain_label}` but its policy is `p=none`, which only asks receivers to report failures —…

Open
Email

DMARC reports are sent to a domain that has not authorised them

The DMARC record on `{domain}` asks receivers to send its reports to {listed}, which is outside your own domain.

Open
Email

DMARC treats subdomains more leniently than the domain itself

The DMARC record on `{domain}` sets `p={policy}` for the domain but `sp={subdomain_policy}` for its subdomains, and s…

Open
Email

Eligible for BIMI but not configured

`{org_domain}` already enforces DMARC (p={dmarc_policy}), which is the hard prerequisite for BIMI — publishing a BIMI…

Open
Email

Eligible for MTA-STS but not configured

`{org_domain}` already enforces DMARC (p={dmarc_policy}), so the domain authenticates who is allowed to send as it —…

Open
Email

MX host has no reverse DNS (PTR) record

{scope} MX host{value} `{org_domain}` publishes {value} no PTR record for any of its addresses.

Open
SEO & AI Visibility

Your robots.txt tells search engines to stay out of the whole site

robots.txt contains a root `Disallow: /` that applies to {engines}, so {subject} instructed not to crawl any page on…

Open
SEO & AI Visibility

Your site tells search engines not to index it

This page carries a `noindex` directive in {source}, which instructs Google and every other search engine to leave it…

Open
SEO & AI Visibility

AI assistants are blocked from reading your site

Your robots.txt disallows {value} AI crawler{value}, so those assistants cannot read your pages and cannot cite you w…

Open
SEO & AI Visibility

Canonical URL points to a different domain

This page's canonical tag points to `{netloc}`, a different site.

Open
SEO & AI Visibility

Page declares more than one canonical URL

This page carries {value} canonical tags naming different URLs.

Open
SEO & AI Visibility

Page title tag is empty

This page has a `<title>` element with nothing in it.

Open
SEO & AI Visibility

Several pages share the same title

{count} of the pages we crawled serve an identical `<title>`.

Open
SEO & AI Visibility

Sitemap is published but lists no URLs

The sitemap at {sitemap_url} parses correctly but contains no entries, so it tells search engines and AI crawlers not…

Open
SEO & AI Visibility

Sitemap is served but cannot be parsed

Your site serves a sitemap at {sitemap_url}, but {reason}.

Open
SEO & AI Visibility

Sub-page canonicalises to the homepage

This page declares the homepage as its canonical URL, which tells search engines it is a duplicate of the homepage an…

Open
SEO & AI Visibility

Your CDN blocks AI crawlers before they reach your site

Requesting your homepage as an ordinary browser returns {status_code}, but requesting the same URL as GPTBot returns…

Open
SEO & AI Visibility

Article does not declare its author or publication date

This page presents itself as an article but declares no {value} in its markup.

Open
SEO & AI Visibility

Meta description is long enough to be truncated

This page's meta description is {value} characters.

Open
SEO & AI Visibility

No canonical URL declared

This page declares no canonical URL, so search engines have to guess which address is the real one when the same cont…

Open
SEO & AI Visibility

No mobile viewport declared

The page declares no viewport meta tag, so mobile browsers fall back to rendering it at desktop width and scaling it…

Open
SEO & AI Visibility

No social preview image

No og:image is declared, so any link to your site shared on Slack, X, LinkedIn, Discord or iMessage renders as a bare…

Open
SEO & AI Visibility

No structured data found

The page publishes no JSON-LD structured data, so search engines and AI assistants have to infer what your product is…

Open
SEO & AI Visibility

Page has no H1 heading

This page has no H1, so nothing in the markup states what it is about in one line.

Open
SEO & AI Visibility

Page title is long enough to be truncated in search results

This page's title is {value} characters.

Open
SEO & AI Visibility

Several pages share the same meta description

{count} of the pages we crawled serve an identical meta description.

Open
SEO & AI Visibility

Sitemap has not been updated in over a year

Every dated entry in the sitemap at {sitemap_url} is older than a year — the most recent `lastmod` is {value}.

Open
Compliance & Privacy

A device-fingerprinting script is present

This page loads a device-fingerprinting library.

Open
Compliance & Privacy

A form collecting personal data submits via GET

A form on this page uses method=GET and collects personal data (for example an email address).

Open
Compliance & Privacy

No privacy policy link found

No link to a privacy policy was found on the homepage, and the conventional paths (/privacy, /privacy-policy) did not…

Open
Compliance & Privacy

Session-replay or behaviour-recording script is present

This page loads {recorder}.

Open
Compliance & Privacy

Tracking cookie is set before the consent banner can be answered

This page shows a consent mechanism, and an analytics or advertising tracking cookie was already set by the very firs…

Open
Compliance & Privacy

Tracking cookie is set on the first response

An analytics or advertising tracking cookie is set by the server on the first response, before the visitor has intera…

Open
Compliance & Privacy

Analytics or advertising tracker loads without a detected consent step

This page loads {trackers}, and this scan saw no consent banner, consent-management platform, or consent-mode signal…

Open
Compliance & Privacy

Fonts are loaded from Google's servers

This page loads web fonts directly from Google's servers (fonts.googleapis.com / fonts.gstatic.com).

Open
Compliance & Privacy

No terms of service link found

No link to a terms of service was found on the homepage, and the conventional paths (/terms, /terms-of-service) did n…

Open
Compliance & Privacy

Third-party content is embedded on the page

This page embeds content that loads from a third party (for example a video, a map, or a chat widget).

Open
Compliance & Privacy

Your privacy policy does not appear to name a service the site uses

This site loads {listed}, and the privacy policy at {policy_url} does not appear to mention it by name or by the comp…

Open
Compliance & Privacy

Your privacy policy gives no way to contact you

The privacy policy at {policy_url} contains no email address, no mailto: link, and no link to a contact page, so a re…

Open
Production Readiness

A development build is being served to real visitors

A medium-severity production readiness check ShipReady runs against your live site.

Open
Production Readiness

Missing Basic HTML Metadata

Pages without a title, description or Open Graph image are rendered by search engines and social platforms from whate…

Open
Production Readiness

Page says it does not exist but returns a success status

This page returns HTTP 200 while its {where} reads “{text}”.

Open
Production Readiness

Placeholder template content is still live on the site

This page still shows {value}.

Open
Production Readiness

Production build points at localhost

Your published JavaScript contains {value}.

Open
Production Readiness

Production build references a staging or preview environment

Your published JavaScript references {value}, which is a non-production deployment rather than this site.

Open
Production Readiness

Shipped JavaScript logs sensitive data to the browser console

Your production JavaScript contains console logging that prints values named as credentials ({value}).

Open
Production Readiness

Unedited Scaffold Branding

Your page title is still the default your framework generated.

Open
Production Readiness

Missing Proper 404 Status Code

Requests for pages that do not exist return a success status instead of 404.

Open
Production Readiness

Missing robots.txt

Without robots.txt, crawlers work from defaults: they cannot find your sitemap, and you have no way to keep them out…

Open
Production Readiness

No sitemap is discoverable

A sitemap tells search engines which pages exist and when they changed, rather than leaving them to discover everythi…

Open
Production Readiness

The site has no browser-tab icon

The homepage declares no icon and /favicon.ico is not served, so browsers fall back to a blank placeholder in the tab…

Open
Content & UX

AI assistant response text left in the page

This page contains text that reads like an assistant's reply about writing the page rather than the page itself.

Open
Content & UX

Broken internal link

{count} {noun} on this site point at pages that do not load.

Open
Content & UX

Legal page placeholder

This page is a legal document your visitors are asked to accept, and it still contains fields nobody filled in.

Open
Content & UX

Pricing contradiction

Two pages state different prices for “{plan_name}”: {lower_price} on one and {higher_price} on the other.

Open
Content & UX

Unrendered template variable on the page

This page shows template syntax where a real value should have been substituted, so a visitor reads the placeholder i…

Open
Content & UX

A placeholder contact address is published on the site

The address “{address}” is at a domain that ships inside templates rather than one you own.

Open
Content & UX

Dead link target

The “{label}” link on this page has no destination — its href is “{value}”, and there is no script attribute on it to…

Open
Content & UX

Unremoved builder attribution

This site still carries {provider} attribution.

Open
Content & UX

Outbound links lead to pages that are gone

{count} {noun} on this site point at pages on other sites that return 404 or 410.

Open
Content & UX

Stale copyright year

The footer reads {latest} and it is {current}.

Open
Performance

A JavaScript bundle is large enough to make the page feel slow

`{script_path}` is {script_size} {basis}, several times what a well-built entry bundle costs.

Open
Performance

An image is large enough to be slowing the page down

`{path}` is {size}.

Open
Performance

Real visitors wait too long to see your main content

Largest Contentful Paint measures how long it takes for the biggest thing on screen — usually your hero image or head…

Open
Performance

The page is served without compression

The HTML document is sent with no Content-Encoding (gzip, Brotli, or similar), so every visitor downloads the full un…

Open
Performance

The page is slow to respond when people tap or click

Interaction to Next Paint measures the delay between a visitor acting — a tap, a click, a keypress — and the screen c…

Open
Performance

The page moves under people while it loads

Cumulative Layout Shift measures how much the page jumps around as it loads.

Open
Performance

Build assets are served without caching

A hashed, build-immutable asset (its filename changes when its contents change) is served with no long-lived Cache-Co…

Open
Performance

Images have no width and height

One or more images set neither a width nor a height attribute, so the browser does not know how much space to reserve…

Open
Performance

Several scripts block the page from rendering

The document head loads three or more external scripts with neither async nor defer, so the browser must stop, downlo…

Open
Performance

The page is reached through a chain of redirects

Loading this URL followed three or more redirects before arriving at the final page.

Open
Accessibility

Embedded frames have no title

One or more visible <iframe> elements have no title attribute.

Open
Accessibility

Form fields have no associated label

One or more form fields (input, select, or textarea) with an id have no matching <label>, and no aria-label, aria-lab…

Open
Accessibility

Image buttons have no text alternative

One or more <input type="image"> buttons have no alt text.

Open
Accessibility

Images have no text alternative

One or more images on this page have no alt attribute.

Open
Accessibility

The page does not declare a language

The <html> element has no lang attribute.

Open
Accessibility

The page prevents pinch-to-zoom

The viewport meta tag disables or caps zoom, so visitors cannot pinch to enlarge the page.

Open
Accessibility

The page refreshes or redirects itself on a timer

A <meta http-equiv="refresh"> reloads or redirects this page after a delay.

Open
Accessibility

Heading levels are skipped

The heading outline jumps a level (for example an h2 followed directly by an h4, with no h3 between).

Open
Accessibility

Headings have no text

One or more headings (h2–h6) contain no text.

Open
AI Exposure

Secret published through a browser-exposed environment variable

`{name}` is compiled into JavaScript that every visitor downloads, so its value is public.

Open
AI Exposure

AI provider client is configured to run in the browser

Your client-side JavaScript creates an AI provider client with `dangerouslyAllowBrowser` enabled.

Open
AI Exposure

Exposed AI tooling config that can contain credentials

This {tool} file is publicly readable.

Open
AI Exposure

MCP server is reachable without authentication

An MCP server is responding at {url} to requests carrying no credentials (HTTP {status}).

Open
AI Exposure

AI system prompt is hardcoded in the browser bundle

Your client-side JavaScript contains the system prompt for an AI feature.

Open
AI Exposure

Exposed AI Tooling Config File

This {tool} file is publicly readable.

Open
AI Exposure

AI builder fingerprint exposed

A low-severity ai exposure check ShipReady runs against your live site.

Open
AI Exposure

AI widget missing SRI

Your page loads {vendor}'s AI widget from its CDN with no Subresource Integrity (`integrity`) attribute, so the brows…

Open
AI Exposure

AI endpoints are reachable from your client code

Your client-side JavaScript references first-party AI/LLM API routes, which means anyone who reads the bundle knows t…

Open
Payments

A payment form submits over an unencrypted http:// connection

A form on this page collects {what} and posts them to {action} — an explicit `http://` address, so the submission is…

Open
Payments

Card details are collected by your own page, not a hosted payment field

This page contains its own input fields for {value}, so the card number is typed into markup you serve rather than in…

Open
Payments

Payment test mode key

Your published JavaScript contains {marker}, so payments on this site are being sent to {provider}'s test environment.

Open
Payments

Working discount codes are compiled into the browser bundle

Your published JavaScript contains {value} discount code{value} with their values, in {where}.

Open
Payments

A PayPal order is priced in the browser

This page creates the PayPal order in client-side JavaScript, with the amount written into `purchase_units` before th…

Open
Payments

Both live and test Stripe keys are shipped to the browser

Your client bundle contains both a live (`pk_live_`) and a test (`pk_test_`) Stripe publishable key.

Open
Payments

Checkout price is submitted from a hidden form field

A checkout form on this page carries the price in a hidden field named `{field}` and submits it to {endpoint}.

Open
Payments

Checkout request sends an amount built in the browser

Client-side JavaScript on this page sends a request to `{endpoint}` carrying a `{field}` value in its body.

Open

Run all 194 against your site

ShipReady scans up to ten pages and reports what it finds, with a paste-ready fix for each. Free, no signup.