Research ·
Do small software sites have the pages buyers read before paying? We checked 1,000 launches
Mostly not. Only 15.9% of the sites we reached have any comparison, vs or alternatives page, and 21.2% have a pricing page a crawler finds without JavaScript. Of those pricing pages, 38 of 197 show no price in the HTML.
Findings
Five numbers from 1,000 launch sites
1,000 product sites launched on Show HN in the past year, checked once on 20 Oct 2026 without JavaScript, with text rules checked by hand (see Method). Each figure names its base: the 928 sites we reached, the 197 pricing pages we found, or the 179 pricing pages we could match against a sitemap.
- 15.9%
of the sites we reached have any comparison, “vs” or alternatives page (148 of 928): 85 have a vs page, 74 an alternatives page and 88 a compare page. Some have more than one kind.
- 21.2%
have a pricing page that a crawler finds without JavaScript (197 of 928): 176 through a link on the home page, 21 only at /pricing or /plans. Another 34 have only a #pricing section on the home page.
- 38 of 197
pricing pages show no price in the HTML without JavaScript, not even free-plan wording (19.3%). 18 pricing pages show fewer than 80 words without JavaScript, and that count is a floor.
- 61 of 197
pricing pages describe the price in structured data (31.0%): an Offer, AggregateOffer or Product, or a SoftwareApplication with offers, in JSON-LD.
- 29 of 179
pricing pages are missing from the site’s own sitemap (16.2%), counting the sites where we found a pricing page and could read a sitemap. 3 of 197 pricing pages are marked noindex.
Sites that sell something, approximate
264 of the 928 sites show a sign of selling: a pricing page, a currency amount on the pricing or home page, or free-trial wording. Of these, 197 have a pricing page (about 75%) and 103 a comparison page (about 39%). The 264 carry the noise of the home-page price check, so read them as give or take 15 sites. Of the 197 sites with a pricing page, 87 also have a comparison page (44.2%).
What to do about it
The pages buyers read last, in the HTML
A buyer comparing tools reads a comparison and a price. If your site has neither, or a crawler cannot read them, the comparison the buyer finds is someone else’s. In order:
- Write one comparison page before the next blog post. An alternatives page where you are one option, or a page on you and the tool buyers compare you with. The guide to comparison and pricing pages says what goes on each, with a check for each part.
- Put the price in the HTML. Count the words and look for the price in what your pricing page sends before JavaScript runs. Step 6 of the guide does both in two commands.
- List the pricing page in your sitemap, and make sure it is not noindex. Both are one-line checks (step 7).
- Describe the price in structured data. An Offer with a price and a currency, on the page that shows the price (step 8).
Method
How we checked
- Sample
- Every Show HN post from 21 Oct 2025 to 20 Oct 2026 (UTC) with 10 or more points: 3,842 posts, 3,688 of them with a link. Links to code hosts, app stores, social networks, hosted blogs and free hosting subdomains were removed, leaving one row per host: 1,838 sites. 1,000 were drawn at random with seed 20261021. The median Hacker News score in the sample was 27. The sampling method is the same as in our AI crawler study; the sample was drawn again for this one.
- Checks
- On 20 Oct 2026, between 23:09 and 23:22 UTC. Read-only GET requests, no JavaScript, 8 sites at a time and at most one request per second to any host. For each site: the home page; up to three pricing-page candidates linked from it, then /pricing and /plans if none worked; and the sitemap at /sitemap.xml, or the one named in robots.txt. Our user agent named itself and linked to this site. 928 of 1,000 home pages answered with HTML.
- Definitions
- “Price in the HTML” means a currency amount next to a pricing word (plan, pro, per month, billed and the like) in the visible text without JavaScript, or free-plan wording such as “free plan” or “free forever”. Large figures ($20 billion) and figures next to demo or finance words (revenue, raised, saved) do not count. A “comparison page” is a link on the home page or a URL in the sitemap whose path has vs, versus, compare, comparison or alternatives as a segment of its own, a short “x-alternative” slug, or a path with one of those words that also holds the site’s own name.
- Runs and spot checks
- The heuristics are text rules, so we checked them by eye. Four full runs were made on the same 1,000 sites. After each of the first three we re-fetched 5 random sites per group and fixed what was wrong: the first round found 3 of 5 comparison flags right, the second 3 of 5 pricing pages. Only run 4 is reported. Its spot check: pricing page found, 5 of 5 right; not found, 5 of 5 right; comparison page, 4 of 5 right (the wrong one was a docs page about comparison operators); price on the home page, 18 of 25 snippets right; a price flagged for a site, 3 of 5 right (the two wrong were in blog post titles). A price found on a pricing page held up in every case we checked.
Limits
What this study cannot tell you
- No JavaScript. Every figure is what a crawler that does not run JavaScript sees. A site built as a client-side app shows almost no text and no links, so it counts as “no pricing page found” even if the rendered site has one. That is not the same as “the site has no pricing”.
- Pricing pages found (197) is probably a small undercount. We miss pricing at a path that is neither linked from the home page nor /pricing or /plans, pricing only on another domain such as an app store or a checkout page, and the 34 sites with only a pricing section on the home page.
- JavaScript-only pricing pages (18) is a floor. A guessed /pricing with no readable text cannot be told apart from an app that serves the same shell on every path, so those are not counted. A run without that rule counted 34.
- A price on the home page is an upper bound, so we do not headline it. The check flagged 216 home pages (23.3%), but only 18 of 25 spot-checked snippets were real prices; the rest were figures in demos, calculators and articles. The price on a pricing page (159 of 197) is the solid figure.
- The comparison rule is the stricter one. Any URL matching vs, versus, alternative or compare gives 215 sites (23.2%), but a spot check found that rule wrong on 2 of 5 sites, both blog essays with “x-vs-y” slugs. The stricter rule still counts a few docs and catalog pages, and misses comparisons in a blog that neither name the product nor sit under /vs/, /compare/ or /alternatives/.
- 72 sites could not be reached: 21 DNS failures, 10 TLS errors, 7 timeouts, 13 that answered 403, 429 or 503, as bot protection or rate limits do, 9 other 4xx errors, 4 server errors, 1 answer that was not HTML and 7 other connection errors. They are left out of every base, not counted as “no pricing”.
- Many launches sell nothing. Show HN leans toward developer tools, side projects, games and personal pages, which is why the box above gives the sites that show a sign of selling as a second base.
- Sitemaps are read at /sitemap.xml or from the robots.txt Sitemap line. A sitemap at another path that robots.txt does not name is missed.
- One snapshot, from one location, with one retry on errors.
Data
Download the data
Every count on this page comes from one file of aggregate counts; the spot-check results, the earlier run’s 34 and the margin of 15 come from our notes on the method. The file names no site. Bases: sample_sites, reachable_sites, pricing_page_found, pricing_found_and_sitemap_read and selling_signal_sites; the file’s bases key says which base each count uses.
summary.json
JSON, under CC BY 4.0: use it, quote it and build on it, with credit.
How to cite it
Outcrop (Basalt Studio), “Pricing and comparison pages on 1,000 small software sites”, 21 Oct 2026. https://outcrop.hellobasalt.dev/research/buyer-pages-2026-10/. Data: https://outcrop.hellobasalt.dev/research/buyer-pages-2026-10/summary.json, CC BY 4.0.