Skip to content

Sitewide Technical SEO Audit: samndan.com

Meirowitz & Wasserberg, LLP — Full Domain Analysis

Audit Date: March 6, 2026 Scope: Sitewide — ALL pages (no topic restrictions) Primary Data Source: Screaming Frog SEO Spider 18.5 (full-audit profile, unlimited depth) Supplemental: Browser-based CWV, security header checks, canonical verification Crawl Stats: 5,085 URLs discovered | 612 HTML pages (200 status) | 3,030 internal URLs | 2,055 external URLs


Overall Technical Health Score: 42/100

Crawlability .......... ████████░░  8/10  (15%)
Indexability .......... ███░░░░░░░  3/10  (15%)  ← Railway.app canonical crisis
Response Codes ........ ████████░░  8/10  (10%)
Internal Links ........ ██████░░░░  6/10  (15%)
On-Page Elements ...... ██████░░░░  6/10  (10%)
Structured Data ....... ███░░░░░░░  3/10  (10%)  ← 96% validation error rate
Performance ........... ███░░░░░░░  3/10  (10%)  ← 30MB images, slow TTFB
Security .............. ██░░░░░░░░  2/10  (5%)   ← ALL headers missing
International SEO ..... █░░░░░░░░░  1/10  (10%)  ← Zero hreflang, 404 Spanish pages

Five Critical Findings

  1. 150 pages have canonical tags pointing to Railway.app staging domain — Google may be de-indexing production pages in favor of samndan-production.up.railway.app. Affects /contact/, /case-results/, /video/, and /es/ sections.

  2. ALL 7 security headers are missing — No HSTS, CSP, X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, or Permissions-Policy. Grade F security posture. Server also leaks PHP version and Railway platform details.

  3. 716 images exceed 100KB; top 10 are 10-30 MB each — Uncompressed JPGs uploaded April 2025. The top 10 alone total ~223 MB. Devastating for page speed and Core Web Vitals.

  4. 589 of 612 pages (96.2%) have structured data validation errors — Template-level schema issue affecting nearly every page on the site.

  5. Zero hreflang implementation despite ~40+ Spanish URLs — No language alternate tags, no x-default. Spanish mesothelioma page (/es/mesotelioma/) returns 404.


1. Crawlability (Score: 8/10)

Robots.txt Review

Check Status Notes
robots.txt exists Pass Clean, permissive
Sitemap declared Pass 6 sub-sitemaps referenced
Key pages blocked Pass No important content blocked
Crawl-delay set Pass None set (good)

XML Sitemap

Check Status Notes
Sitemap accessible Pass 6 sub-sitemaps
URLs in sitemap 658
Orphan sitemap URLs 0 All sitemap URLs reachable by crawler
URLs not in sitemap 0 All crawled pages are in sitemap
Sitemap/crawl alignment Perfect 100% match

Crawl Budget Analysis

Factor Count Impact
Thin content pages (<300 words) 130 (21.2%) Medium — mostly /video/ pages
Internal redirects 0 chains, 0 loops None (clean)
Duplicate content 0 exact, 0 near None
Parameter URLs Minimal Low
Noindexed pages 8 (7 sitemaps + 1 contact page) Normal
Crawl depth issues 0 All pages reachable at shallow depth

Assessment: Crawlability is strong. The crawler accessed all 612 HTML pages without obstruction. The sitemap is perfectly aligned with crawled content. The one deduction is for the 130 thin-content pages consuming crawl budget with minimal value.


2. Indexability (Score: 3/10)

CRITICAL: Canonical Tag Crisis

Canonical Status Count %
Self-referencing (correct) 457 74.5%
Pointing to railway.app 150 24.5%
Case-sensitivity redirects 6 1%
Missing canonical 2 <1%

150 pages have their canonical tag pointing to samndan-production.up.railway.app instead of www.samndan.com. This tells Google to treat the Railway staging environment as the authoritative version, potentially de-indexing production pages.

Affected sections:

Section Affected Pages Impact
/video/ pages ~100+ Medium — low-value pages
/contact/ (all locations) 17 High — conversion pages
/es/contacto/ 12 Medium
/case-results/ 6 Critical — trust/E-E-A-T pages
/mass-torts/ (1 page) 1 Low

Root cause: WordPress Site URL or Yoast SEO settings were updated for most pages but not all. Pages last saved/published while the site was on Railway retained the staging canonical. The leak also appears in structured data (BreadcrumbList, primaryimage schemas).

Other Indexability Issues

Issue Count Severity
Case-sensitivity URL variants 6 pairs Medium — e.g., /Mesothelioma/ vs /mesothelioma/
Missing canonical tags 2 pages Low
noindex applied correctly 8 pages N/A (intentional)

