Built for law firms and solo attorneys

SEO for Lawyers and law firms.

Justia, Avvo, FindLaw, Nolo, and Cornell LII own every AI answer to "best [practice area] lawyer in [city]". Audit your firm for the LegalService schema, the Attorney + Person entity graph, and the hyper-local content depth that breaks an independent firm out of the aggregator shadow, with state-bar disclosure guidance alongside.

Built for personal-injury, family-law, immigration, criminal-defense, and estate-planning firms: the missing LegalService schema, the entity-graph thinness, and the thin practice-area pages that keep a firm invisible on AI surfaces.

The diagnosis

Why generic SEO advice fails law firms.

Three failure modes we see on roughly nine out of ten law firms we audit. Each is structural to the vertical, not random.

The generic playbook

What is actually true for this vertical

How our audit covers it

Generic playbook

Generic SEO tools ignore the state-bar disclosure surface that bar rules shape and that a careful buyer reads as a credibility signal.

Reality

Many state bars expect a responsible-attorney disclosure, a clear "no attorney-client relationship by visiting" notice, and (for multi-state firms) a notice naming where each attorney is admitted. The exact wording and placement vary by jurisdiction, so these are review points for your firm and its bar counsel, not one universal footer.

Our coverage

Automated review checks on the audited page for the state-bar disclosure points above (responsible-lawyer contact, the attorney-client notice, a jurisdiction notice, a results disclaimer near case outcomes, and attorney authorship), each a first pass for your bar counsel rather than a compliance verdict. The lawyer adapter also raises the entity-graph, LocalBusiness-schema, and NAP findings to HIGH severity. A second-model YMYL cross-check reviews the high-severity findings for language that could read as legal advice.

Generic playbook

Horizontal audits ignore that Justia, Avvo, FindLaw, Nolo, and Cornell LII collectively own 70 percent of the AI citations on legal queries.

Reality

When ChatGPT or Perplexity is asked "best personal injury lawyer in [city]" or "what to do after a DUI in [state]", the cited sources lean overwhelmingly to aggregators plus the Cornell LII statutory text. Firm sites break in only with LegalService + Attorney schema, a complete Person entity graph for each attorney, and a citation-anchored original-commentary post on the specific question.

Our coverage

Equal-weight AI Visibility pillar tracking citation share against the aggregator incumbents (Justia, Avvo, FindLaw, Nolo, Cornell LII), per-engine citation rates for your 25 most important practice-area queries, and the schema + entity-graph gaps that are suppressing your citation rate.

Generic playbook

Classic SEO tools do not check hyper-local content depth on a per-practice-area + per-city matrix, which is the SERP reality for law firm searches.

Reality

A personal-injury firm in Baltimore competes with separate SERPs for "personal injury lawyer Baltimore", "car accident lawyer Baltimore", "slip and fall lawyer Towson", "medical malpractice lawyer Annapolis", "wrongful death lawyer Maryland". Each is a unique SERP. Each needs a unique URL, unique content depth, unique LegalService schema with serviceType set to the right sub-practice.

Our coverage

Topical authority map for legal: per-practice-area + per-city matrix with a recommended page-build queue. Internal-link graph analysis flagging orphan practice-area pages, hub identification for the strongest cluster topics, and link-equity flow to the highest-conversion service pages.

The checks, vertical-tailored

What the audit checks for law firms.

Every audit, on every plan, scores Foundational SEO, Technical SEO, Local SEO and AI Visibility at equal weight. Local SEO always applies here, because a missing address or Maps link is itself a finding. The check definitions are constant; the severity, the recommended fix, the competitor set, and the example code shift per vertical via the adapter.

Foundational pillar

Foundational

Keyword universe, content depth, on-page structure, internal link graph.

  • h1-presence

    Practice-area landing pages should lead with a single H1 in the pattern "[Practice Area] Lawyer in [City] | [Firm Name]". The firm-name-as-H1 pattern surrenders the local-intent click to whoever wrote a stronger H1 above you.

  • passage-extractability

    Every practice-area page should carry one or more 134-167 word "What is [practice area]?", "How long do I have to file?", "What does a [practice area] lawyer cost?" answer blocks co-located under a question-shaped H2 so LLMs can lift the passage verbatim into an answer.

  • outbound-link-quality

    Cite Cornell LII for the statute, the relevant state bar association on the procedural surface, and the relevant federal agency where applicable (NHTSA for auto accident, OSHA for workplace injury, etc.). Outbound authority signals trust on YMYL legal pages.

Technical pillar

Technical

