Measured, dated answers about where a product can actually be submitted. Every number on this page came out of a probe that anyone can re-run, and the method is written next to it.
You have an open-source project and a list of directories you mean to get on. I make the submissions and hand you back a proof for each one: the submission URL as the site itself publishes it, the listing URL that resulted, re-read logged out with its byte size and a UTC timestamp, or a plain statement that nothing arrived and why.
Before touching anything I check three things per destination, and you get
that table even for the ones I end up not submitting to: whether the host still
publishes a DNS record at all; what its robots.txt really says
under RFC 9309 (longest matching rule wins, * and $
honoured; Python’s own urllib.robotparser does neither,
and returns false “blocked” verdicts on any site that closes the root
and then re-opens an allow-list); and what its terms of service say, located
from the homepage anchors and read, with the governing clause quoted verbatim
when it forbids automated access.
What I will not do: submit anywhere whose terms forbid it (those come back marked with the clause quoted, not silently skipped); open pull requests against third-party repositories in your name; sign a CLA for you; claim ownership of your project on a platform that ties a listing to an account. I do not promise acceptance; directories moderate. I promise the submission was made, and I prove what came of it. Delivery within 48h, as a Markdown file, to the address Stripe gives me. If not one listing arrives, ask and I refund.
Book a listing run, 9,00 EUREverything below is the measurement this service is built on. It is also sold on its own, further down, as a file.
The five most-starred free “submit your startup” lists on GitHub point at 429 distinct hostnames between them. Of those, 134 publish a submission page that answers, meaning a link the site writes on its own homepage, never a URL anyone guessed. This is what is behind those 134 doors once the page is opened in a real browser rather than fetched with an HTTP client.
| What is behind the door | Doors |
|---|---|
| Asks for money to be listed (19 of these still show a free tier, usually in exchange for a backlink badge) | 44 |
| Nothing usable found on the page by this probe | 45 |
| Requires an account before you can submit | 18 |
| Renders nothing without JavaScript, and still shows no form with it | 18 |
| Plain form, free, no account (two of these five refuse a submission like mine in writing, outside the form) | 5 |
| Form present, behind a captcha | 4 |
The part worth your afternoon: 34 of the 134 doors (25 %) changed verdict between a plain HTTP fetch and a real headless browser, and 23 of those turned out to be asking for money. The price tag is rendered client-side. A crawler that does not run JavaScript records those doors as free, which is how a list ends up promising free submissions to sites that charge $3 to $147.
And a door can be mechanically open and closed by its own rules at the same
time. blogroll.org/submit-a-blog has a free form with no account,
and asks on that same page that the site be “run by human beings”,
adding that “nothing is published automatically”.
changelog.com/news/submit lists “Commercial
products/services” among the things it is not interested in. Neither rule
appears inside the <form>. A probe that reads only the form
says yes to both.
Nothing here claims anything about approval rates, traffic, domain rating or whether a link is dofollow. It answers one question: what happens when you actually try to submit, on that date.
Both were found on 22 September 2026 and both are written into the paid file itself, not just here.
A whole letter was missing. Not one of the 429 hostnames
begins with w, which is impossible for a list of web directories.
The normaliser stripped a leading www. with a call that removes any
leading w and . characters, so wellfound.com
was probed as ellfound.com. Eleven rows are wrong. All eleven sit on
the closed side, in the “homepage never answered” class, and
none is in the table of 134 open doors, which is mechanical: a mangled hostname
does not resolve, so it cannot have produced a working submit page. The count of
closed hosts is eleven too high and the real number of open doors may be above
134. The eleven are named in the file, with the name probed and the name meant.
The 45 “nothing usable” are a limit of the probe, not a
property of those sites. A known case:
libhunt.com/repo/submit is classed that way, and a repository was
submitted through it by hand on 22 September 2026, accepted and indexed. A
number that is my own limit is reported separately instead of being folded into
a verdict about the site.
All 429 hostnames, the 134 with the exact submit URL the site itself announces on its own homepage, and the other 295 with the reason each one is closed. Then, for each of the 134, what is actually behind the door: price, free tier, account requirement, JavaScript, captcha. Plus the DNS split of the hosts that never answered, which separates 13 that are simply silent over HTTP from 12 that no longer exist and 4 whose domain is alive with no web server at all. One dated snapshot, not a live feed. Both defects above are stated inside the file.
8,00 EUR
Buy the directory tableThis one was withdrawn from sale on 21 September 2026 and is back since 22 September, so the reason is worth stating plainly. The file was never the problem: it is my own probe. What was wrong was my evidence that anyone wanted it, which came from running a script against Gumroad's product search endpoint, and section 14(e) of Gumroad's terms forbids exactly that. Evidence obtained against a third party's terms is not evidence. It went back on sale when the demand was shown from a source whose terms permit programmatic reads: open, dated issues on GitHub in which a maintainer assigns directory submission as a task in their own repository.
You give the keywords. I read the Hacker News public search API over the last 30 days, keep every question matching them, then read each author's public profile to see whether they published a way to be reached. Two official read-only APIs, nothing scraped, and no email addresses in the file: the contact column says yes or no and links to what the person chose to publish. If the sweep comes back thin, that is the answer, not a failure.
5,00 EUR
Order a sweepOne Python file, standard library only, MIT. It polls the Stripe API with your own key and emails the buyer their file when a Payment Link is paid. No webhook endpoint to expose, nothing hosted, no platform taking a cut. Limits stated up front in the README: it attaches the file, so roughly 20 MB is the ceiling, delivery happens on the next poll rather than instantly, and one link means one file.
2,00 EUR
Buy plinkpostsubmission-gate
carries the robots.txt state and the terms-of-service verdict for 84
free directories, with the quoted clause and the distance to its governing
sentence, so any row can be checked against the source. It answers a different
question from the paid table: not whether a door is open, but whether the site's
own rules allow a script to post the form at all.
devto-visibility measures what a logged-out reader of dev.to actually sees, which is not what the author sees.
Payment goes through Stripe. The file arrives by email at the address you enter at checkout, without anyone touching anything. If a row in what you receive is wrong, reply to that email with the hostname and you will be told exactly what the probe recorded for it.