Pages missing canonical: - https://www.samndan.com/mesothelioma/contact/ (also noindexed) - https://www.samndan.com/wp-content/uploads/2021/11/2Israel-Monte-Jackson-AG-Letter_w.o.-Exhibits.pdf


3. Response Codes & Redirects (Score: 8/10)

Status Code Distribution (Internal URLs)

Code Count Assessment
200 612 Healthy
301 ~30 internal Normal
302 ~5 internal Should audit
404 3 Low — 2 malformed URLs
5xx 0 Clean

Internal 404s

URL Cause
/nyc-injury/car-accident-lawyer/drunk-driving/href= Malformed href in content — has literal "href=" appended
/?page_id=63782 Old WordPress draft/deleted page linked internally
/fort-lauderdale-inj/fort-lauderdale-injury/motorcycle-accident-lawyer/ury/bicycle-accident-lawyer/ Malformed URL — broken link in content

External 404s from government and news sites (cdc.gov, ilga.gov, nfsi.org, etc.). These should be updated to working URLs or removed.

Redirect Analysis

Type Count Status
Internal redirect chains 0 Clean
Internal redirect loops 0 Clean
302 (temporary) redirects 96 total Mostly external (YouTube, Google Maps, Facebook mobile redirects)
Non-www double redirect Present http://samndan.comhttps://samndan.comhttps://www.samndan.com (2 hops)

Assessment: Internal response codes are very clean — only 3 internal 404s, no chains, no loops. The non-www double redirect is a minor issue. External broken links need periodic cleanup.


Metric Value
Total internal HTML pages 612
Pages without outlinks 0
Pages with high crawl depth 0
Max inlinks to a single page 5,172
Min inlinks to a page 5

Top 10 Most Linked Pages

Inlinks URL Section
5,172 /construction-accident-lawyer/ PI
4,359 /resources/ Blog
4,307 /case-results/ Trust
4,085 /attorney/ About
3,972 /nyc-injury/ PI
3,669 /nyc-injury/premises-liability-lawyer/slip-and-falls/ PI
3,582 /nyc-injury/premises-liability-lawyer/ PI
3,486 /resources/benefits-of-workers-compensation/ Blog
3,479 /nyc-injury/motorcycle-accident-lawyer/ PI
3,395 /chicago-injury/chicago-sexual-abuse-lawyer/ PI

Key observation: The top 10 most linked pages are ALL PI (personal injury) pages or general sections. No mesothelioma page appears in the top 10 most linked, despite mesothelioma being the firm's highest-value practice area.

Bottom 10 Least Linked (Orphan Risk)

Inlinks URL Type
5 /ritawantee-persaud-car-accident/ Case page
5 /site-map/ Utility
5 /video/page/11/ Pagination
5 /video/page/12/ Pagination
5 /colapso-do-condominio-em-surfside-florida-champlain-towers-south/ Portuguese page
5 /israel-jackson-death/ Case page
6 /surfside-florida-condominium-collapse-champlain-towers-south/ Case page
  1. Flat distribution confirmed sitewide — The previous meso-only audit found 17-22 links per page with no hub-spoke differentiation. The full crawl confirms this pattern across ALL 612 pages.

  2. PI pages dominate link equity — Construction accident lawyer gets 5,172 inlinks while mesothelioma hub gets far fewer, despite mesothelioma being the highest-value practice area ($500K+ case value vs. $50K PI).

  3. No crawl depth issues — All pages are reachable within a reasonable number of clicks from the homepage.


5. On-Page Elements (Score: 6/10)

Title Tags

Metric Value Target Status
Pages with titles 612/612 100% Pass
Missing titles 0 0 Pass
Duplicate titles 27 (14 groups) 0 Medium
Avg length 63 chars 50-60 Slightly long
Over 60 chars (truncation risk) 292 (47.7%) <20% High
Under 30 chars 0 0 Pass

Duplicate title causes: Case-sensitivity URL variants (e.g., /Mesothelioma/ vs /mesothelioma/), resource/video pages sharing titles with blog counterparts.

Meta Descriptions

Metric Value Target Status
Pages with meta descriptions 581/612 100% Medium
Missing 31 0 Medium
Duplicate 10 (5 groups) 0 Low
Avg length 141 chars 120-155 Good
Over 160 chars (truncation) 83 (13.5%) <10% Medium
Under 70 chars (too short) 32 <10 Medium

Missing meta descriptions: Concentrated in /resources/ blog posts, /attorney/ bio pages, /video/ index pages, and Spanish attorney pages.

