📘 How to Use the Notepad

How to use Seowolf's Notepad, and what each of its tools does — with real SEO examples. New here? Read the Quick Start (two minutes), or jump to any operation below and press Try it to open it in the tool.

How the tool works: Everything runs line by line — one item per line in the editor. Paste your list, then type what you want into the search bar above it (dedupe, sort, domain…) or click one of the suggested fixes. The list changes in place, and every change is kept as a step above the editor — remove any step and the list is recalculated without it, or press Ctrl+Z to undo. Everything runs in your browser; nothing is uploaded, and your list is auto-saved so it survives a refresh. Not sure where to start? Pick a task — each one opens the editor with the right fixes ready to apply.

01🚀 Quick Start

Paste your list

Paste anything into the editor — keywords, URLs, domain names, titles, or any line-based data — or drop a .txt / .csv file onto it. Each line is one item. The bar under the editor counts lines and flags duplicates as you type.

💡 Press Example to try it on a sample keyword list first.

Say what you want done

Click the search bar above the editor (or press Ctrl+K or /) and type what you want: dedupe, lowercase, extract domains, combine. With the bar empty you'll see fixes suggested for your list, your recent operations and every tool grouped by category. The Suggested chips under the bar are one-click fixes worked out from your list — e.g. “Remove 3 duplicates”.

Fill in settings (when needed)

Operations that need input — a word to filter on, a prefix, a second list — open their settings right under the search bar, with a live preview such as “3 lines removed” before you press Apply.

💡 Example: Find & Replace asks for Find and Replace with; Compare two lists operations ask for the second list.

Steps, undo and your result

Your list changes in place and each operation appears as a step chip above the editor. Click ✕ on any step to take just that one out — the list is recalculated from your original — or click the step to change its settings. Copy, .txt and .csv sit under the editor, and Diff shows exactly which lines were added and removed. Reports such as Word Frequency open in a side panel and never change your list.

↑ Contents

03🔁 Steps, Undo & Recipes

Every operation you apply is kept as a step — a chip above the editor. The editor always shows your original text run through the steps, which is what makes each one reversible on its own.

Remove or change a single step

Click ✕ on a step and the list is recalculated from your original without it — you can take out the dedupe you ran three steps ago and keep everything after it. Click the step's name to change its settings.

Undo, redo and the Undo button

Ctrl+Z and Ctrl+Y step backwards and forwards through everything — operations, pastes, clears and typing. The message that appears after an operation also has an Undo button.

Steps & recipes panel

Open Steps & recipes to switch steps off (to see what one does), reorder them or edit them. Save recipe keeps the steps under a name so you can apply the same clean-up to next month's export in one click.

Share a recipe

Copy share link gives you a URL containing the steps — never your list. Whoever opens it gets the recipe ready to apply to their own list.

When you type in the editor

Editing the text by hand merges the current steps into it (the chips disappear because your edit can't be replayed). Undo brings them back if that wasn't what you wanted.

Nothing is lost on refresh

Your list and its steps are saved in your browser as you work and restored when you come back. Saved lists and recipes also live in your browser — nothing is stored on our servers.

↑ Contents

04🧹 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.

Normalize Whitespace

Collapses multiple internal spaces into one and trims the edges — fixes the messy spacing that comes from copy-pasting out of spreadsheets or PDFs.

💡 Fix keyword lists copied from a PDF or scanned document

Remove HTML / BBCode Tags

Strips HTML tags and BBCode markup from every line, leaving only the readable text content behind.

💡 Strip formatting out of a CMS export before reusing the text

Remove Punctuation

Removes commas, brackets, quotation marks and other punctuation, leaving only words and numbers.

💡 Normalise keyword variants that differ only by punctuation

Remove Lines That Are Only Numbers

Removes any line whose entire content is numeric — prices, IDs, years — while leaving lines with mixed text and numbers untouched.

💡 Filter out ID or price columns accidentally pasted into a keyword list

Remove Consecutive Duplicate Lines

Removes a line only when it is identical to the line directly above it. Most useful right after a sort, when duplicates end up sitting next to each other.

💡 Clean a list immediately after sorting, when duplicates end up adjacent

Strip List Markers

Removes bullets and numbering from the start of lines — “1.”, “2)”, “-”, “•”, “*”, “a)”, “[ ]” — left over from copying lists out of documents, emails or slides.

