The Double Space Project, and the crawler that hunts double spaces for it
For as long as I can remember, double spaces have stood out to me like a sore thumb. I write code for a living, and in code a stray space gets caught by a linter long before anyone reads it. Text that's meant to be read by lots of people doesn't get that treatment, so the double spaces just... stay there. Once you've seen one, you can't unsee it.
Back in January 2025 I bought doublespaceproject.com, drew a logo in MS Paint
(two ␣ glyphs, it's still the logo) and put up a placeholder page. Then it sat there for a while. This month
it finally became a real site, and it got its own crawler to fill it up.
The concept
The Double Space Project is a museum of unnecessary double spaces. Every entry is an exhibit: the quote with each double space marked in red, a screenshot as evidence, where it was found and when. Think of it as a proofreader's desk: cream paper, black ink and a red pen.

A few ground rules keep it fun instead of mean:
- Two or more spaces in a row, in something published, is a catch.
- Every entry is reviewed by a human before it goes up.
- We name the publication, never the person who typed it. We shame spaces, not people.
- Want something removed? Just ask.
Anyone can submit a catch they spotted in a book, on a lecture slide or on a website. Submissions land in a moderation queue, and I get a ping on Discord for each one.
And yes, I know: "two spaces after a full stop is correct!" It was, on typewriters, where every letter was the same width. Modern typesetting has used a single space for decades. That's also why the after-a-full-stop habit isn't what the site is about. The interesting ones are the gaps in the middle of a sentence, where nobody meant to put them.
How do double spaces even survive on the web?
You'd think the web would be immune. Plain HTML folds a run of spaces into one, no matter how many you type in the source. The page source of any website is full of doubles that nobody ever sees.
The catch is WYSIWYG editors. Type two spaces in WordPress, or most other CMS editors, and it quietly saves the
second one as , a non-breaking space. Those don't get folded, so the gap ends up on screen. This means the
natural habitat of the double space is any site where people write in a CMS: news sites, blogs, government
pages, help centers and corporate privacy policies.
Meet spacehound
Finding these by hand doesn't scale, so the site has its own crawler: spacehound. It's what caught almost every exhibit currently on the site. It runs 24/7 in my homelab, and its whole job is to read pages that lots of people read and sniff out double spaces that a visitor can actually see.
The important bit is "can actually see". Grepping the HTML for two spaces gives you thousands of false
positives, so spacehound looks with a real browser instead. Every page is rendered in headless Chromium, and a
small script measures every whitespace run on the page, character by character, using Range.getClientRects().
Only gaps that really show up on screen count.
That alone still finds a lot of things that aren't really double spaces, so every find goes through a set of curation rules before a human ever looks at it:
- Mid-sentence only. There have to be two real words on either side of the gap, checked against English and Dutch word lists. Menus, tables, code blocks, aligned columns and the typewriter habit after a full stop are ignored.
- Icons are not gaps. An icon that fails to load can leave two spaces around an empty hole. spacehound checks the raw HTML for images, SVGs and icon elements in the gap, and renders the page a second time with every image loaded before it believes a gap is real.
- Templates count once. The same sentence in a footer on 400 pages of one site is one exhibit, not 400.
- Only where people read. Wikipedia pages need at least 1,000 monthly views, and archive pages, URLs with a pre-2018 year in them and anything with "archived" in the title are skipped.
- One find per page, the best one.
Whatever survives ends up in a review dashboard. Approving a find publishes it straight to the site through its
API, together with a full screenshot of the page as a visitor sees it. Every exhibit also links to the exact spot
on the original page with a #:~:text= deep link, which has to keep the spaces exactly as they are, otherwise the
fragment matches nothing.

Where it looks
spacehound doesn't crawl the whole internet. It starts from seeds: a website, a search query, or a MediaWiki
search. Wikipedia turned out to be a goldmine using CirrusSearch's insource: regex search to look for
followed by a space in the article source.
While crawling, links to other sites become new seeds automatically, but only if they pass a "high-profile" gate:
government domains (.gov, .overheid.nl, .europa.eu and friends), English and Dutch Wikimedia projects, or
domains that rank in the top 50,000 of the Tranco list. Social media, forums, shops and
anything written by random users is denied, because shaming someone's forum post isn't the point. Big
organisations with editorial teams are.
So far it has looked at a little over 110,000 pages, and the site is at 1460 exhibits holding 1636 double spaces. The biggest contributors are UKrant (the University of Groningen's newspaper), the RIVM, the Red Hat blog, the KNMI and the KVK.
Being a polite crawler
spacehound runs from my home connection, so getting the IP banned somewhere isn't an option. It's also just the right thing to do. So:
- It obeys
robots.txt, includingCrawl-delay. - One page in flight and at most one request per second per site.
- It never logs in, never fills in forms and never uses a site's search.
- A
429 Too Many Requests, or two403s in a row, and it stops visiting that site for good. No retries, no disguises. - It always says who it is, with a user agent pointing to its own page that explains what it does and how to block it.
Blocking it is two lines in your robots.txt:
User-agent: spacehound
Disallow: /Though honestly, the quickest fix is the double space itself.
Some favourites
Now for the fun part. A few exhibits I'm particularly fond of (␣␣ marks the crime scene):
- A writing style guide. The Eclipse Foundation's Writing Style Guide, explaining how to write about their projects: "When referring to the␣␣project and code that enables the Open VSX marketplace...". Off to a great start.
- NOAA's Information Quality Guidelines. The page about the quality of their information, with a triple space no less.
- NASA's Creative Writing classes. "Starport is bringing␣␣a variety of Creative Writing classes to the Gilruth Center to help you enhance your writing abilities." I think someone should sign up.
- A Terms of Service template. Termly's ToS template page has one. A template, meaning it gets copied. Double spaces, but make it viral.
- The Dutch Royal House's agenda. "Koningin Máxima is aanwezig bij het␣␣jubileumconcert...". Not even the royal family is safe.
- The White House, at Christmas. "Our family is delighted to welcome you to the White House during␣␣this special Christmas season".
- The Day of Infamy. The US National Archives' page on the attack on Pearl Harbor: "Visit our featured document the␣␣Day of Infamy Address".
- JPL's raccoon. "35 years ago,␣␣JPL gained a cultural mascot: our very own Voltage the Raccoon!" I didn't know JPL had a raccoon either. Worth the click.
- The final boss. A reference on Wikipedia's Interferon type I article where every single word is followed by two spaces: "Kieseier␣␣BC.␣␣The␣␣mechanism␣␣of␣␣action␣␣of...". Respect, honestly.
Or just hit random a few times. It's a surprisingly good way to lose ten minutes.
Final thoughts
This started as a pet peeve and a domain name I bought on a whim, and turned into a weirdly satisfying project: a little museum, and a crawler with manners that keeps finding new exhibits while I sleep. Please don't take it too seriously, it's meant to be fun.
If you spot a double space in the wild, in a book, on a slide, or on a website, you can submit it. And if you find your own site among the exhibits: sorry! It's an easy fix.
Comments