H1 Tags

Metric Value Target Status
Pages with H1 611/612 100% Near-pass
Missing H1 1 0 Low
Duplicate H1 49 (19 groups) 0 Medium

Missing H1: /mass-torts/afff-firefighting-foam-lawsuit/

Duplicate H1 causes: Pagination sharing H1 ("Resources" x5, "Video Resources" x12), case-sensitivity URL variants.

Image Optimization

Metric Count Severity
Images missing alt text 79 Medium
Images over 100KB 716 Critical
Images over 1MB ~50+ Critical
Images over 10MB 10 Critical

Top 5 oversized images:

Size Filename
30.5 MB businesswoman-shaking-hand-of-partner.jpg
29.3 MB concerned-passengers-assisting-elderly-man.jpg
27.6 MB chinese-woman-using-mobile-phone-while-driving.jpg
25.1 MB surgery-team-operating.jpg
24.5 MB insurance-broker-helping-man-with-neck-brace.jpg

All uploaded April 2025 as uncompressed JPGs. The top 10 total ~223 MB. These must be converted to WebP and properly compressed.


6. Structured Data (Score: 3/10)

Schema Coverage

Metric Value
Pages with schema 612/612 (100%)
Pages missing schema 0
Pages with validation errors 589 (96.2%)

Schema Types Deployed

Schema Type Usage
BreadcrumbList Sitewide
WebPage, WebSite Sitewide
LegalService Practice area pages
MedicalCondition Mesothelioma pages
FAQPage Select pages (FL, NJ, PA geo)
VideoObject Video pages
Person Attorney pages
Organization Sitewide
AggregateRating Select pages
Article, CreativeWork Blog posts
PostalAddress, GeoCoordinates Location pages

Validation Issues

96.2% of pages have schema validation errors. The common pattern is 1-2 errors + 0-10 warnings per page, suggesting a template-level issue rather than per-page problems.

Likely root causes: - Missing required properties in LegalService schema - Incorrect or missing fields in BreadcrumbList - Schema references pointing to railway.app (on 150 affected pages) - Spanish pages with inLanguage: "en-US" instead of "es"

Missing Schema Opportunities

Page Type Current Schema Recommended Addition
Attorney bio pages Person Attorney (specialized)
Blog posts with FAQ sections Article FAQPage overlay
Case result pages None specific LegalCase or monetary claim data
Video pages VideoObject Transcript text for SEO
Mesothelioma pages (most) MedicalCondition FAQPage, HowTo

7. Performance & Core Web Vitals (Score: 3/10)

Server Response Times

URL TTFB Total Load HTML Size
/ (homepage) 1,035ms 1,227ms 751 KB
/mesothelioma/ 976ms 1,087ms 447 KB
/nyc-mesothelioma-lawyer/ 835ms 970ms 415 KB
/bronx-injury/ 885ms 1,045ms 442 KB

All pages exceed Google's 800ms TTFB threshold. The site runs on Railway.app (us-east4) behind Cloudflare, but Cloudflare is NOT caching HTML (cf-cache-status: DYNAMIC on all page loads).

Core Web Vitals

Note: PageSpeed Insights API quota was exceeded during testing. The following is based on TTFB measurements and page weight analysis. Full Lighthouse scores require manual testing or a PSI API key.

Metric Estimated Status Evidence
LCP Likely Poor TTFB alone is 835ms-1,035ms before any rendering begins; combined with 10-30MB images, LCP will be severely impacted
CLS Unknown Requires Lighthouse; Elementor pages often have CLS issues from dynamic loading
INP Unknown Requires Lighthouse
FCP Likely Poor TTFB + server rendering time puts FCP well above 1.8s target

Page Weight Issues

Issue Impact
Homepage HTML: 751 KB (uncompressed) Very large — indicates heavy Elementor markup
716 images over 100KB Massive page weight contributor
Top 10 images: 10-30 MB each Single-image page loads of 10MB+
No WebP/AVIF detected All images served as JPG/PNG

Infrastructure

Component Status
CDN Cloudflare (active, but not caching HTML)
Hosting Railway.app (us-east4)
CMS WordPress 6.9 + Elementor 3.34.1
PHP 8.3.30
HTTP version HTTP/1.1 (HTTP/2 not detected)
Caching max-age=14400 (4 hours) on HTML

8. Security & HTTPS (Score: 2/10)

HTTPS Status

Check Status
SSL certificate Active (Cloudflare universal SSL)
HTTP → HTTPS redirect Pass (301 redirect)
Non-www → www redirect Warning — double redirect: http://samndan.comhttps://samndan.comhttps://www.samndan.com
Mixed content Pass — no mixed content detected