Before
1. running shoes
- trail shoes
• hiking boots
12) socks
a) laces
[x] insoles
plain line
After
running shoes
trail shoes
hiking boots
socks
laces
insoles
plain line

Fix Smart Quotes & Dashes

Turns curly quotes into straight ones, en/em dashes into hyphens, “…” into three dots and unusual spaces (non-breaking, thin) into normal spaces — so lines copied from Word or a CMS match the rest.

Before
“Best” shoes – 2025’s pick…
After
"Best" shoes - 2025's pick...

Remove Invisible Characters

Deletes zero-width spaces, byte-order marks, soft hyphens and control characters you can’t see — the usual reason two identical-looking lines don’t count as duplicates.

Before
run​ning shoes
trail shoes
hik­ing
After
running shoes
trail shoes
hiking

Decode / Encode HTML Entities

Turns &, ", – and similar codes back into the characters they stand for — or the reverse, for pasting text into HTML safely.

Before
Tom & Jerry – "classic"
After
Tom & Jerry – "classic"

Decode / Encode URL Encoding

Turns %20, %2F and + back into spaces and characters (handy for keywords exported from URLs and logs), or encodes lines for use in a URL.

Before
running%20shoes%2Fmen
best+trail+shoes
After
running shoes/men
best trail shoes

Fix Garbled Characters

Repairs text that was saved as UTF-8 but opened as Windows-1252 — “café” back to “café”, “don’t” to “don’t”. Lines that aren’t garbled are left untouched.

Before
café near me
don’t miss
already fine é
After
café near me
don’t miss
already fine é

Remove Emoji

Strips emoji and pictographic symbols from every line and tidies the spaces they leave behind.

Before
great shoes 👟🔥
⭐ top pick ⭐
After
great shoes
top pick

Remove Lines in Other Alphabets

Removes lines written mostly in a non-Latin script (Cyrillic, Chinese, Arabic…) — useful for stripping foreign-language queries out of a keyword export. Accented letters such as é and ñ count as Latin.

Before
running shoes
кроссовки
跑鞋
café de paris
2025
After
running shoes
café de paris
2025
↑ Contents

05🔍 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].

Remove Lines Containing Any Of…

Removes every line that contains any word or phrase from a list — a whole negative-keyword or brand list in one go.

Before
cheap running shoes
best running shoes
free shoe laces
freestyle shoes
After
best running shoes
freestyle shoes

Keep Lines Containing Any Of…

Keeps only lines that contain at least one word or phrase from a list — pull every keyword about your products or topics at once.

Before
trail running shoes
hiking boots
running socks
yoga mat
After
trail running shoes
hiking boots

Keep Lines by Word Count

Keeps only lines with a number of words in the range you set — e.g. 3 to 6 words for long-tail keywords, or exactly 1 for head terms.

Before
shoes
running shoes
best trail running shoes
best waterproof trail running shoes for women
After
running shoes
best trail running shoes

Keep Question Keywords

Keeps lines that are questions — starting with who, what, why, how, can, does, is… or ending in “?” — the raw material for FAQs and People Also Ask content.

Before
how to clean running shoes
best running shoes
are running shoes waterproof
running shoes for flat feet?
After
how to clean running shoes
are running shoes waterproof
running shoes for flat feet?

Remove Near-Duplicates

Removes lines that differ from an earlier one only by capitals, punctuation, plural vs singular, or word order — “running shoe”, “Running Shoes!” and “shoes running” become one. Keeps the first.

Before
running shoe
Running Shoes!
shoes running
trail shoes
trail shoe
After
running shoe
trail shoes

Remove Lines Found Inside Longer Lines

Removes a line when it appears word-for-word inside a longer line of the list — “running shoes” goes if “best running shoes” is there. Leaves only the most specific keywords.

Before
running shoes
best running shoes
shoes
hiking boots
After
best running shoes
hiking boots

Split Brand / Non-Brand Keywords

Keeps either the keywords that mention your brand terms or the ones that don’t — the first split in almost every keyword and Search Console analysis.

Before
nike running shoes
best running shoes
air max review
trail shoes
After
best running shoes
trail shoes
↑ Contents

06➕ 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-us → https://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.

Format Each Line with a Template

Wraps every line in a pattern you write. Use {line} for the line, {n} for its number, {lower}, {upper} or {slug} for converted versions.

Before
running shoes
trail shoes
After
<li>1. running shoes</li>
<li>2. trail shoes</li>

