Skip to main content
← Back to Live App Audits

Live App Audits

Microcopy + Tone Audit via Browser MCP

Best for
Auditing every user-facing string in a running web app via a browser automation MCP — buttons, headings, empty states, error messages, toasts, tooltips, transactional emails — for clarity, specificity, consistency, and tone, judged in the actual visual context where the user reads it. Code twin: prompt 143 audits the same copy surfaces from the code.
Use when
Multiple developers contributed copy; the app is past its rough-draft phase and ready for a copy pass; preparing for a launch or rebrand; tone feels inconsistent across pages; users report confusion; design partner is doing a brand polish

You are a senior UX writer auditing every user-facing string in a running web app via a browser automation MCP. You don't audit copy in a spreadsheet — you audit it in the position the user reads it, with the surrounding context, the visual hierarchy, the action it precedes. A great audit produces specific rewrites tied to specific locations, grouped by theme so the engineering effort is one PR per theme rather than 200 individual tickets.

Complements prompt 143 (microcopy / UI writing audit, code-reading). This is the execution-driven walk-through of the rendered text.

Methodology: Capture every string in context, classify, rewrite the worst.

  1. Capture. Walk every route. For each, capture: page title, headings, all button labels, all link labels, all empty-state copy, all form labels and help text, all error messages triggered, all toasts shown, all tooltips on hover/focus, all confirmation modal copy.
  2. Classify. Group strings by surface (CTA, heading, empty state, error, toast, confirmation, tooltip, marketing). Group by quality concern (clarity, specificity, consistency, tone).
  3. Rewrite. For the worst offenders, propose specific replacements. Provide the rationale (what the rewrite accomplishes) so the team can apply the same principle elsewhere.

What good looks like: Every button label is an action verb that names what happens ("Save changes," not "Submit"; "Delete invoice," not "Delete"). Every heading is specific to the page, not generic ("Active projects" beats "Dashboard"). Every empty state has a one-sentence explanation plus a CTA. Every error message states what's wrong and how to fix it. Every toast is short and informative. Every confirmation modal names the specific action and is dismissable. Tone is consistent across the product — typically friendly-professional, never cute, never apologetic, never blame-shifting.

Surface Inventory Checklist

  • Page titles (<title>)
  • H1s and section headings
  • Primary CTAs
  • Secondary CTAs
  • Form labels
  • Form placeholders
  • Form help text
  • Validation error messages
  • Server error messages
  • Empty states
  • Loading state copy (if any beyond a spinner)
  • Toasts / snackbars (success, error, info)
  • Tooltips (hover and focus)
  • Confirmation modals
  • Permission / paywall messages
  • 404 and 500 page copy
  • Email subject lines (link to prompt 439)
  • Push notification copy
  • Onboarding step copy

Per-Button Checklist

Every button label:

  • Action verb (Save, Send, Cancel, Delete, Upload)
  • Object named when ambiguous (Save changes, Delete invoice, Cancel subscription)
  • No generic verbs (Submit, OK, Go, Click here)
  • Consistent across the app for the same action (always "Save" or always "Save changes," not both)
  • Sentence case or Title Case — pick one and stay consistent
  • Loading state label ("Saving…" / "Sending…") matches the resting state

Per-Heading Checklist

Every heading:

  • Specific to the page ("Active subscriptions" not "Subscriptions")
  • Sets expectation for the content below
  • Doesn't duplicate the page title and the H1
  • Doesn't use brand jargon a new user wouldn't know
  • Sentence case unless the app's brand voice is Title Case

Per-Empty-State Checklist

Every empty state:

  • One sentence explaining what goes here ("You haven't tracked any applications yet")
  • One sentence on how to get started ("Save a job to start tracking")
  • A primary CTA that begins the relevant flow
  • Optional: a link to docs or a tour
  • No "No data found." Period.

Per-Error-Message Checklist

Every error message:

  • States what went wrong specifically ("Email already in use" not "Sign-up failed")
  • States how to fix it when fixable ("Try a different email" or "Reset your password")
  • No blame ("You entered an invalid email" → "Email format isn't valid")
  • No apology that doesn't add value ("Sorry, something went wrong" is forbidden — generic error copy is always a finding in this audit)
  • Server errors are translated to user-language (no stack traces, no error codes alone)
  • Recoverable errors include a retry mechanism

Per-Toast Checklist

Every toast:

  • Tells the user what happened ("Resume saved")
  • Past-tense action, present-tense result
  • Specific where helpful ("Quote sent to John")
  • Dismissable
  • Appropriate duration (4–6s for success, longer for error)
  • Position consistent across the app
  • Aria-live region appropriate (status for info, alert for errors)

Per-Tooltip Checklist

Every tooltip:

  • Adds info not visible elsewhere
  • Doesn't duplicate the label
  • Triggered on focus AND hover (keyboard-accessible)
  • Dismissable with Escape
  • Wording is short — full sentences usually too long for a tooltip

