Surfer SEO
A weekend of work, and real gaps remain.
Scores a draft against the pages already ranking for your keyword and tells you what to add: terms, headings, length, structure.
Build me the content optimisation tool I actually need instead of Surfer SEO. Be clear about the honest bit: **the scoring is simple statistics, and getting the search results is the hard part.** Everything below is arranged around that. STACK - Node 20+ with Fastify, server-rendered HTML with a little vanilla JS - SQLite through better-sqlite3, WAL mode - Caddy in front THE DATA MODEL - queries: id, keyword, locale, device, fetched_at - results: id, query_id, position, url, title, fetched_at, html_snapshot_id - pages: id, url, word_count, headings_json, terms_json, fetched_at - drafts: id, query_id, title, body_md, score, scored_at - Snapshots kept, so a score computed today is reproducible next month GETTING THE RESULTS, WHICH IS THE CONSTRAINT - Search engines block automated queries. **Say this out loud rather than writing a scraper that works for a week and then silently returns nothing** - The workable options, in order: paste the top ten URLs by hand for the query you care about; use a search engine that offers an interface for this; or fetch from an engine that permits it - Whatever the source, cache aggressively and refetch on a stated interval. This data changes slowly - If a fetch fails, the tool must say the analysis is stale rather than score against nothing THE ANALYSIS, WHICH IS ARITHMETIC - Extract main content from each ranking page — readability-style extraction, not the whole HTML, or your term model is full of navigation - Term frequencies across the set, TF-IDF against a general corpus to find what is distinctive to this topic - Median word count, heading depth and count, and the questions that appear as headings across several results - **Report ranges, not targets.** 'Between 1,400 and 2,300 words' is true; '1,847 words' is false precision that makes writers do stupid things SCORING A DRAFT, CAREFULLY - Coverage of the distinctive terms, structure against the observed range, and the questions answered - **Never score on keyword density.** It has not been a ranking factor for a very long time and optimising for it produces text no human wants to read, which is the actual thing search engines measure now - Show what is missing as suggestions with the evidence — 'six of the ten ranking pages have a section on pricing' — rather than as a number to chase WHAT TO REFUSE TO BUILD - An automatic writer that fills the gaps. It produces exactly the thin, over-optimised content that recent search updates were built to remove, and it will cost you the traffic you are trying to get WHAT MATTERS MOST Ranges instead of targets, and evidence behind every suggestion. This category's failure mode is writers following a number off a cliff.
What you lose
- Search results crawled for you, at scale, without being blocked
- A term model built from a large corpus
- Guidance a writer can follow without understanding it
- Editor integrations that score as you type
If you would rather not build
- Reading the ten ranking pages yourself, which is genuinely competitive
- A term frequency script over pasted URLs, which is an afternoon
- Search Console data, which says what you already rank for
The escape hatch
open source · no votes, no paid placement
Readability
$0Extracts the main content from a page; the input to any term model.
mozilla/readabilityfree · open source
Screaming Frog alternatives — Katana
$0Fast crawler for gathering pages to analyse.
projectdiscovery/katanafree · open source
Why this verdict
our own opinion · changed only by a person
52/100
Verdict kinda at 52: the statistics are easy, the search data is the obstacle. The refusal to chase density or auto-generate is the advice that keeps a site out of trouble.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Surfer SEO
answered from the record above
Is Surfer SEO free?
No — the plan we track is $99 a month. Essential at $99/month billed monthly, around $79 annually.
Can you replace Surfer SEO by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 52 out of 100, build time a weekend. Read what you lose before you decide.
How much does Surfer SEO cost?
$99 a month on Essential — $1,188 a year. Recorded 14 Aug 2026.
What do you lose by replacing Surfer SEO?
Search results crawled for you, at scale, without being blocked; A term model built from a large corpus; Guidance a writer can follow without understanding it; Editor integrations that score as you type. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Surfer SEO?
Yes: Readability, Screaming Frog alternatives — Katana. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