Format as Google Ads Match Types

Formats keywords for Google Ads or Microsoft Ads: "phrase", [exact], all three match types, or as negative keywords. Existing quotes and brackets are cleaned first.

Before
running shoes
"trail shoes"
After
running shoes
"running shoes"
[running shoes]
trail shoes
"trail shoes"
[trail shoes]
↑ Contents

07🔀 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.

Alphabetize Words Within Each Line

Sorts the individual words inside each line alphabetically, which helps surface duplicate phrase variants.

💡 Normalise word order to spot duplicate phrase variants

Sort Naturally (Numbers in Order)

Sorts so numbers inside lines go in numeric order — “page 2” before “page 10”, “size 9” before “size 11” — which plain A→Z sorting gets wrong.

Before
page 10
page 2
Page 1
page 21
After
Page 1
page 2
page 10
page 21

Sort by Domain or Last Word

Sorts URLs by their root domain (so each site’s URLs sit together) or keywords by their last word (so “running shoes”, “trail shoes” and “walking shoes” sit together).

Before
trail shoes
hiking boots
running shoes
wool socks
After
hiking boots
running shoes
trail shoes
wool socks
↑ Contents

08📎 Comparing & Merging Two Lists

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.

Interleave Two Lists

Alternates lines from two lists (A1, B1, A2, B2…), useful for pairing ad headline and description variants.

💡 Pair ad headlines with matching descriptions for a bulk upload

Only in One List (Either Side)

Returns the lines that appear in one list but not the other — your list’s unique lines first, then the second list’s. The two-way keyword gap in one step.

Before
running shoes
trail shoes
hiking boots
After
running shoes
hiking boots
wool socks

Pair Two Lists Side by Side

Joins line 1 of your list with line 1 of the second list, line 2 with line 2, and so on — “old | new” pairs for redirects, keyword | URL mappings, or two columns for a spreadsheet.

Before
/old-shoes/
/old-boots/
After
/old-shoes/ | /shoes/
/old-boots/ | /boots/

Look Up Values from a Table

Like VLOOKUP: for each line in your list, finds it in a “key | value” table (the second list) and adds the value — search volume, a URL, a category — or marks it as not found.

Before
running shoes
trail shoes
socks
After
running shoes | 49,500
trail shoes | 12,100
socks | (not found)
↑ Contents

09🧰 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 feet → After: 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 FEET → After: 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 feet → After: 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 review → After: 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.

Extract Unique Words

Pulls every unique word used across the entire list into a single sorted list — a fast way to map topics.

💡 Map every distinct topic mentioned across a large keyword export

Split List into Batches

Splits a long list into a set number of equal batches, separated by clear headers, ready to hand out across a team.

💡 Divide a huge keyword list evenly across a content team

Convert to camelCase

Converts each line into camelCase, for developers who need keyword lists inside code or JSON.

💡 Convert keyword lists into variable names for a script or API

Convert to snake_case

Converts each line into snake_case.

💡 Generate database-friendly identifiers from a list of labels

Convert to PascalCase

Converts each line into PascalCase.

💡 Convert a list of feature names into class-name format for developers

Find & Replace from a List

Runs many replacements at once from a list of “old | new” pairs — localise keywords, rename products or swap a set of terms in one pass.

Before
running shoes uk
cheap trainers uk
After
running shoes usa
cheap sneakers usa
↑ Contents

10💡 Keyword Research

Operations that generate and label keyword ideas — autocomplete seeds, modifiers, permutations, intent and length tags, and quick topic groups.

Alphabet Soup (Autocomplete Seeds)

Adds each letter a–z (and optionally 0–9) after — or before — every keyword: “running shoes a”, “running shoes b”… Paste the result into an autocomplete scraper or Google to find long-tail ideas.

Example input
running shoes

Add Question & Buying Modifiers

Expands every keyword with the modifiers people actually search with — questions (how to, what is, why…) and/or buying words (best, cheap, review, vs, near me…).

Before
running shoes
After
how to choose running shoes
what are running shoes
why running shoes
where to buy running shoes
when to replace running shoes
which running shoes
are running shoes worth it
running shoes for beginners

Word Order Permutations

Writes every order of the words in each line — “running shoes women” → “women running shoes”, “shoes women running”… Useful for exact-match ad groups and spotting how people phrase things. Lines over 7 words are left as they are.