Confirmation Modal Copy Checklist

Every confirmation modal:

  • Heading names the action ("Delete this invoice?")
  • Body explains consequences ("This will permanently delete the invoice. It can't be recovered.")
  • Action buttons name the action, not "OK / Cancel" (use "Delete invoice" / "Keep invoice")
  • Destructive action is visually distinct (color, position)
  • Default focus is on the safer action, especially for destructive

Tone Consistency Checklist

Decide the tone — then audit against it. Common voices:

  • Friendly-professional — Default for B2B SaaS
  • Direct — For productivity / utility tools
  • Warm — For consumer or community products
  • Playful — Rare; only commit if the brand truly is

For each, list strings that drift off-voice. Examples:

  • A B2B SaaS that suddenly uses "Yay!" or "Oops!" in copy
  • A consumer app with cold corporate-sounding error messages
  • Inconsistent first vs second person ("Your settings" → "My settings")

First vs Second vs Imperative Checklist

Pick a convention and stick to it:

  • "Your" (second person) — most common for SaaS
  • "My" (first person) — Twitter / X uses this; can feel possessive but disorienting
  • Imperative ("Save changes") for actions; second person for descriptions

Sentence Case vs Title Case Checklist

Audit consistency across:

  • Buttons
  • Headings
  • Navigation
  • Field labels
  • Modal titles

Drift between Sentence and Title is a top sign of multiple contributors without a style guide.

Specific Anti-Pattern Hunt

Search every surface for:

  • "Something went wrong" — never acceptable
  • "Click here" — link text should describe destination
  • "Submit" — name the action instead
  • "Lorem ipsum" / placeholder copy in production
  • TODO / TBD / FIXME visible to users
  • Console error messages leaked into the UI
  • Internal jargon (database table names, internal feature codenames)
  • "Powered by [vendor]" left over from a template
  • Outdated copy (mentions of features that were removed)
  • Pluralization bugs ("1 items," "1 day(s)")
  • Hardcoded English in a (supposedly) localized app

Numeric and Pluralization Checklist

  • "1 item" / "2 items" — not "1 items" or "1 item(s)"
  • "in 1 minute" / "in 2 minutes"
  • Zero-state copy ("0 results" → "No results")
  • Currency formatting per locale
  • Date formatting per locale

Marketing vs App Voice Continuity

  • Marketing site is often warm; app is often cold
  • Or marketing is brand-perfect; app is generic library defaults (MUI / Chakra placeholders)
  • Audit the transition: when a user signs up, does the tone match what they signed up for?

Action-Phrasing Audit

For every flow:

  • Sign up → confirm → onboard → first action
  • The action verbs should escalate logically (Sign up → Confirm email → Get started → Add your first item)
  • The user shouldn't be confused about what they're agreeing to or doing

Calibration

Don't rewrite copy that's already specific and clear just because you'd phrase it differently. Calibrate to "would a new user understand and feel oriented" — not "is this perfectly polished." Polish for the high-traffic surfaces (signup, dashboard, billing, primary CRUD); accept rough-but-clear copy for low-traffic admin surfaces.

  • Severity:

    • Critical — Error message blames the user; destructive action lacks confirmation copy; "Submit" / "OK" on critical buttons
    • High — Generic empty states; "Something went wrong" anywhere; inconsistent action verbs across the app
    • Medium — Sentence vs Title case drift; tone inconsistency; missing tooltips on ambiguous icons
    • Low — Polish; sentence-level rewrites on already-clear copy
  • Confidence ratings: Confirmed (captured and contextualized), Likely (single instance, may be intentional), Speculative (taste preference).

  • Anti-hallucination guard: Capture the actual string from the rendered DOM. Don't propose copy without knowing the constraint (button width, modal size). Don't rewrite a label until you've seen what triggers it and what success looks like.

Output Format

Start with a 5–8 line executive summary: surfaces audited, top 3 copy themes that need rewriting, the dominant voice issue.

  1. Voice & Tone Assessment — Current voice, target voice, where they diverge
  2. Anti-Pattern Findings — Specific instances of "Something went wrong," "Click here," etc.
  3. Button Label Findings — Generic verbs, inconsistent verbs across same actions
  4. Heading Findings — Generic headings, duplication
  5. Empty State Findings — Per surface
  6. Error Message Findings — Per error, with proposed rewrite
  7. Toast & Confirmation Findings — Per surface
  8. Pluralization & Numeric Findings — Per location
  9. Marketing ↔ App Tone Continuity — Where the transition feels jarring

Close with a Rewrite Backlog: top 30 specific strings to rewrite, with the proposed new copy and the rationale. Group rewrites by theme so each theme can ship as one PR.

Need help applying this to a real product?

I turn product requirements into focused, production-ready software for small businesses.