📘 How-To Guide

Every operation explained with plain-English descriptions and real SEO examples. Use the contents below to jump to any section.

Contents
How the tool works: Everything runs line by line — one item per line in the Input box. Paste your list, pick an operation from the sidebar, and hit Process (or press Ctrl+Enter). Copy the result, download it as .txt or .csv, or click Use as input to chain multiple operations together. Your input is also auto-saved in your browser so it survives a page refresh.
00🚀 Getting Started
Paste your list

Click inside the big text area and paste anything — keywords, URLs, domain names, titles, or any line-based data. Each line is treated as one item. The line counter in the top-right of the input box updates as you type.

💡 Try the Load Example button to see how a keyword list looks before using your own data.
Pick an operation

Click any button in the Operations sidebar on the right. Use the search box at the top of the sidebar to filter by keyword — type "slug" or "domain" to find tools instantly. The selected operation is highlighted in orange.

Fill in parameters (when shown)

Some operations show extra fields below the input area — a text field, a number, a dropdown. These appear automatically when needed and disappear when not. You never have to hunt for settings.

💡 Example: selecting Find & Replace shows a Find field and a Replace With field. Add Prefix shows one text field for the prefix text.
Work with the result

After processing, the result appears below the input. Use 📋 Copy to copy everything to your clipboard, ⬇ .txt to save as a text file, 📊 .csv to export a spreadsheet-ready CSV, or ↑ Use as input to feed the result back for the next operation.

01🧹 Basic Cleaning

Always start here when you paste raw data from scrapers, exports, or copy-paste from spreadsheets. Messy input gives messy results.

Trim & Remove Empty Lines

Strips invisible spaces from the beginning and end of every line, then deletes any line that ends up empty. This is the single most useful starting operation — run it first on any raw data.

💡 Before:   running shoes  After: running shoes
Remove Blank Lines

Deletes lines that contain only whitespace, without touching the content of other lines. Useful after splitting CSV data or copying from a spreadsheet that left empty rows between entries.

Remove Duplicate Lines (exact)

Keeps only the first time each line appears. The match is character-perfect — Buy Shoes and buy shoes are treated as different lines and both kept.

💡 Use after merging two keyword lists from different tools before you start filtering.
Remove Duplicate Lines (case-insensitive)

Same as above but ignores capitalisation — BUY SHOES, Buy Shoes, and buy shoes are all treated as the same line. The first version found is kept.

💡 Use this when combining keyword lists from different sources where capitalisation varies.
02🔍 Filtering & Extraction

Every filter operation has two modes — Remove (delete matching lines) and Keep (delete everything that doesn't match). Think of Keep as a search within your list.

Remove / Keep Lines Containing…

Type a word or phrase in the field that appears. Every line containing that text is removed or kept. Tick Case insensitive to ignore capitalisation.

💡 Have a list of URLs and want only the blog posts? Use Keep Lines Containing with /blog/. Want to remove all product pages? Use Remove Lines Containing with /product/.
Remove / Keep Lines Starting With…

Only matches at the very beginning of the line. Useful for stripping comment lines, filtering URLs by protocol, or keeping only lines that begin with a specific keyword.

💡 Remove lines starting with # to clean up a robots.txt or config file you've pasted in. Keep lines starting with https:// to isolate absolute URLs.
Remove / Keep Lines Ending With…

Matches at the very end of the line. Great for filtering file types or URL extensions.

💡 Keep lines ending with .html to isolate static pages. Remove lines ending with /feed/ to drop RSS URLs from a crawl export.
Remove / Keep Lines With Digits

One click — no text field needed. Removes or keeps any line that contains at least one number anywhere in it.

💡 Keyword list contains best laptop 2024 and best laptop? Use Remove Lines With Digits to drop the year-specific versions in one click.
Remove Lines Shorter Than… / Longer Than…

Enter a character count. Lines shorter than that number are removed (to kill noise like single words or stop words), or lines longer than the limit are removed (to drop over-stuffed phrases).

💡 Remove lines shorter than 10 characters to filter out single-word keywords. Remove lines longer than 60 to keep only titles that fit in a Google SERP.
Remove / Keep Lines Matching Regex

For advanced users. Type a regular expression (without the surrounding slashes) and toggle case-insensitive matching. Every line that matches the pattern is removed or kept.

💡 Keep only lines that look like email addresses: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}. Remove lines that contain a year between 2000–2029: 20[0-2][0-9].
03➕ Adding to Lines
Add Prefix