Security Headers

Header Status Risk
Strict-Transport-Security (HSTS) MISSING High — browser can be downgraded to HTTP
Content-Security-Policy (CSP) MISSING High — no XSS protection
X-Frame-Options MISSING Medium — vulnerable to clickjacking
X-Content-Type-Options MISSING Medium — MIME sniffing risk
X-XSS-Protection MISSING Low — deprecated but still useful
Referrer-Policy MISSING Low — referrer data leakage
Permissions-Policy MISSING Low — browser features unrestricted

Grade: F — All 7 standard security headers are absent.

Information Disclosure

Header Value Risk
x-powered-by PHP/8.3.30 Medium — reveals server technology
x-railway-edge railway/us-east4-eqdc4a Medium — reveals hosting platform
x-railway-request-id [per-request] Low — debugging info exposed
x-pingback /xmlrpc.php Medium — WordPress attack surface

Recommendations

  1. Enable HSTS via Cloudflare (one toggle in dashboard)
  2. Add security headers via Cloudflare Transform Rules or WordPress plugin
  3. Remove x-powered-by header (php.ini: expose_php = Off)
  4. Disable XML-RPC (WordPress plugin or .htaccess)
  5. Suppress Railway headers in production

9. International SEO (Score: 1/10)

Hreflang Implementation

Check Status
Hreflang tags present NO — zero implementation
x-default tag MISSING
html lang attribute en-US on English pages
html lang on Spanish pages en-US (incorrect — should be "es")
Spanish schema inLanguage "en-US" (incorrect)

Spanish Content Status

Finding Details
Spanish URLs (/es/) ~40+ pages exist
/es/mesotelioma/ Returns 404 — page removed or never published
/es/contacto/ pages Active but canonical points to railway.app
Spanish attorney pages Active, missing meta descriptions
Language alternate tags None on any page

URL Structure for Language Variants

English: www.samndan.com/{page}/ Spanish: www.samndan.com/es/{page}/ Portuguese: 1 page found (/colapso-do-condominio-em-surfside-florida-champlain-towers-south/)

The /es/ subfolder approach is acceptable, but without hreflang tags, Google cannot properly associate English and Spanish page pairs. The result is: - Google may show English pages to Spanish searchers (and vice versa) - Spanish pages compete with English pages for the same keywords - No language consolidation of ranking signals


Content Quality Overview

Word Count Distribution

Range Pages %
<300 words (thin) 130 21.2%
300-1,000 148 24.2%
1,000-2,000 196 32.0%
2,000-3,000 104 17.0%
3,000+ 34 5.6%

Thin content breakdown: - ~85 are /video/ pages (video embeds with minimal text) - ~12 are /video/ pagination pages - Remainder: /in-the-news/, /disclaimer/, /site-map/, some attorney pages

Duplicate Content

Type Count
Exact duplicates 0
Near duplicates 0
Case-sensitivity variants 6 URL pairs

No content duplication issues detected by the crawler.


Priority Action Plan

CRITICAL — Fix Immediately (Week 1)

# Issue Affected Pages Fix
1 Railway.app canonical leak 150 pages Update WordPress Site URL in wp-config.php; re-save all affected pages in WP admin; or use Yoast bulk canonical override. Verify with site:samndan-production.up.railway.app in Google.
2 Oversized images (10-30 MB) 10+ pages Compress top 10 images from 10-30 MB to <200 KB each. Install ShortPixel or Imagify for bulk optimization. Convert to WebP.
3 Malformed internal href attributes 2 pages Fix /nyc-injury/car-accident-lawyer/drunk-driving/href= and /fort-lauderdale-inj/... broken links in page content
4 Staging domain in schema markup 150 pages Fixing canonical (item 1) should also fix schema references to railway.app

HIGH — Fix Within 1 Week (Week 2)

# Issue Affected Pages Fix
5 Add ALL 7 security headers Sitewide Configure via Cloudflare Transform Rules: HSTS, CSP, X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy
6 Remove information disclosure headers Sitewide Suppress x-powered-by (PHP), x-railway-edge, x-pingback headers
7 Bulk image compression 716 images Install image optimization plugin; compress all images >100KB; serve WebP
8 Fix schema validation errors 589 pages Audit template-level schema in Yoast/Schema Pro; fix required properties in LegalService, BreadcrumbList templates
9 Improve TTFB Sitewide Enable Cloudflare HTML caching (currently DYNAMIC); evaluate Railway.app performance; consider server-side caching plugin (WP Super Cache, W3TC)
10 Fix non-www double redirect Sitewide Add http://samndan.comhttps://www.samndan.com direct rule (skip intermediate https://samndan.com hop)

