You already know how to open View Source. The problem is doing that on forty template variants after a tag manager migration, or proving that noindex is gone from every landing page in a launch batch. Tab fatigue is real. You need search across HTML, not memory.
This guide covers a simple workflow: build a URL list, pick plain text or regex, choose found vs not-found mode, then export CSV for tickets. The tool is Source Code Search on Scrawl: up to 25 URLs per run, raw HTML only, safe regex limits, and three snippets per page.
When browser search beats a full crawl
Use a URL-list search when:
- You have a known set of URLs from analytics, sitemaps, or a recent deploy log
- You need a single string (GTM container ID, old jQuery path,
rel="canonical"variant) - You want a quick negative check ("this pixel should be gone everywhere")
Open Screaming Frog when you need source code search across an entire crawl under its paid licence. Scrawl's tool does not spider your domain. It only fetches what you paste.
What gets searched
Each URL fetch:
- Follows redirects with the usual safety checks
- Caps HTML at 1.5MB per page
- Searches the raw response (no JavaScript execution)
That means client-rendered tags may be missing from results. If your analytics only appears after React mounts, this search will not see it unless the tag is also in the initial HTML or you paste saved HTML from a rendered capture.
For structured data specifically, pair this with the Schema Checker on sample URLs. JSON-LD lives in script tags; plain text search can find the script block even when you do not parse it.
Plain text vs regex
Plain text is the default. Search for googletagmanager.com/gtm.js, a affiliate network domain, or a retired CDN hostname. Case sensitivity is optional.
Regex helps when IDs change but structure does not: GTM-[A-Z0-9]+, canonical" href="https://example.com, or application/ld\+json.
Regex guardrails in the tool:
- Maximum 200 characters
- Valid regex runs on RE2 (linear time per URL on up to 1.5MB of HTML)
- Nested quantifiers such as
(a+)+and adjacent\w*\w*are rejected before search - If RE2 is unavailable, each URL search runs in a 2 second VM timeout
- Invalid syntax returns a clear error
If regex feels fragile, start plain, note a snippet, then tighten.
Found vs not-found mode
Found lists URLs where the pattern appears at least once. Use this to locate leftovers: old Font Awesome links, duplicate meta robots tags, hard-coded HTTP assets on HTTPS pages.
Not found lists URLs with zero matches. Use this after a cleanup ("confirm UA-12345 is gone on these twenty paths").
Match counts matter. One match might be a comment. Twelve matches on a template might mean a widget duplicated in header and footer.
Build your URL list
Good sources:
- Top landing pages from analytics
- All URLs in a sitemap segment (
/blog/,/products/) - URLs from the Link Extractor export on a hub page (internal only)
Keep batches at 25 URLs. For larger audits, run multiple passes and merge CSV files in a spreadsheet.
Read snippets without fooling yourself
Snippets are trimmed for display. They show context around a match, not the full file. Use them to jump to the right section in DevTools or to paste line references into Jira.
If htmlTruncated appears, the page exceeded 1.5MB. Rare on marketing pages, more common on bloated homepages. Fetch a lighter URL variant or split the audit.
Pair with header and link checks
| Goal | Tool |
|------|------|
| List every <a href> on one page | Link Extractor |
| Response headers and cache policy | HTTP Header Checker |
| JSON-LD validity | Schema Checker |
HTML search finds strings. It does not validate that a canonical is correct, only that a tag exists.
Worked example: post-GTM migration
You moved from GTM-OLD123 to GTM-NEW456.
- Collect 25 high-traffic URLs plus all checkout paths.
- Search plain text for
GTM-OLD123in found mode. Any hit is a miss. - Switch to not-found mode with
GTM-NEW456to see pages missing the new container in HTML. - Download CSV and attach to the migration ticket.
- Spot-check one hit in DevTools to confirm it is not inside a comment.
Mistakes that waste time
- Searching rendered DOM expectations when tags are injected only via JavaScript.
- Regex overreach on minified HTML one-liners. Plain text on a unique ID is faster.
- Treating match count as severity. One
noindexin HTML is enough to matter. - Skipping redirects. The tool reports the final URL after redirects; compare that to your list.
FAQ
How do I search site HTML for a tag?
Paste URLs and the tag string into Source Code Search.
Does it execute JavaScript?
No. Initial HTML only.
How many URLs?
Up to 25 per run.
Regex limits?
200 characters, no nested quantifiers.
Screaming Frog?
Frog source code search runs on full crawls under its paid licence. This tool uses your pasted list.
Search your URL list
Paste URLs, set your pattern, and run Source Code Search. Export CSV when you need proof for a launch checklist or client approval.