Adds your chosen text to the beginning of every line. Whatever you type in the field is glued to the front of each item.

💡 Turn a list of page slugs into full URLs: prefix https://example.com/ to about-ushttps://example.com/about-us. Or prefix buy (with a space) to a product keyword list.
Add Suffix

Adds your chosen text to the end of every line.

💡 Append review to a product list to generate review keyword variants. Append ?utm_source=email to tag a URL list for campaign tracking.
Wrap in Quotes

Puts double or single quote marks around every line. Choose the quote type from the dropdown that appears.

💡 Wrap keywords in double quotes to create phrase-match ready strings for Google search: "best running shoes". Wrap values in single quotes to generate a SQL IN ('val1','val2') list.
Prepend SEO Operator

Adds a Google search operator to the start of every line. Pick from allintitle:, intitle:, inurl:, site:, or link:.

💡 Paste a list of competitor domains and prepend site: to create site:competitor.com queries you can run one by one in Google to check their indexed pages.
Number Lines

Prepends 1., 2., 3.… to every line in order. Instant numbered list — useful for ranking lists, ordered reports, or creating a numbered keyword list to share with a client.

💡 Sort your keywords by length first, then number them to create a prioritised short-to-long keyword list in one sequence.
04🔀 Sorting & Ordering
Sort A → Z / Z → A

Alphabetical sort in either direction. Good for normalising a list before comparing it with another, or for producing a tidy client-ready deliverable.

Sort by Length — Shortest / Longest First

Sorts by the number of characters in each line. Short lines first = head terms at the top. Long lines first = long-tail at the top. Very useful for spotting which keywords are broad vs. specific.

💡 Shortest first quickly separates 1-2 word head terms from 5+ word long-tail phrases — helps you decide which need a landing page vs. a blog post.
Sort by Word Count — Fewest / Most First

Counts the number of words (not characters) in each line and sorts accordingly. Especially useful for keyword clustering — single-word terms at the top, multi-word intent phrases at the bottom.

Shuffle Lines

Randomises the order. Useful for unbiased sampling from a large list, randomising the order of ad copy variations for testing, or anonymising the ranking within a list before sharing.

Reverse Order

Flips the entire list upside down. If you had it sorted A→Z, reversing gives you Z→A without re-running a sort. Also useful if a tool outputs items in ascending order and you want descending.

05📎 List Merging & Set Operations

These four operations work with two lists. When you select one, a second text area appears beneath the first — paste your second list there. The top area is always List 1.

Union — Merge Two Lists

Combines both lists into one. Tick Remove duplicates after union to automatically deduplicate the result. This is the everyday "merge and clean" operation.

💡 You've exported keywords from Ahrefs into List 1 and from SEMrush into List 2. Union + deduplicate gives you one clean master list with no repeats.
Cartesian Product — All Combinations

Creates every possible pairing of one line from List 1 with one line from List 2, joined by a separator (space by default, but you can change it). If List 1 has 5 items and List 2 has 10, you get 50 combinations.

List 1: best, cheap, buy
List 2: running shoes, sneakers

Result:
best running shoes
best sneakers
cheap running shoes
cheap sneakers
buy running shoes
buy sneakers
💡 The fastest way to generate a long-tail keyword list at scale. Use modifiers as List 1 (best, top, cheap, near me, for women) and seed keywords as List 2.
Intersection — Common Lines

Returns only lines that appear in both lists. Lines unique to either list are dropped.

💡 List 1 = your ranking keywords. List 2 = a competitor's ranking keywords. Intersection shows where you're competing head-to-head. These are your battleground terms — prioritise them.
Difference — Only in List 1

Returns lines from List 1 that do not appear in List 2. Lines that exist in both are removed.

💡 List 1 = competitor's keywords. List 2 = your own keywords. The result is your keyword gap — terms they rank for that you don't. Swap the lists to find your exclusive wins.
06🧰 Keyword Tools
Split by Delimiter / Extract Column

Splits each line at a character you specify (comma by default) and keeps only the column at the index you choose. Column numbering starts at 0, so the first column is 0, second is 1, and so on.