Before
red running shoes
After
red running shoes
red shoes running
running red shoes
running shoes red
shoes red running
shoes running red

Update Years

Replaces one year with another wherever it appears as a year on its own — “best shoes 2024” → “best shoes 2025” — without touching longer numbers such as model or product codes.

Before
best running shoes 2024
model 20245
2024 buyers guide
After
best running shoes 2025
model 20245
2025 buyers guide

Tag Search Intent

Labels each keyword as informational, commercial, transactional or navigational from the words it contains (how, best, buy, login…). A quick first pass for sorting a list — not a substitute for checking the SERP.

Before
how to clean running shoes
best running shoes
buy running shoes online
nike login
running shoes
After
how to clean running shoes | informational
best running shoes | commercial
buy running shoes online | transactional
nike login | navigational
running shoes | unclear

Tag Head / Body / Long-Tail

Labels each keyword by length: head (1 word), body (2–3 words) or long-tail (4+ words), so you can sort or filter a list by how specific it is.

Before
shoes
running shoes
best trail running shoes
After
shoes | head
running shoes | body
best trail running shoes | long-tail

Group Keywords by Shared Word

Groups keywords under the most common meaningful word they share — every “boots” keyword together, every “socks” keyword together — with a heading and count per group. Quicker and looser than the cannibalization detector.

Before
trail running shoes
hiking boots
waterproof boots
running shoes for women
wool socks
After
=== shoes (2) ===
trail running shoes
running shoes for women

=== boots (2) ===
hiking boots
waterproof boots

… 3 more lines
↑ Contents

11🔗 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=google → After: 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=cpc → After: 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.

Add Trailing Slash to URLs

Ensures every URL ends in a forward slash — useful for normalising a list before deduplicating it.

💡 Normalise a URL list before deduplicating near-identical entries

Remove Trailing Slash from URLs

Strips the trailing slash from every URL in the list.

💡 Match a URL format required by a specific API or import tool

Convert HTTP to HTTPS

Replaces "http://" with "https://" across every line in one pass.

💡 Update an old URL list after a site-wide HTTPS migration

Extract URLs from Text

Scans free-form text and pulls out every URL it finds, one per line.

💡 Pull every link out of a scraped page's raw HTML or text

Extract Email Addresses from Text

Scans free-form text and pulls out every email address it finds, automatically deduplicated.

💡 Pull contact addresses out of a scraped directory or contact page

Build Redirect Rules

Turns old → new URL pairs into 301 redirect rules for .htaccess or nginx, or a CSV. Use lines of “old | new”, or old URLs in the editor and new URLs (same order) in the second list.

Before
https://example.com/old-shoes/ | https://example.com/shoes/
/sale-2023/ | /sale/
After
Redirect 301 /old-shoes/ https://example.com/shoes/
Redirect 301 /sale-2023/ /sale/

Match Old URLs to New URLs

For a site migration: finds the most similar new URL for each old URL by comparing the words in their paths, and outputs “old | new | score” lines ready for Build Redirect Rules.

Example input
https://old.com/blog/best-running-shoes-2023/
https://old.com/about-us.html

Remove Tracking Parameters

Removes only the query parameters you list — utm_*, gclid, fbclid and similar by default — and keeps the ones that change the page, such as ?page=2 or ?colour=red.

Before
https://example.com/shoes?utm_source=news&page=2&gclid=abc#reviews
https://example.com/?ref=nav
After
https://example.com/shoes?page=2#reviews
https://example.com/

Add UTM Parameters

Adds utm_source, utm_medium, utm_campaign (and optionally utm_term / utm_content) to every URL — correctly placed before any #anchor and after any existing parameters.

Before
https://example.com/shoes?size=9#reviews
After
https://example.com/shoes?size=9&utm_source=newsletter&utm_medium=email&utm_campaign=spring%20sale#reviews

Extract Part of a URL

Pulls one part out of every URL: the path, the last segment (slug), the host, the root domain, the subdomain, the TLD, the first folder, the folder depth or the query string. Knows two-part TLDs such as .co.uk and .com.au.

Before
https://shop.example.co.uk/guides/running/shoes.html?x=1
https://example.com/
After
example.co.uk
example.com

Normalise URLs

Makes URLs consistent so duplicates can be found: lowercases the domain, adds or removes www, forces https, collapses double slashes and optionally lowercases the path.