MEDIUM — Fix Within 1 Month (Week 3-4)

# Issue Affected Pages Fix
11 Add hreflang tags All English/Spanish pairs Implement via Yoast or WPML; add x-default to English versions
12 Fix Spanish page lang attributes ~40 pages Set <html lang="es"> and schema inLanguage: "es"
13 Audit /es/mesotelioma/ 404 1 page Either create the Spanish meso page or remove sitemap reference
14 Add missing meta descriptions 31 pages Write descriptions for /resources/, /attorney/, /video/ pages
15 Fix duplicate titles 27 pages Resolve case-sensitivity URL variants via 301 redirects
16 Fix duplicate H1s 49 pages Differentiate H1s on paginated pages; redirect case-sensitivity variants
17 Add missing image alt text 79 images Write descriptive alt text for all decorative and informational images
18 Clean up external broken links 52 URLs Update or remove links to dead .gov and news sites
19 Add video transcripts ~85 /video/ pages Add transcript text to thin video pages (also improves accessibility)
20 Fix title tag truncation 292 pages Trim titles over 60 characters to prevent SERP truncation

LOW — Optimize Next Quarter

# Issue Scope Fix
21 Enable HTTP/2 Sitewide Cloudflare should serve HTTP/2 by default; verify Railway backend supports it
22 Reduce HTML page weight Sitewide Audit Elementor markup; homepage HTML alone is 751 KB
23 Add Attorney schema /attorney/ pages Upgrade from generic Person to Attorney structured data
24 Add FAQPage schema Pages with FAQ content Hub, NYC, veterans pages have FAQ content but no FAQPage schema
25 Audit Portuguese page 1 page /colapso-do-condominio-em-surfside-florida-champlain-towers-south/ — decide keep/redirect
26 Internal link rebalancing Sitewide Shift link equity toward mesothelioma pages; current top 10 most-linked are all PI pages

Implementation Roadmap

Week 1: Emergency Fixes

  • Fix Railway.app canonical leak across 150 pages
  • Compress/replace top 10 oversized images (10-30 MB each)
  • Fix 2 malformed internal href links
  • Remove dead internal link to ?page_id=63782

Week 2: Security & Performance

  • Add all 7 security headers via Cloudflare
  • Remove PHP version and Railway headers
  • Disable XML-RPC
  • Enable Cloudflare HTML caching
  • Install and run bulk image compression (716 images)
  • Fix template-level schema validation errors

Week 3-4: On-Page & International

  • Implement hreflang for all English/Spanish page pairs
  • Fix Spanish lang attributes and schema inLanguage
  • Write 31 missing meta descriptions
  • 301 redirect case-sensitivity URL variants
  • Update 52 external broken links
  • Fix non-www double redirect

Month 2+: Optimization

  • Add video transcripts to thin /video/ pages
  • Trim 292 over-length title tags
  • Upgrade Attorney and FAQPage schema
  • Rebalance internal links toward high-value mesothelioma content
  • Reduce Elementor HTML bloat

Appendix: Crawl Configuration

Setting Value
Spider Screaming Frog SEO Spider 18.5
Profile full-audit
Max depth Unlimited
Max pages 10,000
Render JS No
Respect robots.txt Yes
Export format CSV
Total URLs discovered 5,085
Internal URLs 3,030
External URLs 2,055
HTML pages (200) 612
Crawl duration 724 seconds (12 min)
CSV exports 44 files

Comparison: Previous Audit vs. This Audit

Dimension Meso-Only Audit (Mar 5) Sitewide Audit (Mar 6) Change
Scope 22 meso pages 612 HTML pages (all) 28x wider
Data source Browser checks Screaming Frog crawl Ground truth
Canonical issues found 2 pages (case-results) 150 pages 75x more
Image issues found Not audited 716 oversized, 79 missing alt New finding
Schema errors found Not audited 589 pages (96.2%) New finding
Security headers Not fully audited ALL 7 missing New finding
Hreflang Known missing Confirmed zero + /es/mesotelioma/ 404 Worse than expected
Overall score 5.5/10 (estimated) 42/100 (data-backed) Precise measurement

The sitewide crawl reveals the canonical crisis is 75x worse than the meso-only audit detected. What appeared to be a 2-page issue is actually a 150-page issue affecting entire site sections.


Generated by SEO Conductor — samndan.com Sitewide Technical SEO Audit, March 2026 Data Source: Screaming Frog SEO Spider 18.5 (full-audit profile)