💡 You exported a CSV from Google Search Console with columns keyword,clicks,impressions. Set delimiter to , and column to 0 to extract just the keywords in one click.
Convert to Lowercase / Uppercase

Changes every character in every line to lower or upper case. Run Lowercase before deduplicating case-insensitively, or before merging lists from different sources to normalise everything first.

💡 Always lowercase your keyword list before running Remove Duplicate Lines (case-insensitive) to guarantee a clean result.
Convert to Title Case

Capitalises the first letter of every word in every line. Perfect for turning a raw keyword list into page titles, H1 headings, or meta titles without manually editing each one.

💡 Before: best running shoes for flat feetAfter: Best Running Shoes For Flat Feet
Convert to Sentence Case

Lowercases everything, then capitalises only the first letter of each line (and after sentence-ending punctuation like ., !, ?). Ideal for meta descriptions and ad copy.

💡 Before: BEST RUNNING SHOES FOR FLAT FEETAfter: Best running shoes for flat feet
Generate URL Slug

Turns any line of text into a clean, URL-safe slug: lowercased, spaces replaced with hyphens, special characters and punctuation stripped, double hyphens collapsed.

💡 Before: Best Running Shoes For Flat Feet (2024)After: best-running-shoes-for-flat-feet-2024. Paste a list of blog post titles and get all your slugs in one go.
Remove Stop Words

Strips over 80 common English stop words (the, a, an, and, in, of, for, with, is, are, etc.) from every line. What's left is the semantic core of each phrase — the words that actually carry meaning.

💡 Before: what are the best running shoes for flat feetAfter: best running shoes flat feet. Great for extracting topic clusters from a long-tail keyword list.
Strip Digits from Lines

Removes every numeric character from every line. Useful when you want to group keywords by topic regardless of year, model number, or price.

💡 Before: best smartphone 2024 reviewAfter: best smartphone review. Then deduplicate to consolidate year-variants under one topic.
Append Word Count per Line

Adds a [N words] tag to the end of each line. Useful for auditing title lengths or quickly seeing how many words are in each keyword without counting manually.

💡 Result: best running shoes for flat feet [6 words]
Append Char Count per Line

Adds a [N chars] tag to the end of each line. Extremely useful for meta title and description audits — paste your titles, append char count, and instantly see which ones are too long.

💡 Result: Best Running Shoes For Flat Feet [33 chars]. Any line showing over 60 chars needs trimming for Google's title display.
Find & Replace

Replaces all occurrences of a word or phrase with something else across every line. Tick Case insensitive to catch all capitalisation variants.

💡 Localise a UK keyword list for the US market: replace colour with color, tyre with tire. Or replace your old domain name with a new one across a URL list.
07🔗 URL Tools