Crawl, render, schema validation, Core Web Vitals, render-parity diff.

  • schema-validation

    LegalService JSON-LD must include serviceType (set to the specific practice area, e.g., "Personal Injury Law"), areaServed (city + state, or a precise legal jurisdiction), and provider as an Attorney reference with a sameAs to the state-bar license verification page.

  • js-render-parity

    Law-firm sites built on WordPress with elementor or a heavy client-side filter for practice-area pages frequently render the actual service descriptions via JS. AI crawlers see the empty version. The audit flags every page where the raw HTML is missing more than 30 percent of the rendered DOM content.

  • core-web-vitals

    Personal-injury and DUI traffic is overwhelmingly mobile (the searcher is often standing on a roadside or in a parking lot). LCP below 2.0s and INP below 200ms are required to keep the high-intent click from bouncing back to the SERP.

Local pillar

Local

On-site local signals: LocalBusiness schema, Maps link, phone and address, service-area pages.

  • local-business-schema

    The audit checks that a LocalBusiness-class type such as LegalService is declared in your JSON-LD. It does not validate the fields. We recommend geoCoordinates, openingHoursSpecification, priceRange ("Contingency basis" is acceptable for personal injury), and a sameAs to your state-bar verification page.

  • nap-consistency

    The audit reads this page for a complete phone, street address, and ZIP code fingerprint. It does not compare your listings on Google, Avvo, Justia, FindLaw, Martindale-Hubbell, your state-bar directory, or the BBB; check those by hand so they match your site exactly.

  • service-area-page-coverage

    The audit detects service-area pages from internal links that follow a /locations/ or /areas/ URL pattern. It does not grade how unique each page is, so write each metro page yourself around local courts, local case law, and local incident statistics rather than boilerplate.

AI Visibility pillar

AI Visibility

AI crawler readability, schema for AI, passage extractability, entity graph.

  • schema-completeness-for-ai

    The lawyer AI graph (LegalService + Attorney + Organization + Person + FAQPage + BreadcrumbList) is the densest in any vertical. AI engines triangulate "best [practice area] lawyer in [city]" answers against this graph, plus a credentialed-author byline.

  • entity-graph

    Per-attorney Person sameAs to LinkedIn, the state-bar member directory, the Justia profile, the Avvo profile, and (where applicable) a Martindale-Hubbell profile. AI engines treat the second-degree attorney entity graph as a primary trust signal on YMYL legal queries.

  • passage-headline-co-location

    A page that lists 8 practice areas, each with a one-sentence summary and an H3 link out, is unextractable for LLMs. Replace with question-shaped H2 + 134-167 word answer blocks per practice area. The page length grows but citation rate roughly triples.

Sample findings

What a Lawyers and law firms finding looks like.

Three illustrative findings in the format a Lawyers and law firms audit produces. Each carries a severity, a confidence flag, and a link to the methodology page that justifies the score.

highconf high

Technical pillar

Practice-area descriptions render only after JavaScript

The raw HTML of your practice-area page carries the navigation but not the service descriptions; they arrive through a client-side page builder. AI crawlers such as GPTBot and PerplexityBot read the raw HTML without running JavaScript, so they see a page with no practice-area content to cite. The fix is to server-render the descriptions or move them out of the client widget.

Methodology →
highconf high

Foundational pillar

LegalService schema absent on 11 of 12 practice-area pages

Practice-area pages publish Organization JSON-LD only. AI engines need LegalService with serviceType set to the specific practice area to surface your firm on "best [practice area] lawyer in [city]" answers. The methodology page includes paste-ready JSON-LD per practice area.

Methodology →
mediumconf medium

Local pillar

Per-attorney Person entity graph thin; only 1 of 4 attorneys has sameAs

Your firm bio pages publish Person JSON-LD but only the founding partner has sameAs to LinkedIn and the state-bar member directory. The other three attorneys have no sameAs at all. AI engines treat the per-attorney entity graph as a primary trust signal on lawyer queries; the fix is one JSON-LD block per attorney plus a Justia + LinkedIn link.

Methodology →

Glossary preview

Five terms every law firm should be able to define.

Full glossary →

Glossary

What is lawyer SEO?