Before
HTTP://WWW.Example.com//Blog//Post
example.com/shoes
After
https://example.com/Blog/Post
https://example.com/shoes

Relative URLs → Absolute

Turns relative links such as /about or ../contact into full URLs using a base address you give — handy for links scraped from HTML.

Before
/about
contact
../shop/
https://other.com/
After
https://example.com/about
https://example.com/blog/post/contact
https://example.com/blog/shop/
https://other.com/
↑ Contents

12📐 SEO Checks & Markup

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.

Build Search Console Regex

Turns your list into a regular expression for the Search Console query or page filter, escaping special characters. Splits into several regexes if one would pass the 4,096-character limit.

Before
running shoes
shoes (mens)
nike
After
(?i)running shoes|shoes \(mens\)|nike

Build a Disavow File

Turns a list of backlink URLs or domains into a Google disavow file: one domain: line per site (or individual URLs), deduplicated and sorted, with a dated header.

Before
https://spam.example.com/page-1
http://www.bad-links.net/x
domain:bad-links.net
After
domain:bad-links.net
domain:spam.example.com

Check Title / Description Pixel Width

Measures each line in pixels the way Google renders it (title: 20px Arial, about 580px shown; description: 14px Arial, about 920px) and tags it OK or TOO LONG. More accurate than counting characters.

Example input
Best Running Shoes 2025 – Tested & Reviewed
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

Build an XML Sitemap

Turns a list of URLs into a valid XML sitemap (duplicates removed, characters escaped), with optional lastmod and changefreq values. Save the output as sitemap.xml.

Before
https://example.com/
https://example.com/shoes?size=9&colour=red
https://example.com/
After
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://example.com/</loc></url>
  <url><loc>https://example.com/shoes?size=9&amp;colour=red</loc></url>
</urlset>

Generate Canonical Tags

Writes a <link rel="canonical"> tag for every URL, with characters escaped for HTML.

Before
https://example.com/shoes/
https://example.com/a?b=1&c=2
After
<link rel="canonical" href="https://example.com/shoes/">
<link rel="canonical" href="https://example.com/a?b=1&amp;c=2">

Build FAQ Schema (JSON-LD)

Turns “Question | Answer” lines into FAQPage structured data, ready to paste into a page’s HTML. Lines without a separator are skipped.

Before
How long do running shoes last? | About 500–800 km.
Are trail shoes waterproof? | Some are — look for a GTX label.
After
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long do running shoes last?",
… 16 more lines

Build Title & Meta Description Tags

Turns “title | description” lines into <title> and meta description tags (with optional Open Graph tags), escaped for HTML and separated by a blank line per page.

Before
Best Running Shoes 2025 | Tested by runners & coaches.
After
<title>Best Running Shoes 2025</title>
<meta name="description" content="Tested by runners &amp; coaches.">

Build robots.txt Rules

Turns a list of paths or URLs into robots.txt Disallow (or Allow) rules for the user-agent you choose, with an optional Sitemap line.

Before
/wp-admin/
https://example.com/cart/
search
After
User-agent: *
Disallow: /wp-admin/
Disallow: /cart/
Disallow: /search

Sitemap: https://example.com/sitemap.xml
↑ Contents

13📊 Analysis Reports

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.

Google SERP Snippet Preview

Renders a Google-style search snippet preview from a Title ||| URL ||| Description formatted line, so you can see how a page will actually look in the results before you publish it.

💡 Preview exactly how a new title and description will look in Google before publishing

Keyword Cannibalization Checker

Groups keywords that share two or more meaningful words, flagging phrases that are likely competing with each other for the same search intent.

💡 Spot near-duplicate keywords competing for the same search intent

Hreflang Tag Generator

Outputs ready-to-paste hreflang <link> tags from a simple URL | language-code list, including the required x-default tag.

💡 Generate hreflang tags for a new multi-region site launch

Phrase Frequency (2- and 3-Word Phrases)

Counts the two- and three-word phrases that recur across your list — where topic clusters and modifiers show up that single-word counts miss.

Example input
best running shoes
cheap running shoes
running shoes for women

Count URLs per Domain or Folder

Counts how many URLs belong to each domain, root domain or top-level folder — see which sites dominate a backlink export or which sections of a site a crawl covers.

Example input
https://a.com/x
https://blog.a.com/y
https://b.org/z

Duplicate Lines Report