These operations are built for lists of URLs — from crawl exports, backlink reports, Search Console, or any SEO tool. They all handle both full URLs (https://example.com/page/) and bare paths (/page/).

Extract Domain from URLs

Strips everything except the root domain from each URL. Protocol (https://) and www. are removed. Paths, query strings, and fragments are all dropped.

💡 Before: https://www.example.com/blog/post-1/?utm_source=googleAfter: example.com. Paste a backlink report URL list and get a clean domain list to check in your Domain Authority checker or Whois tool.
Strip URL Path (keep domain)

Keeps the full protocol and domain but removes the path and everything after it. Unlike Extract Domain, this keeps https:// so the results are still clickable URLs.

💡 Before: https://example.com/blog/seo-tips/After: https://example.com. Useful when you need the homepage URLs from a list of deep links.
Strip Query Strings from URLs

Removes everything from the ? (or #) onwards. The path stays intact. Useful for cleaning up crawl exports or analytics reports full of tracking parameters.

💡 Before: https://example.com/page/?utm_source=google&utm_medium=cpcAfter: https://example.com/page/. Run this before deduplicating a URL list to collapse all UTM variants to their canonical URL.
Join Lines → Delimited String

Collapses your entire list into a single line, with each item separated by the delimiter you choose (default: comma). Produces a flat string from a vertical list.

💡 Need a SQL IN clause? Join with , then wrap in quotes → 'keyword1','keyword2','keyword3'. Need a comma-separated value for an AdWords upload? Join is your tool.
Split Delimited String → Lines

The opposite of Join — takes a single line of comma- (or any delimiter-) separated values and explodes it into one item per line. Trims whitespace from each item automatically.

💡 Someone sent you keywords as shoes, boots, trainers, sandals in one line. Split by , and you have a proper line-by-line list ready to process.
Google Sheets Column → Lines

When you copy a column from Google Sheets or Excel and paste it, the values are separated by tab characters. This operation splits on those tabs, giving you a clean one-item-per-line list.

💡 Copy a keyword column from Sheets → paste into the input → run Google Sheets Column → Lines → done. No need to export a CSV first.
08📐 SEO Validators

These two operations are audit tools. Paste a list of titles or descriptions, run the validator, and every line gets tagged instantly — no spreadsheet formulas needed.

Validate Meta Title Length (≤60 chars)

Checks every line against Google's recommended title tag length of 60 characters. Each line gets a status tag prepended showing whether it passes and its exact length.

[OK 45 chars] Best Running Shoes For Flat Feet
[TOO LONG 78 chars] The Definitive Guide to Choosing Running Shoes for People With Flat Feet in 2024
💡 Paste a list of page titles from a crawl export. Every line flagged TOO LONG needs editing before your next site audit or relaunch. Use Keep Lines Containing with TOO LONG afterwards to isolate just the problem titles.
Validate Meta Description Length (≤160 chars)

Same concept but for meta descriptions — Google typically truncates anything over 160 characters in search results. Each line is tagged OK or TOO LONG with its exact character count.

[OK 118 chars] Find the best running shoes for flat feet in our 2024 guide. Expert picks, buying advice and top-rated options reviewed.
[TOO LONG 184 chars] Discover our comprehensive guide to the very best running shoes designed specifically for people with flat feet, including expert reviews, comparison tables and buying tips for 2024.
💡 After validating, use Remove Lines Containing with [OK to strip the passing ones and keep only the descriptions that need shortening.
09📊 Analysis
Show Line Statistics

Displays four numbers about your list: total lines, non-empty lines, total word count, and total character count. No extra inputs needed — just process and read the dashboard.

💡 Useful as a sanity check after merging two lists — confirms you ended up with the number of items you expected. Also handy for estimating content volume (total words across a set of titles).
Word Frequency Report

Counts how often each word appears across all lines in your list, ignoring single letters and sorting by frequency. The result is displayed as a bar chart showing the top words.

💡 Paste 500 keywords and run Word Frequency. If best, cheap, and review dominate, your list skews towards commercial intent — useful insight before you start mapping keywords to content types.
Robots.txt / Noindex Tester

Tests a list of URLs against your robots.txt rules and flags URLs that match common noindex patterns. Two things are checked for each URL:

Robots.txt check: Paste your full robots.txt content into the field that appears. The tool parses all User-agent: * and Googlebot rules and applies Google's longest-match algorithm to each URL. Each URL gets ✓ Allowed, ⛔ Blocked, or – No rules.

Noindex risk check: Even if robots.txt allows a URL, certain URL patterns are commonly noindexed in CMS settings. The tool flags these automatically: tag archives, paginated pages (/page/2/), search results (?s=), author/date archives, RSS feeds, AMP pages, print parameters, WordPress internals, and more.

Input list (top textarea):
https://example.com/blog/
https://example.com/tag/shoes/
https://example.com/page/2/
https://example.com/wp-admin/

Robots.txt field:
User-agent: *
Disallow: /wp-admin/
Allow: /

Results:
/blog/        → ✓ Allowed    | ✓ Clean
/tag/shoes/   → ✓ Allowed    | ⚠ Tag archive
/page/2/      → ✓ Allowed    | ⚠ Pagination
/wp-admin/    → ⛔ Blocked   | ✓ Clean
💡 After a migration, paste your new sitemap URLs as the list and your new robots.txt as the rules — instantly see if any pages you want indexed are accidentally blocked. Export the full report as CSV for your audit document.
10⚡ Pro Workflows

These are step-by-step sequences that combine multiple operations. Use ↑ Use as input after each step to chain operations without copy-pasting.

🔬 Keyword Research Pipeline

Paste raw keyword dumps from Ahrefs, SEMrush, and Google Suggest into the input area.

Run Trim & Remove Empty Lines → clean consistent input.

Run Convert to Lowercase → normalise capitalisation.

Run Remove Duplicate Lines (case-insensitive) → unique set.

Run Remove Lines Shorter Than… (set to 10 chars) → filter stop-word noise.

Run Word Frequency Report → identify your top modifier words.

Run Keep Lines Containing… with a top modifier → focused sub-list.

Run Sort by Word Count (Most First) → long-tail at the top for content planning.

🏗️ Bulk Long-Tail Generator

List 1: your seed keywords (e.g. running shoes, trainers, sneakers).

List 2: intent modifiers (e.g. best, cheap, buy, review, for women, near me, 2024).

Run Cartesian Product → generates every combination.

Run Remove Duplicate Lines (case-insensitive) → clean up any accidental duplicates.

Run Sort by Word Count (Fewest First) → head terms at top, long-tail below.

Run Validate Meta Title Length → check none are too long for a title tag.

🆚 Competitor Gap Analysis

Export your ranking keywords from Google Search Console → List 1.

Export a competitor's top keywords from Ahrefs or SEMrush → List 2.

Run Difference (Only in List 1) → keywords you rank for that they don't. Your exclusive wins.

Swap the lists. Run Difference (Only in List 1) again → keywords they have that you don't. Your opportunity gaps.

On the gap list: run Sort by Word Count (Fewest First) → prioritise shorter, broader gap terms first.

🔗 Backlink Domain Audit

Export your backlink report from Ahrefs or Majestic as a CSV. Paste the URL column into the input.

Run Google Sheets Column → Lines if you pasted directly from Sheets.

Run Strip Query Strings from URLs → clean up any tracking params on the linking URLs.

Run Extract Domain from URLs → get just the root domains.

Run Remove Duplicate Lines (case-insensitive) → unique domain list.

Run Sort A → Z → alphabetical for easy scanning.

Export as CSV → paste into your Domain Authority checker or Whois tool.

📐 Meta Title & Description Audit

Crawl your site with Screaming Frog. Export the Title column as a CSV. Paste the title column into the input (use Google Sheets Column → Lines if pasting from Sheets).

Run Trim & Remove Empty Lines → clean the data.

Run Validate Meta Title Length → every title gets tagged OK or TOO LONG with its length.

Run Keep Lines Containing… with TOO LONG → isolate only the problem titles.

Export as CSV → your title audit deliverable is ready.

Repeat with the Description column and Validate Meta Desc Length.

🤖 Post-Migration Robots.txt Check

Fetch your new site's /sitemap.xml and extract all the <loc> URLs. Paste them into the input (one per line).

Select Robots.txt / Noindex Tester from the Analysis group in the sidebar.

Fetch your live /robots.txt (just open it in your browser and copy-paste the whole thing) into the robots.txt field that appears.

Hit Process. Any URLs showing ⛔ Blocked need investigating — check your robots.txt rules haven't accidentally blocked indexable pages.

Review the ⚠ Noindex Risk column — pagination, tag archives, and author pages flagged here should be verified in your CMS that they actually carry a noindex tag.

Export the full table as CSV → attach to your migration QA document.

11⌨️ Shortcuts & Tips
⌨ Ctrl+Enter to Process

Press Ctrl+Enter (or Cmd+Enter on Mac) anywhere on the page to run the currently selected operation. If no operation is selected a toast message will remind you to pick one. Fastest way to work.

🔁 Chain Operations with "Use as input"

After every result, the ↑ Use as input button loads the output back into the input textarea. This is how you chain operations — clean → deduplicate → filter → sort — all without leaving the page or copy-pasting.

💾 Auto-save

Your input list is automatically saved in your browser's local storage as you type. If you close the tab or refresh the page, your list is restored when you come back. Click 🗑 Clear saved in the toolbar to wipe the saved draft.

🔎 Search Operations

The search box at the top of the sidebar filters operations as you type. Type domain to find all URL tools, case to find case-conversion tools, length to find validators. You don't need to remember which group anything is in.

📊 Export as CSV

The 📊 .csv button in the result area downloads your output as a two-column CSV (No and Keyword) ready to open in Google Sheets or Excel. The Robots.txt tester has its own Export CSV button that includes all four result columns.

📋 Paste from Clipboard

The 📋 Paste button in the toolbar reads directly from your clipboard (your browser will ask for permission once). Saves you clicking into the textarea first.

← Back to Seowolf's Notepad