The SEO practice for law firms and solo attorneys. Differs from generic professional-services SEO in four material ways: YMYL category (Google's strictest content-quality standards), state-bar-regulated disclosure surface (mandatory footers and disclaimers), aggregator-dominated AI citation landscape (Justia, Avvo, FindLaw, Nolo, Cornell LII), and hyper-local + hyper-practice-area SERP fragmentation (each metro + practice area combination is a separate competitive landscape).

Read the entry →

Glossary

LegalService schema for law firms

A schema.org JSON-LD type for legal services (a LocalBusiness subtype; it supersedes the older Attorney type). Populate the firm's address and areaServed (city and state), practice areas as specific Service items ("Personal injury", "Family law", "Immigration"), and a Person entity per attorney with a sameAs link to the state-bar license record and the major directory profiles.

Read the entry →

Glossary

Avvo vs FindLaw for AI citation

On "best [practice area] lawyer in [city]" questions, ChatGPT, Claude, and Perplexity often ground answers in legal directories such as Avvo, FindLaw, Justia, Nolo, and Martindale-Hubbell. Which one leads varies by engine and city. Complete, consistent directory profiles corroborate a firm's own site, which earns citations with LegalService and Person markup and citation-anchored practice-area pages.

Read the entry →

Glossary

State-bar disclosure footer

A site-footer disclosure naming the attorney responsible for the site's content, office locations, each attorney's bar admissions with links to the state-bar license record, and any label or disclaimer your state requires. ABA Model Rule 7.2 requires a responsible lawyer's name and contact information, and several states add more. It also gives AI engines a verifiable trust signal on YMYL legal queries.

Read the entry →

Glossary

Cornell LII as legal citation incumbent

The Legal Information Institute at Cornell Law School publishes the U.S. Code, the Code of Federal Regulations, the Federal Rules, Supreme Court opinions, and the Wex legal encyclopedia free at stable URLs. AI engines lean on law.cornell.edu when they need the text of the law. Firm pages that link to the primary text for every statute they explain are easier to verify and to cite.

Read the entry →

Compliance + trust note

Legal is YMYL and bar-rule-regulated, and the rules vary by state. ABA Model Rule 7.2 asks for the name and contact information of a responsible lawyer or firm; many states add more, such as a "no attorney-client relationship by visiting" notice, a jurisdictional notice for multi-state firms, and a prior-results disclaimer near case outcomes. We do not generate or recommend legal advice; we surface the SEO and entity signals that decide your visibility, and a second-model YMYL cross-check reviews the report's high-severity findings for language that could read as legal advice. State-bar compliance is your firm's responsibility.

Every audit for law firms runs 5 automated compliance review checks: Responsible lawyer or firm named with contact information; States where the lawyers are admitted are named; Attorney-client relationship notice where the site invites inquiries; Results disclaimer next to case results; and Named attorney authorship and credentials on legal content. Each one is a first pass, not legal or regulatory advice.

Five questions we hear most from law firms

FAQ.

Does a missing state-bar disclosure hurt my firm on AI surfaces?

We have not measured that, and we will not claim it without receipts. What is documented is the professional-conduct side: bar rules in many states require specific disclosures, so a missing one is a compliance risk before it is an SEO one. The audit runs automated review checks for those disclosures on the page it reads and flags what to take to your bar counsel. What the audit does grade is the schema, entity graph, and content depth that AI engines use to verify a firm.

Why are Justia and Avvo so dominant on AI citations?

Three reasons. First, depth: their per-attorney and per-practice-area schema is comprehensive, with explicit Person + LegalService graphs, and the reviews they show are hosted by them about other firms, not self-reviews. Second, entity-graph density: each attorney profile cross-references state-bar listings, LinkedIn, the firm site. Third, content depth: they answer the most-asked legal questions in question-shaped passages LLMs can lift verbatim. The path for an independent firm to break in is to match the schema + entity-graph density, earn reviews on Google and the legal directories rather than marking up its own, then publish citation-anchored practice-area commentary the aggregators cannot match (because they aggregate, they do not opine).

Will the audit generate language that crosses into legal advice?

It should not, by design: our recommendations are SEO and entity-graph signals (titles, schema, entity graph, page structure), never legal content. As a second line, a second-model YMYL cross-check reviews the high-severity findings on every lawyer audit for language that could read as legal advice. The legal content remains your firm's editorial domain.

How does the audit handle multi-state firms?

Multi-state firms should name where each attorney is admitted, and each attorney's Person JSON-LD should carry a sameAs to every admitting state's bar verification page. The audit runs an automated review check for a jurisdiction notice on the page it reads; it does not compare each attorney's admissions against your practice-area pages, so that comparison stays with your bar counsel.

How long does a lawyer audit take and what does it cost?

The free audit usually takes 2 to 3 minutes and reads 1 page, the one you enter. Paid plans add weekly AI answer tracking on six AI answer engines, from 25 tracked prompts on Starter to 150 on Agency, more pages per audit, history, and PDF reports, white-labeled on Pro and Agency.

Free. No login. Top three findings per pillar visible inline. The full report (typically 45 to 70 findings, vertical-tailored, with evidence and fix per finding) is emailed when you drop an address. Law firms get the audit pre-set to your vertical.