Lists every line that appears more than once and how many times (ignoring capitals and extra spaces) — find duplicate titles, descriptions or H1s in a crawl export before you fix them.

Example input
Home
Running Shoes
home
Trail Shoes
HOME
running shoes

Anchor Text Breakdown

Classifies a list of backlink anchor texts as brand, exact-match, partial-match, bare URL, generic (“click here”) or other, with the share of each — a quick over-optimisation check.

Example input
Acme
running shoes
best running shoes for women
https://acme.com
click here
this article

Compare Two Lists (Overlap Report)

Shows at a glance how two lists overlap: how many lines are only in yours, only in the second list, and in both — with the lines in each group.

Example input
running shoes
trail shoes
hiking boots
↑ Contents

14📦 Formats & Sampling

Get a list into the shape another tool needs — HTML, Markdown, JSON, SQL or CSV — or cut it down to a sample or a range of lines.

Convert List to Code Format

Turns the list into an HTML list, a Markdown list, a JSON array, an SQL IN (…) clause or a one-column CSV — with the right quoting and escaping for each.

Before
running shoes
Tom's "trail" shoes
After
[
  "running shoes",
  "Tom's \"trail\" shoes"
]

Take a Sample of Lines

Keeps the first N lines, the last N lines, every Nth line, or N lines picked at random — for spot-checking a huge export or pulling a test set.

Before
a
b
c
d
e
f
After
b
d
f

Keep a Range of Lines

Keeps lines by position — e.g. lines 101 to 200 — counting from 1 and including blank lines, the way an editor numbers them.

Before
one
two
three
four
five
After
two
three
four

Count Repeated Lines

Removes duplicates and tells you how many times each line appeared, most frequent first — “running shoes (4)”. Choose tab-separated output to paste into a spreadsheet.

Before
shoes
boots
shoes
socks
shoes
boots
After
shoes (3)
boots (2)
socks (1)

Split Text into Sentences or Words

Breaks pasted paragraphs into one sentence per line, or one word per line — for auditing copy, building a vocabulary or feeding text into the other operations.

Before
Trail shoes grip better. Road shoes are lighter! Which do you need?
After
Trail shoes grip better.
Road shoes are lighter!
Which do you need?
↑ Contents

15⚡ Pro Workflows

These are step-by-step sequences that combine multiple operations. Each operation you apply stacks up as a step, so you can run a whole workflow in a row — then open Steps & recipes and save it as a recipe to repeat it on the next list in one click.

🔬 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).

Type robots in the search bar and choose Robots.txt / Noindex Tester.

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

Press Open report. 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.

↑ Contents

16⌨️ Shortcuts & Tips

⌨ Keyboard shortcuts

Ctrl+K or / opens the search bar; ↑ ↓ and Enter pick an operation; Esc goes back or closes. Ctrl+Z / Ctrl+Y undo and redo (Cmd on a Mac). Press ? in the tool for a quick reminder.

🔒 Is my list private?

Yes. Every operation runs in your browser, so your keywords and URLs never reach our server. The only exception is if JavaScript is switched off, when a basic form processes the list on the server instead (it isn't stored).

📊 Export as CSV

The .csv button under the editor downloads your list as a two-column CSV (No and Line) ready for Google Sheets or Excel. The Robots.txt and cannibalization reports have their own Export CSV buttons.

📱 On your phone

The editor fills the screen and the Actions button at the bottom opens the search, suggestions and settings as a panel within thumb reach, next to Undo and Copy.

↑ Contents

17🧰 Go Deeper: A Page for Every Tool

Every operation on this page also has its own dedicated article at seowolf.org/notepad/blog/ — one in-depth guide per tool, each with a real before/after example, common marketer use cases, an FAQ, and a small standalone version of that single tool you can try right on the page.

🔗 Jump straight from the tool

Every operation's settings panel has a Guide ↗ link, and every report ends with one — both go straight to that operation's article, no searching needed.

🔍 Browse or search all 75

The blog index lists every article grouped by category (Cleaning, Filtering, Sorting, URL Tools, and so on) with a search box at the top — the same fast way to find a tool as the search bar, just in article form.

🧪 Try before you commit

Each article's mini-tool loads pre-filled with an example relevant to that specific operation and shows a working result immediately — a fast way to understand what a tool does before pasting in your own data on the main page.

↑ Contents
← Back to Seowolf's Notepad
KnownHost